Sie können dies mit ffmpeg (Download eines statischen Builds) sehr einfach wie folgt durchführen :
ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mp4
Dies wird Karte die folgenden Ströme in die Ausgabedatei:
- der erste Videokanal des ersten Eingangs (
0:v:0
) - die Audiokanäle des zweiten Eingangs (
1:a
) - wenn Sie nur den ersten wollen, verwenden Sie1:a:0
usw.
Die Video- und Audioströme werden kopiert, sodass dieser Vorgang schnell abläuft.
Inkompatibles Audio
Wenn die AVI-Datei MP3 für Audiostreams verwendet, können sie keiner MP4-Datei zugeordnet werden. In diesem Fall verwenden Sie:
ffmpeg -i input.mp4 -i input.avi -c:v copy -c:a aac -b:a 192k -map 0:v:0 -map 1:a output.mp4
Dies würde die Audioströme mit AAC mit 192 kBit / s neu codieren. Die Qualität sollte hoch genug sein, damit Sie keine Artefakte durch das erneute Codieren feststellen.
Oder Sie können MKV als Ausgabecontainer verwenden, der praktisch jeden Codec unterstützt:
ffmpeg -i input.mp4 -i input.avi -c copy -map 0:v:0 -map 1:a output.mkv
Wie man im Batch läuft
Sie können diesen Befehl in einer Schleife (obvisouly) verwenden, um ihn auf allen Dateien auszuführen, z. B. unter Linux mit Bash. Dabei wird davon ausgegangen, dass die MP4- und AVI-Dateien denselben Basisnamen haben und Sie ihn nur einmal ausführen (andernfalls wird es versucht) auch die Ausgabedateien konvertieren):
for f in *.mp4; do aviFile="$.avi" # replace the extension outputFile="$-output.mp4" # create output filename ffmpeg -i "$f" -i "$aviFile" -c copy -map 0:v:0 -map 1:a "$outputFile" done
Eine Reihe von Beispielen finden Sie online, wie Sie einen Befehl in einer Windows-Batch-Dateischleife ausführen.