Mówisz, że chcesz „wydobyć z nich dźwięk (mp3 lub ogg)”. Ale co jeśli dźwięk w pliku mp4 nie jest jednym z nich? i tak musisz transkodować. Dlaczego więc nie pozostawić wykrywania formatu audio ffmpeg?
Aby przekonwertować jeden plik:
ffmpeg -i videofile.mp4 -vn -acodec libvorbis audiofile.ogg
Aby przekonwertować wiele plików:
for vid in *.mp4; do ffmpeg -i "$vid" -vn -acodec libvorbis "${vid%.mp4}.ogg"; done
Możesz oczywiście wybrać dowolne parametry ffmpeg do kodowania dźwięku, które chcesz, aby ustawić takie parametry, jak bitrate i tak dalej.
Użyj -acodec libmp3lame
i zmień rozszerzenie z .ogg
na .mp3
do kodowania mp3.
Jeśli chcesz naprawdę wyodrębnić audio, możesz po prostu „skopiować” ścieżkę audio do pliku za pomocą -acodec copy
. Oczywiście główna różnica polega na tym, że transkodowanie jest powolne i wymaga dużej mocy obliczeniowej, a kopiowanie jest bardzo szybkie, ponieważ przenosisz bajty z jednego pliku do drugiego. Oto jak skopiować tylko ścieżkę audio (zakładając, że jest w formacie mp3):
ffmpeg -i videofile.mp4 -vn -acodec copy audiofile.mp3
Zauważ, że w tym przypadku format pliku audio musi być zgodny z tym, co ma kontener (tj. Jeśli audio ma format AAC, musisz powiedzieć audiofile.aac
). Możesz użyć ffprobe
polecenia, aby zobaczyć, jaki masz kodek, może to dostarczyć pewnych informacji:
ffprobe -v error -select_streams a:0 -show_entries stream=codec_name -print_format csv=p=0 "videofile.mp4"
Możliwym sposobem automatycznego parsowania kodeka audio i odpowiedniego nazwania pliku audio byłoby:
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
Uwagi: pliki wyjściowe są tworzone w podkatalogu, output
który tworzy na początku (w razie potrzeby). W przypadku innych kodeków niż mp3 i vorbis konwertuje audio na ogg. Ubuntu 14.04 nie ma ffmpeg w standardowych repozytoriach, ale możesz dodać ppa: mc3man / trusty-media repozytorium i zainstalować pakiet ffmpeg, aby uzyskać potrzebne oprogramowanie. Zobacz tutaj, aby uzyskać szczegółowe informacje.