Die DeckLink-Aufzeichnung mit ffmpeg unter Ubuntu 18.04 startet nicht

Ich habe die 24 Stunden damit verbracht, dieses Problem zu beheben, aber ich stecke ein bisschen fest.

Vorabinfo: Ich betreibe einen Ubuntu 18.04-Server mit einer DeckLink Duo 2-Karte darin.

Ziel: Video von der DeckLink Duo 2 aufnehmen und in output.avi schreiben

Was ich bisher versucht habe:

Ich habe BMD DeckLink-Treiber 10.11.4 auf meinem Ubuntu-Server installiert und überprüft, ob der Server die Karte sehen kann:

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

Ich habe ffmpeg mit Decklink und folgender Konfiguration kompiliert:

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

Als nächstes führe ich eine grundlegende Überprüfung durch, um zu sehen, ob meine DeckLink Duo 2 in ffmpeg angezeigt wird:

[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

Dies bestätigt, dass die Karte von ffmpeg gesehen wird.

Jetzt möchte ich also einen Capture-Befehl ausführen, es spielt jedoch keine Rolle, welchen Befehl ich ausführe, FFmpeg beginnt nicht mit dem Capturen. Zum Beispiel ein sehr einfaches ausführen:

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

kehrt zurück

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)

Es spielt keine Rolle, wie kompliziert ich den ersten Befehl mache, mit Videoformaten, Audioformaten, benutzerdefinierten Größen, Codecs usw. Es gibt alles dasselbe zurück.

Es bleibt im Wesentlichen in dieser Position hängen, wobei der Befehl immer noch ausgeführt wird. Meines Wissens nach soll FFmpeg den Codierungsprozess direkt danach starten. Es tut nicht.

Ich kann bestätigen, dass ein normaler Neucodierungsbefehl wie:

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

funktioniert prima. FFmpeg auf einer grundlegenden Ebene funktioniert also.

Ich kann auch bestätigen, dass FFmpeg mit dem DeckLink kommunizieren und den richtigen Modus einstellen kann, ich kann bestätigen, dass ein Bild durch die Karte „fließt“, da ich es auf der Ausgangsschleife auf meinem Monitor (siehe Bild) sehen kann, sobald ich Geben Sie einen der FFmpeg-Befehle ein, FFmpeg beginnt jedoch nicht mit der Codierung/Erfassung.

Bild, das auf Loopout angezeigt wird

Ich glaube, ich habe bei der Konfiguration/Kompilierung von FFmpeg etwas falsch gemacht, vielleicht während des Kompilierens, aber ich kann nicht herausfinden, was ich falsch gemacht habe.

Irgendwelche Vorschläge werden sehr geschätzt.

Danke,

Rik

BEARBEITEN: Ausführen des Befehls mit -loglevel-Trace wie gewünscht

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
Führen Sie den Befehl mit -loglevel trace aus und geben Sie das vollständige Protokoll frei.
@Gyan Danke, dass du dir das angesehen hast, siehe ursprüngliche Bearbeitung
Vollständiges Log bitte.
@Gyan diesmal vollständiges Protokoll. Entschuldigung.

Antworten (1)

Ich habe es geschafft, dies zu beheben. Es stellte sich heraus, dass die Karte aktiv war, aber aus irgendeinem Grund eingefroren war. Neustart der Maschine, etwas, das ich am Anfang hätte tun sollen, löste das Problem. Gedanken sind immer noch nicht perfekt. Aber mein Problem ist gelöst. Danke