Zusammenführen von Audio- und Videodateien in ffmpeg

161

Ich möchte eine Audiodatei (WAV- oder AU-Format) mit einer Videodatei (MP4-Format) zusammenführen.

Bitte schlagen Sie mir vor, wie ich das erreichen kann. Ich möchte diese Datei zu einer neuen .mp4-Videodatei zusammenführen. Ein ffmpeg-Befehl wäre sehr willkommen.

Sandig
quelle
Es gibt hier einen anständigen Artikel, der auch hilfreich sein könnte ... cfc.kizzx2.com/index.php/muxing-audio-and-video-with-ffmpeg
Simon East

Antworten:

260

Zusammenführen von Video und Audio mit neuer Audiokodierung

Dieses Beispiel stammt aus diesem Blogeintrag, wurde jedoch für eine neuere Syntax aktualisiert. Es sollte etwas sein, um die Wirkung von:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental output.mp4

In diesem Beispiel wird davon ausgegangen, dass die Videodatei noch keinen Audiostream enthält und dass Sie dasselbe Ausgabeformat (hier MP4) wie das Eingabeformat verwenden möchten.

Der obige Befehl transkodiert das Audio, da MP4 keine PCM-Audio-Streams übertragen können. Sie können einen beliebigen anderen Audio-Codec verwenden. Weitere Informationen finden Sie im AAC-Codierungshandbuch .

Wenn Ihr Audio- oder Videostream länger ist, können Sie die -shortestOption hinzufügen, sodass ffmpeg die Codierung beendet, sobald eine Datei endet.

Kopieren des Audios ohne Neukodierung

Wenn Ihr Ausgabecontainer (fast) jeden Codec verarbeiten kann - wie z. B. MKV -, können Sie einfach sowohl Audio- als auch Videostreams kopieren:

ffmpeg -i video.mp4 -i audio.wav -c copy output.mkv

Audiostream ersetzen

Wenn Ihr Eingangsvideo bereits Audio enthält und Sie es ersetzen möchten, müssen Sie ffmpeg mitteilen, welcher Audio-Stream aufgenommen werden soll:

ffmpeg -i video.mp4 -i audio.wav \
-c:v copy -c:a aac -strict experimental \
-map 0:v:0 -map 1:a:0 output.mp4

Die mapOption bewirkt, dass ffmpeg nur den ersten Videostream vom ersten Eingang und den ersten Audiostream vom zweiten Eingang für die Ausgabedatei verwendet.

Patrick Georgi
quelle
Ich habe es versucht, aber ffmpeg friert beim Zusammenführen ein
Sandy
4
Ich glaube nicht, dass MP4-Container WAV-Audio-Streams haben können. Versuchen Sieffmpeg -i audio.wav -i video.mp4 -acodec copy -vcodec copy -f mkv output.mkv
Luke
1
Ich verwende dies und es ersetzt das ursprüngliche Audio vom eingegebenen Audio. Was ist, wenn ich Eingangsaudio mit dem Audio des Eingangsvideos verbinden möchte?
Iqbal Malik
Sehr süße Kommandozeilen ...
Chandra Nakka
Toll, ich habe ffmpeg -i video.mp4 -i audio.wav \ -c: v copy -c: aac -strict experimental output.mp4 verwendet, um MP3 mit Wav-Datei zu verschmelzen ... => mp4 5 Minuten, gerendert 30 Sekunden ..Danke
sonida
12

Da ich mit meinem Ruf keine Kommentare zur ersten Antwort verfassen darf, ein Nachtrag hier, da ich dieses Problem beim Codieren von Webms hatte.
Wenn Ihr Audiostream zum Beispiel länger ist als der Videostream , müssen Sie ihn ausschneiden. Andernfalls wird das letzte Videoframe als Standbild und Audio ausgeführt.

Um einen der Streams auszuschneiden, können Sie -ss [hh: mm: ss] -t [ss] vor jedem der -i "file.ext" verwenden.
-ss [...] legt den Startpunkt für das Ausschneiden fest
-t legt die Länge des Segments in Sekunden fest

Beispiel:

ffmpeg.exe -ss 00:00:10  -t 5 -i "video.mp4" -ss 0:00:01 -t 5 -i "music.m4a" -map 0:v:0 -map 1:a:0 -y out.mp4
user136036
quelle
4
Sie können auch einfach -shortestdas Ende abschneiden.
Nyuszika7h
5

-open Eingabeaufforderung (Windows + R -> Cmd-> Enter)

- Gehen Sie dann in den Ordner, in dem Sie Audio- und Videodateien haben

wende diesen cmd an

ffmpeg -i "videoFile.mp4" -i "audioFile.mp3" -shortest outPutFile.mp4

Geben Sie ... ein. Sie erhalten eine neue Datei mit dem Namen outPutFime.mp4 (eine zusammengeführte Datei aus Audio und Video).

UniCoder
quelle
2
Es ist wirklich nicht notwendig, hier die Verwendung der Befehlszeile zu beschreiben. Es ist so ziemlich impliziert, dass Benutzer das herausfinden können. Zumal der Fragesteller FFmpeg angegeben hat. -shortestTrotzdem ist das Etikett sehr geschickt. Viel einfacher als in der Antwort von @ user136036.
Kat
3
Dies wird alles neu codieren, was wahrscheinlich nicht das ist, was gewünscht wird.
2.
'ffmpeg' wird nicht als interner oder externer Befehl erkannt,
UniCoder
Du musst ffmpeg zu PATH hinzufügen wikihow.com/Install-FFmpeg-on-Windows
Arete
5

Das hat bei mir funktioniert:

ffmpeg.exe -i AudioT.m4a -i VideoT.mp4 -acodec copy -vcodec copy muxed.mp4
Ronald
quelle
1
Es funktioniert teilweise für mich, nicht für alle Eingaben, einige resultierende Eingabevideos bleiben in der Ausgabe gleich
Narendra Singh
1

Versuchen Sie es mit einem Mencoder (Ja, er basiert auf ffmpeg, aber Sie wissen es nie). Ich benutze das -audiofileArgument. Im Allgemeinen verwende ich jedoch ffmpeg. Nehmen Sie diesen Rat mit einer Prise Salz.

Und wenn Sie Windows verwenden, funktioniert Mediacoder (leider nicht mehr Open Source) ... es ist im Grunde ein Frontend für viele Gnu-Encoder und einige nicht-freie.

Wyatt8740
quelle