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.


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.


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

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).


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.