有这么一个需求:获取原生摄像头数据美颜等加工后推流给虚拟摄像头

2022-08-17 10:22:24 +08:00
 andyskaura

如题。
这种轮子靠我自己暂时是造不出来了,那现在有哪些可供选择的开源方案呢?
美颜等加工流程可以通过 opencv 实现。
主要是虚拟摄像头,找到功能上符合要求的,
1.obs 虚拟摄像头(只能下载 obs 软件,不能嵌入到自己的 cs 程序)
2.v4l2loopback https://github.com/videolan/vlc (只有 linux 环境,但客户端软件一般运行在 windows 及 macos )

1900 次点击
所在节点    问与答
14 条回复
wkmike
2022-08-17 10:32:09 +08:00
之前做过类似项目,可以参考一下 obs-virtual-cam
ysc3839
2022-08-17 10:49:46 +08:00
OBS 的虚拟摄像头模块是以 GPL 协议开源的。
或者也可以使用 NDI Tools 的虚拟摄像头,但是能否商用就不好说了。
andyskaura
2022-08-17 10:59:56 +08:00
@wkmike 这个能单独使用吗 还没找到单独使用的方式,看 readme 描述,运行时依赖 obs-studio
andyskaura
2022-08-17 11:01:30 +08:00
@andyskaura
@ysc3839
虚拟摄像头模块看了下都是作为 obs-studio 插件使用的,能否独立使用呢?
wkmike
2022-08-17 11:20:57 +08:00
@andyskaura #3 可以单独使用,就注册 DirectShow 设备、开始(分辨率、帧率)、ARGB RAW 数据写入这几个逻辑,读一遍源码就明白了
wkmike
2022-08-17 11:24:23 +08:00
@wkmike #5 不过 DirectShow 摄像头,之前做的时候 QQ 、Skype 客户端设备识别和画面都正常,Chrome 浏览器无法调用,自己实现虚拟 USB 设备的话好像需要 EV 证书签名就没折腾了
ysc3839
2022-08-17 11:31:11 +08:00
@wkmike Chrome 无法调用是连 OBS 的也不行吗?如果 OBS 可以,你自己写的不行,那可能是 Chrome 拒绝加载未签名的 DLL 。
andyskaura
2022-08-17 11:32:43 +08:00
@wkmike 非常感谢 对我及其有帮助
andyskaura
2022-08-17 11:37:47 +08:00
@ysc3839 我去测试一下 是用在 webrtc 通讯上的 稍后在这里更新结果
ysc3839
2022-08-17 11:49:34 +08:00
WebRTC 的话完全可以直接用客户端去推流,建议说一下完整的情况。
andyskaura
2022-08-17 13:46:00 +08:00
@ysc3839
-------------------接 9 楼回复------------
obs 虚拟摄像头在 chrome 下为 webrtc 读取是正常的。
------------------10 楼-------------
整体业务需求描述很简单,就是浏览器端远程通话及 rtsp 监控摄像头,并能添加美颜或绿布等特效。
现在能确定的是,必须通过 webrtc 传输(里面有成熟的降噪,通讯,以及跨平台等优势)。
为什么不直接用客户端推流?因为希望主体仍然是浏览器,在脱离客户端的情况下也能满足最低需求。当然,实在不行就全依赖客户端,或者 chrome 拓展(还没调研,不太确定)。
其实现在方向也很混乱,目前规划的是还需要做手机端(感觉还有不少路要走),如果浏览器能全搞定就好了。😭
wkmike
2022-08-17 14:33:26 +08:00
@andyskaura #11 你的需求是远程采集-美颜 /绿布-P2P 多人会话?
客户端可以试试 Electron+ Native Node Modules 来实现,UI 、和会话业务使用 Web 开发,视频采集、美颜、虚拟摄像头推流等功能用 C/C++封转后通过 JS Worker 调用。
ysc3839
2022-08-17 15:24:47 +08:00
@andyskaura 还要支持手机的话那肯定得用客户端了,可以做成没有客户端的情况下就没有美颜功能。
andyskaura
2022-08-18 11:47:35 +08:00
@ysc3839 现在有了新问题,跨全平台,用 flutter 还是 qt ,老板还强烈建议我用 delphi

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873384

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX