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:
ffmpeg -i videofile.mp4 -vn -acodec libvorbis audiofile.ogg
So konvertieren Sie viele Dateien:
for vid in *.mp4; do ffmpeg -i "$vid" -vn -acodec libvorbis "${vid%.mp4}.ogg"; done
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):
ffmpeg -i videofile.mp4 -vn -acodec copy audiofile.mp3
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 den ffprobe
Befehl verwenden, um festzustellen, über welchen Codec Sie verfügen. Dies kann einige Informationen liefern:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "videofile.mp4"
Eine Möglichkeit, den Audio-Codec automatisch zu analysieren und die Audiodatei entsprechend zu benennen, wäre:
mkdir -p output
# current directory has to contain at least one .mp4 file
for vid in *.mp4; do
codec="$(ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "$vid")"
case "$codec" in
mp3 ) filetype=mp3 ;;
vorbis ) filetype=ogg ;;
* ) filetype= ;;
esac
if [ "$filetype" ]; then
ffmpeg -i "$vid" -vn -acodec copy output/"${vid%.*}"."$filetype"
else
ffmpeg -i "$vid" -vn -acodec libvorbis output/"${vid%.*}".ogg
done
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 .