问题描述
使用此命令生成视频流时,我能够在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:打印4.1-amd64:printing-4.1-noarch 发行人编号:CentOS 说明:CentOS Linux版本7.7.1908(核心) 发行:7.7.1908 代号:Core
解决方法
问题很可能是某些软件(可能包括chrome
)对支持的颜色格式有些挑剔。
您的ffmpeg
命令未指定任何颜色格式,因此我想它将需要一种最容易从NDI流转换成的颜色格式。 NDI支持多种不同的格式(包括诸如P216
之类的奇异格式),很可能是因为它选择了chrome
无法使用的输出格式。
otoh,您的gstreamer管道使用一种非常特定的格式(I420
)。
尝试在使用ffmpeg时强制使用相同的格式,例如使用类似-vf format=pix_fmts=yuv420p
另请参阅https://github.com/umlaeute/v4l2loopback/wiki/Colorspace-Issues