La grabación de DeckLink con ffmpeg en Ubuntu 18.04 no se inicia

Pasé las 24 horas resolviendo este problema, pero me estoy quedando un poco atascado.

Información previa: estoy ejecutando un servidor Ubuntu 18.04 con una tarjeta DeckLink Duo 2 en el interior.

Objetivo: capturar video desde DeckLink Duo 2 y escribirlo en output.avi

Lo que he probado hasta ahora:

Instalé los controladores BMD DeckLink 10.11.4 en mi servidor Ubuntu y verifiqué que el servidor puede ver la tarjeta:

redacted@redacted:~$ BlackmagicFirmwareUpdater status
0:  /dev/blackmagic/io0 [DeckLink Duo 2]    0xd5    OK
1:  /dev/blackmagic/io2 [DeckLink Duo 2]    0xd5    OK
2:  /dev/blackmagic/io1 [DeckLink Duo 2]    0xd5    OK
3:  /dev/blackmagic/io3 [DeckLink Duo 2]    0xd5    OK

Compilé ffmpeg con decklink y la siguiente configuración:

ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: 
--prefix=/home/redacted/ffmpeg_build 
--pkg-config-flags=--static 
--extra-cflags='-I/home/redacted/ffmpeg_build/include -I/home/redacted/ffmpeg_sources/BMD_SDK/include' 
--extra-ldflags=-L/home/redacted/ffmpeg_build/lib 
--extra-libs='-lpthread -lm' 
--bindir=/home/redacted/bin 
--enable-gpl 
--enable-libass 
--enable-libfdk-aac 
--enable-libfreetype 
--enable-libmp3lame 
--enable-libopus 
--enable-libvorbis 
--enable-libvpx 
--enable-libx264 
--enable-libx265 
--enable-nonfree 
--enable-decklink

A continuación, hago una verificación básica para ver si mi DeckLink Duo 2 aparece en ffmpeg:

[decklink @ 0x5574cc33ef00] Blackmagic DeckLink input devices:
[decklink @ 0x5574cc33ef00]     'DeckLink Duo (1)'
[decklink @ 0x5574cc33ef00]     'DeckLink Duo (2)'
[decklink @ 0x5574cc33ef00]     'DeckLink Duo (3)'
[decklink @ 0x5574cc33ef00]     'DeckLink Duo (4)'
dummy: Immediate exit requested

Esto confirma que ffmpeg ve la tarjeta.

Así que ahora quiero ejecutar un comando de captura, sin embargo, no importa qué comando ejecute, FFmpeg no comienza a capturar. Por ejemplo, ejecutando un muy básico:

"ffmpeg -format_code Hi50 -f decklink -i 'DeckLink Duo (1)' out.avi"

devoluciones

redacted@redacted:~$ ffmpeg -format_code Hi50 -f decklink -i 'DeckLink 
Duo (1)' out.avi
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --prefix=/home/redacted/ffmpeg_build --pkg-config-flags=--static - 
-extra-cflags='-I/home/redacted/ffmpeg_build/include - 
I/home/redacted/ffmpeg_sources/BMD_SDK/include' --extra-ldflags=- 
L/home/redacted/ffmpeg_build/lib --extra-libs='-lpthread -lm' -- 
bindir=/home/redacted/bin --enable-gpl --enable-libass --enable-libfdk-aac -- 
enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis -- 
enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable- 
decklink
libavutil      56. 22.100 / 56. 22.100
libavcodec     58. 35.100 / 58. 35.100
libavformat    58. 20.100 / 58. 20.100
libavdevice    58.  5.100 / 58.  5.100
libavfilter     7. 40.101 /  7. 40.101
libswscale      5.  3.100 /  5.  3.100
libswresample   3.  3.100 /  3.  3.100
libpostproc    55.  3.100 / 55.  3.100
[decklink @ 0x5638a755d000] Found Decklink mode 1920 x 1080 with rate 25.00(i)

No importa lo complicado que haga el comando inicial, con formatos de video, formatos de audio, tamaños personalizados, códecs, etc. Todo regresa igual.

