ffmpeg, / dev / video0, -f decklink - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь записать видео с карты PCI, Blackmagic DeckLink Mini Recorder, через ffmpeg, на безголовый хост с Ubuntu 18.04.2 LTS, надеюсь, с помощью команды, подобной

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

Как я могу заставить это работать? У меня есть два препятствия.

Нет / 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 на этом хосте и на другом хосте (Ubuntu 14) с рабочим / dev / video0. Выходы здесь начали различаться (хорошо, потом плохо):

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 не хватает этой man-страницы, но у него есть несколько /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 only device» не осталось, от cat или ffmpeg.

Нет ссылки на палубу

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 году 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, с использованием того, что привело к "ОШИБКА: DeckLinkAPI.h не найден". updatedb && locate DeckLinkAPI.h также не находит файл с таким именем.)

PCI-карта DeckLink распознается hwinfo и lspci.

lsmod сообщает о загруженных модулях blackmagic и blackmagic_io.

Возможно, карта PCI установлена ​​нормально, но ffmpeg просто не может достучаться до нее, потому что я не могу настроить ее для этого.

Редактировать: Перезагрузка ничего не исправила.

1 Ответ

1 голос
/ 14 марта 2019

Вам необходимо установить программное обеспечение " Desktop Video " для Linux, которое поддерживает x64 и i386 (но без охраны). Он предоставит DeckLinkAPI.h , и udev должен автоматически создать видеоустройство в / etc.

...