ffmpeg,/ dev / video0,-f decklink

问题描述 投票:0回答:1

我正试图通过运行Ubuntu 18.04.2 LTS的无头主机,通过ffmpeg从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主机缺少那个manpage,但它确实有一些/snap/core/*/sbin/MAKEDEV,都是一样的,所以我尝试过

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

它将创建超过100个设备videoXX,radioXX,vtxXX,vbiXX。那些设备还不存在,所以尝试它似乎无害。

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

从cat或ffmpeg重建/ dev / video0,但“没有这样的设备”仍然存在。

没有甲板链接

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

ffmpeg -devices(fbdev,lavfi,oss,v4l2)和ffmpeg -formats(约350)都没有提到黑色或甲板或链接,无论是Ubuntu自己的版本3.4.4-0ubuntu0.18.04.1,还是编译版本N-93330-g7ff89574c7来源于2019年3月13日:

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

(虽然./configure --help提到--enable-decklink,使用它产生了“ERROR:DeckLinkAPI.h未找到。”updatedb && locate DeckLinkAPI.h找不到具有该名称的文件。)

DeckLink PCI卡被hwinfolspci认可。

lsmod报告加载的模块blackmagicblackmagic_io

也许PCI卡安装正常,但ffmpeg无法访问它,因为我无法为此配置它。

编辑:重新启动没有修复任何问题。

ffmpeg video-capture ubuntu-18.04
1个回答
1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.