Básicamente, permanece atascado en esta posición, con el comando ejecutándose para siempre. Que yo sepa, se supone que FFmpeg debe comenzar el proceso de codificación inmediatamente después. No es asi.

Puedo confirmar que un comando de recodificación normal como:

redacted@redacted:~$ ffmpeg -i video.mov out.avi

funciona bien Entonces FFmpeg en un nivel básico funciona.

También puedo confirmar que FFmpeg puede 'hablar con DeckLink y configurar el modo correcto, puedo confirmar que una imagen 'fluye' a través de la tarjeta, ya que puedo verla en el bucle de salida de mi monitor (ver imagen) tan pronto como coloque cualquiera de los comandos FFmpeg, sin embargo, FFmpeg no comienza a codificar/capturar.

imagen que se muestra en loopout

Creo que hice algo mal con la configuración/compilación de FFmpeg, quizás durante la compilación, pero no puedo entender qué es lo que hice mal.

Cualquier sugerencia es muy apreciada.

Gracias,

Rik

EDITAR: Ejecutar el comando con -loglevel trace según lo solicitado

redacted@redacted:~$ ffmpeg -loglevel trace -raw_format yuv422p10 1 -an 
- 
format_code Hp25 -f decklink -i 'DeckLink Duo (2)' output.avi
ffmpeg version 4.1.3 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04.1)
configuration: --prefix=/home/redacted/ffmpeg_build --pkg-config-flags=--static 
- 
-extra-cflags='-I/home/redacted/ffmpeg_build/include - 
I/home/redacted/ffmpeg_sources/BMD_SDK/include' --extra-ldflags=- 
L/home/redacted/ffmpeg_build/lib --extra-libs='-lpthread -lm' -- 
bindir=/home/redacted/bin --enable-gpl --enable-libass --enable-libfdk-aac -- 
enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libvorbis -- 
enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfree --enable- 
decklink
libavutil      56. 22.100 / 56. 22.100
libavcodec     58. 35.100 / 58. 35.100
libavformat    58. 20.100 / 58. 20.100
libavdevice    58.  5.100 / 58.  5.100
libavfilter     7. 40.101 /  7. 40.101
libswscale      5.  3.100 /  5.  3.100
libswresample   3.  3.100 /  3.  3.100
libpostproc    55.  3.100 / 55.  3.100
Splitting the commandline.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging 
level) with argument 'trace'.
Reading option '-raw_format' ... matched as AVOption 'raw_format' with 
argument 'yuv422p10'.
Reading option '1' ... matched as output url.
Reading option '-ac' ... matched as option 'ac' (set number of audio 
channels) with argument '2'.
Reading option '-format_code' ... matched as AVOption 'format_code' with 
argument 'Hp25'.
Reading option '-f' ... matched as option 'f' (force format) with argument 
'decklink'.
Reading option '-i' ... matched as input url with argument 'DeckLink Duo 
(2)'.
Reading option 'output.avi' ... matched as output url.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option loglevel (set logging level) with argument trace.
Successfully parsed a group of options.
Parsing a group of options: input url DeckLink Duo (2).
Applying option ac (set number of audio channels) with argument 2.
Applying option f (force format) with argument decklink.
Successfully parsed a group of options.
Opening an input file: DeckLink Duo (2).
[decklink @ 0x55cef7de7300] Trying to find mode for frame size 0x0, frame 
timing 0/0, field order 0, direction 0, mode number 0, format code Hp25
[decklink @ 0x55cef7de7300] Found Decklink mode 1920 x 1080 with rate 25.00
[decklink @ 0x55cef7de7300] Using 2 input audio channels
Ejecute el comando con -loglevel trace y comparta el registro completo.
@Gyan Gracias por investigar esto, ver edición original
Registro completo, por favor.
@Gyan registro completo esta vez. disculpas.

Respuestas (1)

Logré arreglar esto. Resulta que la tarjeta estaba activa, pero se había congelado por alguna razón. reiniciar la máquina, algo que debería haber hecho al principio solucionó el problema. Piensa todavía no son perfectos. Pero mi problema está resuelto. Gracias