我正在尝试通过ffmpeg在运行Ubuntu 18.04.2 LTS的无头主机上从PCI卡Blackmagic DeckLink Mini Recorder捕获视频,希望使用类似的命令
ffmpeg -f decklink -i /dev/video0 ...
我该如何做?我有两个障碍。
ffmpeg -i /dev/video0 ...
失败:/dev/video0: No such device or address
。
v4l2-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卡被hwinfo
和lspci
识别。
lsmod
报告已加载的模块blackmagic
和blackmagic_io
。
也许PCI卡已正确安装,但ffmpeg无法连接到它,因为我无法为此进行配置。
编辑:重新启动没有解决任何问题。
答案 0 :(得分:1)
您必须安装适用于Linux的“ Desktop Video”软件,该软件支持x64和i386(但没有支持)。它将提供 DeckLinkAPI.h ,udev应该在/ etc中自动创建视频设备。