ffmpeg und decklink – wie wird audio_input für hdmi-video angegeben?

Ich verwende eine Intensity Pro 4K, um mit ffmpegden decklinkBefehlen aufzunehmen.

Laut Dokumentation :

Video Eingang

Legt die Videoeingangsquelle fest. Muss „unset“, „sdi“, „hdmi“, „optical_sdi“, „component“, „composite“ oder „s_video“ sein. Standardmäßig auf 'nicht gesetzt'.

Audioeingang

Stellt die Audioeingangsquelle ein. Muss „unset“, „embedded“, „aes_ebu“, „analog“, „analog_xlr“, „analog_rca“ oder „microphone“ sein. Standardmäßig auf 'nicht gesetzt'.

Also setze ich -video_input hdmi, was garantiert, dass ich das Video über HDMI bekomme, auch wenn der Blackmagic-Treiber auf etwas anderes eingestellt ist (z. B. Komponente, die aus irgendeinem Grund bei jedem Neustart auf Komponente zurückgesetzt wird).

Aber während ich Video bekomme, bekomme ich kein Audio. Ich habe versucht -audio_input, embedded(kein Effekt) aes_ebuund microphone(nicht unterstützt durch Gerätefehler) einzustellen.

Also muss ich noch zu den Blackmagic-Videotreibern gehen und das Eingangssignal auf HDMI umstellen.

Gibt es eine Möglichkeit, den HDMI-Audio-Feed zusammen mit dem HDMI-Video-Feed in der ffmpeg-Befehlszeile anzugeben?

Bezug

Vollständiger Befehl, den ich verwende:

ffmpeg -rtbufsize 1500M -f decklink -video_input hdmi -i "Intensity Pro 4K@20" -pix_fmt yuv420p -c:a copy -c:v v210 abc.mov

list_formatsAusgang:

E:\>ffmpeg -f decklink -list_formats 1 -i "Intensity Pro 4K"
ffmpeg version 3.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.100 / 57. 64.100
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[decklink @ 0000000000f66460] Supported formats for 'Intensity Pro 4K':
[decklink @ 0000000000f66460]   1       720x486 at 30000/1001 fps (interlaced, lower field first)
[decklink @ 0000000000f66460]   2       720x576 at 25000/1000 fps (interlaced, upper field first)
[decklink @ 0000000000f66460]   3       1920x1080 at 24000/1001 fps
[decklink @ 0000000000f66460]   4       1920x1080 at 24000/1000 fps
[decklink @ 0000000000f66460]   5       1920x1080 at 25000/1000 fps
[decklink @ 0000000000f66460]   6       1920x1080 at 30000/1001 fps
[decklink @ 0000000000f66460]   7       1920x1080 at 30000/1000 fps
[decklink @ 0000000000f66460]   8       1920x1080 at 25000/1000 fps (interlaced, upper field first)
[decklink @ 0000000000f66460]   9       1920x1080 at 30000/1001 fps (interlaced, upper field first)
[decklink @ 0000000000f66460]   10      1920x1080 at 30000/1000 fps (interlaced, upper field first)
[decklink @ 0000000000f66460]   11      1920x1080 at 50000/1000 fps
[decklink @ 0000000000f66460]   12      1920x1080 at 60000/1001 fps
[decklink @ 0000000000f66460]   13      1920x1080 at 60000/1000 fps
[decklink @ 0000000000f66460]   14      1280x720 at 50000/1000 fps
[decklink @ 0000000000f66460]   15      1280x720 at 60000/1001 fps
[decklink @ 0000000000f66460]   16      1280x720 at 60000/1000 fps
[decklink @ 0000000000f66460]   17      3840x2160 at 24000/1001 fps
[decklink @ 0000000000f66460]   18      3840x2160 at 24000/1000 fps
[decklink @ 0000000000f66460]   19      3840x2160 at 25000/1000 fps
[decklink @ 0000000000f66460]   20      3840x2160 at 30000/1001 fps
[decklink @ 0000000000f66460]   21      3840x2160 at 30000/1000 fps
Intensity Pro 4K: Immediate exit requested

