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

问题描述

使用此命令生成视频流时,我能够在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