Ich habe 228 mp4-Dateien (2,6 GB) und möchte Audio daraus extrahieren (mp3 oder ogg). Ich möchte sie im Batch extrahieren - vorzugsweise mit Bash. Ich bin nicht sicher, ob alle Dateien den gleichen Audio-Codec verwenden, wie sie in verschiedenen Jahren von 2006 bis 2012 aufgenommen wurden.
Ich möchte alle durchlaufen, den Dateinamen auswählen, den Audio-Codec erkennen und das Audio mit ffmpeg extrahieren.
Ist es möglich?
Antworten:
Sie möchten "Audio aus ihnen extrahieren (mp3 oder ogg)". Aber was ist, wenn der Ton in der mp4-Datei keiner von diesen ist? Sie müssten sowieso umcodieren. Warum also nicht die Audioformaterkennung auf ffmpeg belassen?
So konvertieren Sie eine Datei:
So konvertieren Sie viele Dateien:
Sie können natürlich beliebige ffmpeg-Parameter für die Audiokodierung auswählen, um beispielsweise die Bitrate einzustellen.
Verwenden
-acodec libmp3lame
und ändern Sie die Erweiterung von.ogg
in.mp3
für die MP3-Codierung.Wenn Sie das Audio wirklich extrahieren möchten , können Sie die Audiospur einfach mithilfe von in eine Datei "kopieren"
-acodec copy
. Der Hauptunterschied besteht natürlich darin, dass das Transcodieren langsam und CPU-intensiv ist, während das Kopieren sehr schnell von einer Datei in eine andere geht. So kopieren Sie nur die Audiospur (sofern diese im MP3-Format vorliegt):Beachten Sie, dass in diesem Fall das Audiofile - Format hat mit konsequent sein , was der Behälter (dh , wenn die Audio-AAC - Format ist, muss man sagen
audiofile.aac
). Sie können denffprobe
Befehl verwenden, um festzustellen, über welchen Codec Sie verfügen. Dies kann einige Informationen liefern:Eine Möglichkeit, den Audio-Codec automatisch zu analysieren und die Audiodatei entsprechend zu benennen, wäre:
Hinweise: Die Ausgabedateien werden in einem Unterverzeichnis
output
erstellt, das am Anfang erstellt wurde (falls erforderlich). Für andere Codecs als mp3 und vorbis konvertiert es Audio nach ogg. Ubuntu 14.04 verfügt nicht über ffmpeg in Standard-Repositorys, Sie können jedoch ppa: mc3man / trusty-media repository hinzufügen und das ffmpeg-Paket installieren, um die erforderliche Software zu erhalten. Einzelheiten finden Sie hier .quelle
ffprobe "$file" 2>&1 |sed -rn 's/.*Audio: (...), .*/\1/p'
; Behebt das.This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
ffmpeg
oderffprobe
sind nicht verfügbar für Ubuntu 14.04 oder höher.ffmpeg
kehrte 15.04 zu Ubuntu zurück und es sieht aus wie die Libav-Spreuavconv
undavprobe
wurde 15.10 entfernt .Wie Nicolas Raoul sagte, muss dies aktualisiert werden. Hier ist dieselbe Zeile, die roadmr angegeben hat, aber stattdessen avconv verwendet:
for vid in *.mp4; do avconv -i "$vid" "${vid%.mp4}.mp3"; done
quelle