Ausgabe vonE:\>ffmpeg -rtbufsize 1500M -f decklink -video_input hdmi -audio_input embedded -i "Intensity Pro 4K@20" -pix_fmt yuv420p -c:a copy -c:v v210 abcde.mov

ffmpeg version 3.2 Copyright (c) 2000-2016 the FFmpeg developers
  built with gcc 5.4.0 (GCC)
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-libebur128 --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
  libavutil      55. 34.100 / 55. 34.100
  libavcodec     57. 64.100 / 57. 64.100
  libavformat    57. 56.100 / 57. 56.100
  libavdevice    57.  1.100 / 57.  1.100
  libavfilter     6. 65.100 /  6. 65.100
  libswscale      4.  2.100 /  4.  2.100
  libswresample   2.  3.100 /  2.  3.100
  libpostproc    54.  1.100 / 54.  1.100
[decklink @ 0000000002872cc0] Found Decklink mode 3840 x 2160 with rate 29.97
[decklink @ 0000000002872cc0] Frame received (#1) - Input returned - Frames dropped 1
Guessed Channel Layout for Input Stream #0.0 : stereo
Input #0, decklink, from 'Intensity Pro 4K@20':
  Duration: N/A, start: 0.000000, bitrate: 3978870 kb/s
    Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
    Stream #0:1: Video: rawvideo (UYVY / 0x59565955), uyvy422, 3840x2160, 3977334 kb/s, 29.97 tbr, 1000k tbn, 1000k tbc
Incompatible pixel format 'yuv420p' for codec 'v210', auto-selecting format 'yuv422p'
Output #0, mov, to 'abcde.mov':
  Metadata:
    encoder         : Lavf57.56.100
    Stream #0:0: Video: v210 (v210 / 0x30313276), yuv422p, 3840x2160, q=2-31, 200 kb/s, 29.97 fps, 30k tbn, 29.97 tbc
    Metadata:
      encoder         : Lavc57.64.100 v210
    Stream #0:1: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, 1536 kb/s
Stream mapping:
  Stream #0:1 -> #0:0 (rawvideo (native) -> v210 (native))
  Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
Was ist der vollständige Befehl, den Sie verwenden? Und zeigt list_formats eine Audioauswahl an?
@Mulvya Meine Frage wurde aktualisiert.
Wenn die Audiooption auf eingebettet eingestellt ist, zeigt ffmpeg einen Eingangsaudiostream an?
@Mulvya Wenn ich den Befehl eingebe E:\>ffmpeg -f decklink -video_input hdmi -audio_input embedded -list_formats 1 -i "Intensity Pro 4K", ist die Ausgabe die gleiche wie wenn ich nichts spezifiziere -audio_input.
Das liegt natürlich daran, dass Sie Formate auflisten. Sie müssen es dem Capture-Befehl hinzufügen und überprüfen.
@Mulvya Ok, die Ausgabe des Capture-Befehls hinzugefügt.
Es erkennt Audio: Stream #0:0: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s. Wenn es stumm ist, muss dies möglicherweise auf Treiberebene geändert werden.

Antworten (1)

Die Verwendung embedded(oder das Weglassen -audio_inputvon ) ist der beabsichtigte Weg, um den Ton von HDMI- oder SDI-Signalen zu erhalten.

Bitte stellen Sie sicher, dass auf HDMI ein 2-Kanal-Stereo-Audiosignal anliegt. Wenn es 5.1 oder 7.1 ist, müssen Sie möglicherweise -channels 8in der Befehlszeile vor dem -i.

Hinweis: Bitte beachten Sie die pix_fmtWarnung. Lassen Sie diese Option aus Ihrer Befehlszeile.