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.
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
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
Gyan
Rik Roukens
Gyan
Rik Roukens