我最近安装了一个M.2 PCIe捕获卡(Magewell Eco Capture Dual HDMI M2),希望能够在 chrome 渲染器(Electron专用)中访问捕获。
我可以通过v4l2-ctl
看到@ /dev/videoX的输入,也可以通过ffplay
播放输入,但在枚举媒体设备时,我无法让它们显示在chrome中。枚举确实显示了两个关联的音频输入类型,但没有显示视频输入。
在同一个渲染器中,我能够枚举来自同一制造商制造的USB捕获卡的视频输入。
我所能找到的与这个主题相关的一切都只是人们在浏览器中整理权限问题,这里的情况并非如此,因为我在Electron本地运行,并且能够采购其他输入设备。
我的用户可以访问操作系统中的视频,这可以通过能够ffplay
它们来证明。
我整个下午都在为这个问题绞尽脑汁,任何帮助都将不胜感激。
Ubuntu 22.04
1条答案
按热度按时间oxosxuxt1#
你的情况很有趣。如果采集卡通过
v4l2-ctl
可见并可通过ffplay
播放,但未被Chromium枚举,则表明可能存在兼容性问题或Chromium与视频源交互方式的差异。以下是一些你可以尝试的步骤和建议:
1.酒店:尽管您提到权限不是问题,但让我们仔细检查一下。确保您的用户属于
video
组:然后,注销并重新登录,以使组更改生效。
*使用v4 l2 v4 l2:
v4l2loopback
可以创建虚拟视频设备。这对于测试可能是有用的。您可以使用ffmpeg
或gstreamer
将M.2 PCIe采集卡的输出馈送到由v4l2loopback
创建的虚拟设备。通过这种方式,您实际上创建了一个“代理”设备,如果Chromium/Electron可以检测到这个虚拟设备,那么捕获卡可能会有一些特定的东西阻止直接检测。v4l2loopback
:将
videoX
替换为捕获卡的设备索引,将videoY
替换为虚拟设备的索引。*使用较旧/较新的Electron版本:有时,某些版本的Electron可能有bug或问题。尝试使用旧版本或新版本的Electron,看看行为是否发生了变化。
*检查udev规则:有时udev规则可能会影响设备的识别方式。确保Magewell卡没有冲突的udev规则。
*浏览器策略:Chromium具有可以控制对视频设备的访问的策略。确保没有可能阻止捕获卡的策略。在Chromium中检查
chrome://policy
。*WebRTC内部:尝试枚举设备后,导航到Chromium中的
chrome://webrtc-internals
。此页面可以提供有关WebRTC操作的详细日志,这可能会提供线索。*更新驱动和系统:确保所有系统驱动程序(尤其是与视频相关的驱动程序)都是最新的。可能有一个兼容性补丁,你错过了。
*反馈与厂商支持:既然你提到你可以看到来自同一制造商生产的USB捕获卡的视频输入,那么这种特定型号的卡可能有一些怪癖。联系Magewell的支持或检查他们的论坛,如果有任何类似的问题已经报告。制造商可能会提供解决此兼容性问题的固件更新或驱动程序。
如果所有这些都失败了,请考虑将问题报告给Electron和Chromium团队。这可能是他们不知道的特定错误或兼容性问题。