Wie füge ich eine Audiodatei (aac oder mp3) zu einer mp4-Videodatei hinzu?


7

Ich habe eine MP4-Videodatei, die aus Bildern erstellt wurde, und möchte MP3-Sound hinzufügen. Ich bin mit Videobearbeitung überhaupt nicht vertraut, habe aber irgendwo gelesen, dass AAC-Sound bevorzugt wird, also habe ich auch Sound in AAC-Form.

Die bevorzugte Form des Ergebnisses ist auch mp4 oder flv. Mein Betriebssystem ist Ubuntu (Saucy Salamander).

Ich habe viel gegoogelt avconvund mencoderversucht, die gefundenen Beispiele ohne Erfolg in meinen Fall umzuwandeln.

Werden Sie, einer von Ihnen, Experten, so freundlich sein, mir ein Befehlszeilenbeispiel zu geben, wie kann ich das tun?

Antworten:


14

Es hängt ein wenig davon ab, wie Ihre Streams in der mp4-Datei zugeordnet sind. So etwas sollte funktionieren:

ffmpeg -i video.mp4 -i audio.aac -map 0:0 -map 1:0 -vcodec copy -acodec copy newvideo.mp4

Normalerweise wird der Videostream als erster Stream im Container abgebildet.
Wenn es nicht als erster Stream zugeordnet ist, ändern Sie die Zuordnung:

ffmpeg -i video.mp4 -i audio.aac -map 0:1 -map 1:0 -vcodec copy -acodec copy newvideo.mp4

Um herauszufinden, wie die Streams in Ihrer Videodatei tatsächlich zugeordnet wurden, können Sie sie verwenden, mediainfodie sich heutzutage in den Standard-Ubuntu-Repositorys befinden.

Wenn wir hier die Kommandozeile aufschlüsseln, funktioniert das folgendermaßen:

-i video.mp4  -> first media file
-i audio.aac  -> second media file
-map 0:1      -> use the second stream from the first mediafile
-map 1:0      -> use the first stream from the second mediafile
-vcodec copy  -> leave the video as is
-acodec copy  -> leave the audio as is
newvideo      -> resulting videofile

Stellen Sie sicher, dass das Audiofile und das Videofile dieselbe Dauer haben. Nicht jeder Spieler akzeptiert Titel mit großen Dauerunterschieden.

Bitte beachten Sie das avconvund ffmpegsind fast das gleiche. Tatsächlich funktioniert dieser Befehl mit avconv genauso wie der gleiche Befehl mit ffmpeg:

avconv -i video.mp4 -i audio.aac -map 0:0 -map 1:0 -vcodec copy -acodec copy newvideo.mp4  

Das Programm avconv gehört zum Libav-Projekt, einer Abzweigung aus dem FFmpeg-Projekt. Sie können auch die folgende Fehlermeldung ignorieren:

*** THIS PROGRAM IS DEPRECATED ***
This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.

Eine Alternative zum Muxen von Dateien im MP4-Format ist MP4Boxaus dem gpacPaket.


Vielen Dank für die schnelle Antwort. Keiner der Befehle ergab jedoch einen hörbaren Ton mit Totem.
user2469202

Ich habe die Befehle getestet, bevor ich meine Antwort festgeschrieben habe, um sicherzustellen, dass sie funktioniert. Daher vermute ich, dass das Problem etwas anderes sein muss. Könnten Sie bitte Ihre Eingabedateien und Ausgabedateien im Totem und in Mediainfo überprüfen? Auch wenn Sie Fehlermeldungen erhalten hätten, wären Sie so freundlich, diese zu posten?
thom

Ich bin sicher, dass der Fehler bei mir liegt und ich bin sehr anmutig, mir zu helfen. Ich habe versucht, die Ausgaben hier zu kopieren, aber diese sind zu groß, also habe ich sie dort abgelegt : evoran.hu/tmp/mediainfo - Und nochmals vielen Dank für Ihre Hilfe.
user2469202

Ja, ich sehe, Sie haben beide ffmpeg-Befehle ausgegeben. Der erste Befehl funktionierte und gab Ihnen die gültige Datei. Der zweite Befehl hatte die falsche Zuordnung und gab Ihnen eine Datei ohne Ton und überschrieb natürlich die erste Datei. Rufen Sie also einfach den ersten Befehl auf und vergessen Sie im Moment den zweiten.
thom

Leider wurde es nicht überschrieben. Nach dem ersten Versuch habe ich ein Totem gestartet, um das Ergebnis zu überprüfen. Was seltsam ist, das newvideo.mp4 wird von mediainfo als mp4 mit aac audio gemeldet. Totem spielt jedoch keinen Ton. Hier ist das Ergebnis mp4: evoran.hu/tmp/newvideo.mp4 (ziemlich groß, 39 MB)
user2469202
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.