V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
andyskaura
V2EX  ›  问与答

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

  •  
  •   andyskaura · 2022-08-17 10:22:24 +08:00 · 2178 次点击
    这是一个创建于 828 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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