V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
andyskaura
4.64D
V2EX  ›  问与答

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

  •  
  •   andyskaura · Aug 17, 2022 · 2936 views
    This topic created in 1360 days ago, the information mentioned may be changed or developed.

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

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