ffmpeg-Mapping-Hilfe, kodiert 1 6-Kanal-Audio in mehrere Spuren

603
Beterhans

Ich habe 2 Eingabedateien:

  • cover.jpg
  • audio.dts (6 kanal)

Meine Zieldatei ist ein mp4 mit 1 Video und 3 Audio:

  • Audio 1 ist 2-Kanal-AAC
  • Audio 2 ist 6 Kanal AC3
  • Audio 3 ist 6 Kanal dts

Hier ist der Befehl, den ich ausprobiert habe. Bild von Bild zu Video mit Audio-Multikanal:

ffmpeg -loop 1 -i cover.jpg -i audio.dts \ -map 0:0 -map 1:0 -map 1:0 -map 1:0 \ -f mp4 \ -codec:v:0 libx264 -r:0 1 -profile:v:0 main -level 3.1 -pix_fmt:0 yuv420p -qmax:0 19 -qmin:0 18 \ -codec:a:0 libfaac -ac:0 2 -ar:0 44100 -q:a:0 640 -af:0 "pan=stereo| FL = FL + 0.5*FC + 1.0*BL + 1.0*SL + 0.8*LFE | FR = FR + 0.5*FC + 1.0*BR + 1.0*SR + 0.8*LFE" \ -codec:a:1 ac3 -ac:1 6 -ab:a:1 640 \ -codec:a:2 copy \ -threads 0 -y \ -shortest -t 00:00:39.000 out.mp4 

Es scheint jedoch, dass diese Audiooption, die ich auf Audio # 1 angewendet habe, auch auf Audio # 2 und Audio # 3 angewendet wurde.

Wie konnte ich diese Option nur für eine Spur funktionieren lassen?

1
Versuchen Sie, das Audiomaterial vorher zu codieren, um die Dateien zu trennen, und verwenden Sie dann beim Kopieren der endgültigen mp4-Codecs für alle Audiostreams den Kopiercodec. Marki555 vor 8 Jahren 0
Das hat mir sehr geholfen, als ich Multichannel-Sachen gemacht habe. Es könnte Ihnen helfen, es kann nicht sein, aber werfen Sie einen Blick darauf: https://trac.ffmpeg.org/wiki/AudioChannelManipulation Russell Uhl vor 8 Jahren 1
Sie müssen die vollständige Konsolenausgabe Ihres `ffmpeg'-Befehls angeben. LordNeckbeard vor 8 Jahren 0

1 Antwort auf die Frage

1
occvtech

Es gibt wie immer verschiedene Möglichkeiten, um solche Aufgaben in FFmpeg auszuführen.

Am bekanntesten ist die Verwendung des channelsplitFilters, um Ihre Audioströme zu trennen und Bezeichnungen für jeden von ihnen zu definieren. Auf diese Weise können Sie verschiedene Filter für einen beliebigen Kanal einzeln ausführen und die Ausgabe einer beliebigen Kombination von Kanälen zuordnen.

Der Filter sieht ungefähr so ​​aus:

ffmpeg -i [INPUT_video] -i [INPUT_3channel_audio] -filter_complex "[1:a]channelsplit[1][2][3];...." 

In diesem Beispiel haben wir jeden der 3 Kanäle in neue Labels unterteilt: [1] [2]und [3]. Diese Labels können jetzt als letztere aufgerufen und durch andere Filter geschoben und / oder der endgültigen Ausgabe zugeordnet werden.

Hoffe das hilft!

Ich habe keine Probleme mit Audiokanälen, sondern Audiospuren. Ich habe 1 Audio hat 6 Kanäle und basierend darauf möchte ich 3 Versionen der Original-Audiospur erstellen, wie Sie in meinem Beispiel sehen. und das 1. Video scheint wie v: 0 und 1st Audio genannt a: 0 und 2nd a: 1. Wenn ich einen Parameter wie "-ac: a: 1 2" anspreche, muss der zweite Ton in die 2-Kanal-Spur umcodiert werden. aber ffmpeg ging nicht meinen Weg. Beterhans vor 8 Jahren 0