Übersicht der Eingänge
input_0.mp4
hat den gewünschten Videostream und input_1.mp4
hat den gewünschten Audiostream:
In ffmpeg
den Streams sieht das so aus:
$ ffmpeg -i input_0.mp4 -i input_1.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input_0.mp4':
Duration: 00:01:48.50, start: 0.000000, bitrate: 4144 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1280x720, 4014 kb/s, SAR 115:87 DAR 1840:783, 23.98 fps, 23.98 tbr, 16k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 124 kb/s (default)
Input #1, mov,mp4,m4a,3gp,3g2,mj2, from 'input_1.mp4':
Duration: 00:00:30.05, start: 0.000000, bitrate: 1754 kb/s
Stream #1:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 8:9 DAR 4:3], 1687 kb/s, 59.94 fps, 59.94 tbr, 60k tbn, 119.88 tbc (default)
Stream #1:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 55 kb/s (default)
ID-Nummern
ffmpeg
bezieht sich auf Eingabedateien und Streams mit Indexnummern. Das Format ist input_file_id:input_stream_id
. Da ffmpeg
die Zählung ab 0 beginnt, 1:1
bezieht sich der Stream auf das Audio von input_1.mp4
.
Stream-Spezifizierer
Dies kann mit Stream-Spezifizierern erweitert werden . Beispielsweise können Sie feststellen, ffmpeg
dass Sie den ersten Videostream vom ersten Eingang ( 0:v:0
) und den ersten Audiostream vom zweiten Eingang ( 1:a:0
) möchten . Ich bevorzuge diese Methode, weil sie effizienter ist. Außerdem ist es weniger anfällig für versehentliches Mapping, da 1:1
es sich auf jeden Stream-Typ beziehen kann, während es sich 2:v:3
nur auf den vierten Videostream der dritten Eingabedatei bezieht.
Beispiele
Die -map
Option gibt an, ffmpeg
welche Streams Sie möchten. So kopieren Sie das Video von input_0.mp4
und Audio von input_1.mp4
:
$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:0 -map 1:1 -shortest out.mp4
Das nächste Beispiel macht dasselbe:
$ ffmpeg -i input_0.mp4 -i input_1.mp4 -c copy -map 0:v:0 -map 1:a:0 -shortest out.mp4
-map 0:v:0
kann übersetzt werden als: Wählen Sie am ersten Eingang ( 0
) den Videostream-Typ ( v
), den ersten Videostream ( 0
).
-map 1:a:0
kann übersetzt werden als: Wählen Sie am zweiten Eingang ( 1
) den Audio-Stream-Typ ( a
), den ersten Audio-Stream ( 0
).
Zusätzliche Bemerkungen
-map 1:0
würde das Video von bezieheninput_1.mp4
, nicht das Audio. Das Beispiel sollte das Audio erhalten, also muss es sein-map 1:1
oder-map 1:a:0
was in diesem Fall dazu führt, dass der gewünschte Audiostream abgerufen wird. Beziehen Sie sich auf das Bild in der Antwort für eine visuelle Darstellung.Ich habe einen neuen Befehl zum Zusammenführen von Audio zu Video
quelle
-vcodec
ist schon immer da. Es ist das gleiche wie die neueren Aliase-codec:v
und-c:v
.ffmpeg -i 1.mp4 -i 0.wav -map 0 -map 1 -codec copy -shortest new.mp4
den Befehl versucht, aber nicht funktioniert-vcodec copy
vermeiden, das Video neu zu codierenAls MKV-spezifische ergänzende Antwort:
MKVToolnix kann das. Ich bevorzuge die GUI.
Wenn das erste Video hinzugefügt wurde, fügen Sie das zweite hinzu ("Quelldateien hinzufügen"), lassen Sie dann nur die gewünschten Streams ausgewählt und drücken Sie "Multiplexing starten".
quelle