Löschen Sie 4 leere Audiokanäle aus MOV mit 6 Kanälen in einem Stream

Löschen Sie 4 leere Audiokanäle aus MOV mit 6 Kanälen in einem Stream

Ich muss mit Videodateien arbeiten, die offensichtlich mit einer Art 5.1-Setup aufgenommen wurden, bei dem nur zwei Kanäle mit Monosignalen von zwei separaten Mikrofonen gefüllt wurden. Meine Idee ist, ffmpeg zu verwenden, um die vier leeren Kanäle zu löschen, aber ich bin ratlos.

Ich habe es geschafft, alle Audiostreams zu löschen, aber nach stundenlangem Herumprobieren mit -map, -filter usw. habe ich es nicht geschafft, die leeren Kanäle im Audiostream zu löschen. Die Kanäle 3 und 4 enthalten das Audio, das ich als separate Monospuren haben möchte. Die Kanäle 1,2,5,6 sollten gelöscht und der Videostream einfach kopiert werden.

Dies ist die Ausgabe von ffprobe:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.MOV':
  Metadata:
    major_brand     : qt
    minor_version   : 537199360
    compatible_brands: qt
    creation_time   : 2022-01-21T04:37:49.000000Z
    make            : Atomos
    make-eng        : Atomos
    encoder         : ShogunInferno - 9.11
    encoder-eng     : ShogunInferno - 9.11
    com.atomos.hdr.gamut: Rec709
    com.atomos.hdr.gamma: SLog2
    com.atomos.hdr.camera: Sony
    com.apple.proapps.image.{TIFF}.Make: Atomos
    com.apple.proapps.image.{TIFF}.Model: ShogunInferno
    com.apple.proapps.image.{TIFF}.Software: 9.11
    timecode        : 05:11:39:13
  Duration: 00:01:14.78, start: 0.000000, bitrate: 1064887 kb/s
  Stream #0:0[0x1](eng): Audio: pcm_s24le (in24 / 0x34326E69), 48000 Hz, 6 channels, s32 (24 bit), 6912 kb/s (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](eng): Video: prores (Standard) (apcn / 0x6E637061), yuv422p10le(tv, bt709/bt709/unknown, progressive), 4096x2160, 1057968 kb/s, SAR 1:1 DAR 256:135, 50 fps, 50 tbr, 5k tbn (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      vendor_id       : appl
      encoder         : Apple ProRes 422
  Stream #0:2[0x3](eng): Data: none (tmcd / 0x64636D74) (default)
    Metadata:
      creation_time   : 2022-01-21T04:37:49.000000Z
      timecode        : 05:11:39:13

Danke für die Hilfe...

Antwort1

Ich bin mir über das Kanallayout nicht ganz sicher. Sie können die folgende Syntax versuchen:

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FC][LFE]amix=inputs=2[a];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[a]" -vcodec copy -acodec aac -ar 48000 -ac 2 stereo.mov


  • [0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR]- Teilen Sie das 5.1-Layout in 6 Audiokanäle mit den vorläufigen Namen [FL], [FR], [FC], [LFE], [BL], auf [BR].
  • [FC][LFE]amix=inputs=2[a]- Kanäle [FC]mit [LFE]temporärem Namen zusammenführen [a].
  • [FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink- ignoriert die redundanten Audiokanäle.
  • -vcodec copy -acodec aac -ar 48000 -ac 2- Wählen Sie den Audio-Codec, die Abtastrate und die Anzahl der Ausgabekanäle.

Erstellen eines Inputs six_channels.mp4(zum Testen):

ffmpeg -y -f lavfi -i testsrc=size=192x108:rate=1 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=300 -f lavfi -i sine=frequency=400 -f lavfi -i sine=frequency=1000 -f lavfi -i sine=frequency=1000 -filter_complex "join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR" -acodec aac -ar 48000 -ac 6 -t 10 six_channels.mp4


Aktualisieren:

Zwei separate Monospuren und PCM24-Codec:

Befehlszeilenbeispiel:

ffmpeg -y -i six_channels.mp4 -filter_complex "[0:a]channelsplit=channel_layout=5.1[FL][FR][FC][LFE][BL][BR];[FL]anullsink;[FR]anullsink;[BL]anullsink;[BR]anullsink" -map 0:v -map "[FC]" -map "[LFE]" -vcodec copy -acodec pcm_s24le -ar 48000 -ac 1 two_mono_tracks.mov

verwandte Informationen