Audiospuren aus Videodateien entfernen und hinzufügen - ffmpeg
Ich stand vor dem Problem, eine bearbeitete Audiodatei mit der ursprünglichen Audiospur einer Videodatei (mp4) auszutauschen. Da ich nur die Audiodatei verändert hatte, wollte ich nicht das Video neu kodieren und so Gefahr laufen, die Qualität zu verändern, oder unnötig die Videodatei zu vergrößern.
Im Prinzip ist es ganz einfach (unter Linux): ffmpeg
Das Entfernen einer oder mehrerer Audiospuren funktioniert mit folgendem Befehl
ffmpeg -i InputVideo.mp4 -map 0 -map -0:a:0 -codec copy OutputVideo.mp4
-map 0
wählt alle (Video/Audio) Spuren aus-0:a:0
wählt aus allen Spuren die Audiospur Nummer 1 (Zählweise ab 0) aus-codec copy
definiert, dass keine Neukodierung stattfindet
Will man alle Audiospuren aus dem Video entfernen, so gilt abgekürzt
-0:a
wählt alle Audiospuren aus
Zur Auswahl stehen nicht nur a (Audiospuren), sondern auch v (Videospuren), s (Sub-/Untertitel), d (Datenspuren).
Das Hinzufügen einer oder mehrerer Audiospuren funktioniert mit folgendem Befehl
ffmpeg -i InputVideo.mp4 -i Audiospur.m4a -codec copy -shortest OutputVideo.mp4
-i
steuert, was in die Datei aufgenommen werden soll. Hier 1 Video- und 1 Audiospur-codec copy
definiert, dass keine Neukodierung stattfindet-shortest
kürzt alles auf die Länge der Datei mit der kürzesten Dauer
Das Extrahieren einer Audiospur im Originalformat funktioniert folgendermaßen
ffprobe Name_der_Video_Datei
Als Ausgabe erhält man eine lange Ausgabe und zum Schluss findet man so etwas in dieser Art
Input #0, matroska,webm, from 'MeinVideo.webm':
Metadata:
ENCODER : Lavf58.20.100
Duration: 03:59:10.04, start: -0.007000, bitrate: 2285 kb/s
Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, bt709), 3840x2160, SAR 1:1 DAR 16:9, 59.94 fps, 59.94 tbr, 1k tbn, 1k tbc (default)
Metadata:
DURATION : 03:59:10.019000000
Stream #0:1(eng): Audio: opus, 48000 Hz, stereo, fltp (default)
Metadata:
DURATION : 03:59:10.041000000
In diesem Falle handelt es sich bei Stream #0:1 Audio: opus um ein Ogg Vorbis Audio, das man in ein .ogg oder .oga abspeichern kann mit folgendem Befehl
ffmpeg -i MeinVideo.webm -map 0:a:0 -c copy MeinAudio.oga
In diesem Fall wird einfach die Audiodatei ohne ein neues konvertieren aus der Videodatei herauskopiert und liegt dann als MeinAudio.oga im Dateisystem.
Das Extrahieren und Konvertieren einer Audiospur in ein anderes Audioformat z.B. WAV geht sogar noch einfacher
ffmpeg -i MeinVideo.webm MeinAudio.wav
Bei komprimierten Audioformaten müssen natürlich noch ein paar mehr Parameter zur Steuerung der Qualität angegeben werden.

2 Kommentare
Kommentar von: Kommentar [Besucher]
Kommentar von: hoergen [Mitglied]
Vielen Dank für die Erweiterung.
Der Sache mit den Formatierungsmöglichkeiten gehe ich mal nach. Danke auch dafür.
Um Audio- bzw Videospuren zu entfernen, kann man statt -map auch die Abkürzung über -an bzw -vn verwenden. Aus der Manpage:
> The “-vn / -an / -sn / -dn” options can
> be used to skip inclusion of video, audio, subtitle and data streams respectively, whether manually mapped or automatically selected, except for those streams which are outputs of complex filtergraphs.
P.S.: Wenn man die vom Editor angebotenen Formattierungsmöglichkeiten nutzt, bekommt man den Fehler ‘Tag <span> darf kein Attribut style="…” besitzen’.