ffmpeg,/ dev / video0,-f decklink

时间:2019-03-13 20:31:09

标签: ffmpeg video-capture ubuntu-18.04

我正在尝试通过ffmpeg在运行Ubuntu 18.04.2 LTS的无头主机上从PCI卡Blackmagic DeckLink Mini Recorder捕获视频,希望使用类似的命令

ffmpeg -f decklink -i /dev/video0 ...

我该如何做?我有两个障碍。

否/ dev / video0

ffmpeg -i /dev/video0 ...失败:/dev/video0: No such device or addressv4l2-ctl --list-devices失败,并显示相同的错误消息。

我建立了/ dev / video0,看起来还可以:

mknod /dev/video0 c 81 0
chown root.video /dev/video0
chmod g+rw /dev/video0

为了将此文件与正常工作的文件进行比较,我在此主机上运行strace cat /dev/video0,在另一个运行正常的/ dev / video0的主机(Ubuntu 14)上运行。这里的输出开始有所不同(好,然后是坏):

fstat(1, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
open("/dev/video0", O_RDONLY)           = 3  
fstat(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(81, 0), ...}) = 0
fadvise64(3, 0, 0, POSIX_FADV_SEQUENTIAL) = 0
----

fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
openat(AT_FDCWD, "/dev/video0", O_RDONLY) = -1 ENXIO (No such device or address)

因此/ dev / video0的损坏水平低于ffmpeg或v4l2甚至cat。

在Ubuntu 14上,man 8 MAKEDEV建议该错误消息表示“内核未配置或加载驱动程序。”

此Ubuntu 18主机缺少该手册页,但确实有一些/snap/core/*/sbin/MAKEDEV,都一样,所以我尝试了

/snap/core/6350/sbin/MAKEDEV -n -v video

它将创建一百多个设备videoXX,radioXX,vtxXX,vbiXX。这些设备尚不存在,因此尝试使用它似乎无害。

rm /dev/video0; /snap/core/6350/sbin/MAKEDEV video

该设备重建了/ dev / video0,但仍然保留了cat或ffmpeg的“没有这样的设备”。

没有甲板链接

ffmpeg -f decklink ...失败,Unknown input format: 'decklink'

对于Ubuntu自己的版本3.4.4-0ubuntu0.18.04,ffmpeg -devices(fbdev,lavfi,oss,v4l2)和ffmpeg -formats(约350)都没有提到黑色,甲板或链接。 1,或适用于2019年3月13日从源代码编译的N-93330-g7ff89574c7版本:

git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
cd ffmpeg
./configure --enable-nonfree --disable-doc --disable-w32threads --enable-pthreads

(尽管./configure --help提到--enable-decklink,但使用它会产生“错误:找不到DeckLinkAPI.h。” updatedb && locate DeckLinkAPI.h也找不到具有该名称的文件。)

DeckLink PCI卡被hwinfolspci识别。

lsmod报告已加载的模块blackmagicblackmagic_io

也许PCI卡已正确安装,但ffmpeg无法连接到它,因为我无法为此进行配置。

编辑:重新启动没有解决任何问题。

1 个答案:

答案 0 :(得分:1)

您必须安装适用于Linux的“ Desktop Video”软件,该软件支持x64和i386(但没有支持)。它将提供 DeckLinkAPI.h ,udev应该在/ etc中自动创建视频设备。