Ich möchte eine Videodatei mit mehreren Sounds ausgeben, diese jedoch in einem Kanal speichern.
Ich habe einige Möglichkeiten ausprobiert, aber ich bekomme immer ein Video mit mehreren Sound-Streams.
So was
Mein Befehl ist
ffmpeg -r 30 -i test_%03d.png
-itsoffset 10 -ss 5 -t 20 -i s01.wav
-itsoffset 15 -ss 10 -t 30 -i s02.wav
-map 0:v -map 1:a:0 -map 2:a:0 -c:v libopenh264 -c:a mp3 test.mp4
Neuer Befehlstest
-framerate 30 -i test_%03d.png -ss 0.2 -t 1 -i sound01.wav -ss 1 -t 2 -i sound02.wav
-filter_complex
"[1] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a1];
[2] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a2];
[a1]adelay=400|400,apad[b1];
[a2]adelay=900|900[b2];
[b1][b2]amerge=2[a]"
-map 0:v -map "[a]" -c:v libopenh264 -c:a mp3 -ac 2 output.mp4
Da Filter ihre Formate nicht auswählen konnten, trat ein Fehler auf, und ich fügte dem Befehl ein Format hinzu. Aber jetzt tritt ein anderer Fehler auf. Kein Kanallayout für Eingang 1 und Ausgang Video fehlt Sound01, bitte helfen Sie mir!
Antworten:
Um mehrere Audio-Streams zu einem zu kombinieren, müssen Sie Filter verwenden, um die Streams zusammenzuführen:
Dies
framerate
ist die richtige Option für Bild- und RAW-Streams.Das
-ac 2
Downmixen des zusammengeführten Audios auf 2 Kanäle, da dies die Obergrenze für den MP3-Encoder ist.Für den aktualisierten Befehl
Das
adelay
Pad füllt das Audio vor und nimmt den Wert in Millisekunden pro Kanal an. Dieapad
Pads klingen am Ende und werden benötigt, da Amerge mit dem kürzesten Stream endet.quelle