使用 ffmpeg 作为生产者时,我在 chrome 中看不到 v4l2loopback 设备

When using ffmpeg as producer I cannot see v4l2loopback device in chrome

当使用此命令生成视频流时,我能够在 chrome 中看到我的 v4l2loopback 视频设备:

gst-launch-0.10 -v videotestsrc ! "video/x-raw-yuv,width=640,height=360,framerate=30/1,format=(fourcc)I420" ! v4l2sink device=/dev/video0

但我正在尝试使用 ffmpeg 获取 NDI 流并使用如下命令将其输出到 v4l2loopback 设备:

ffmpeg -f libndi_newtek -extra_ips "10.4.0.86" -i "ME-NDI002 (TEST)" -f v4l2 /dev/video0

当我使用 ffmpeg 作为生产者时,我能够在 Firefox 和 Zoom 中看到该设备,但在 Chrome 中看不到。我需要做些什么才能让 ffmpeg 与 exclusive_caps 选项配合使用吗?

我正在使用 v4l2loopback 驱动程序版本 0.12.5

Linux 内核是: Linux dva 3.10.0-1062.1.2.el7.x86_64 #1 SMP 9 月 30 日星期一 14:19:46 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

发布信息为: LSB 版本::core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1- noarch:printing-4.1-amd64:printing-4.1-noarch 发行商编号:CentOS 说明:CentOS Linux 7.7.1908 版(核心版) 发布:7.7.1908 代号:核心

问题很可能是某些软件(可能包括chrome)对支持的颜色格式有点挑剔。

你的 ffmpeg 命令没有指定任何颜色格式,所以我想它会采用最容易从 NDI 流转换的格式。 NDI 支持许多不同的格式(包括相当奇特的格式,如 P216),并且很可能它选择了 chrome.

无法使用的输出格式

otoh,您的 gstreamer-pipeline 使用了非常特殊的格式 (I420)。 尝试在使用 ffmpeg 时强制执行相同的格式,例如使用 -vf format=pix_fmts=yuv420p

之类的东西

另见 https://github.com/umlaeute/v4l2loopback/wiki/Colorspace-Issues