Mam 228 plików mp4 (2,6 GB) i chciałbym z nich wyodrębnić dźwięk (mp3 lub ogg). Chcę je częściowo wyodrębnić - najlepiej z bash. Nie jestem pewien, czy wszystkie pliki używają tego samego kodeka audio, co zostały nagrane w różnych latach, od 2006-2012.
Chcę przejrzeć je wszystkie, wybrać nazwę pliku, wykryć kodek audio i użyć ffmpeg do wyodrębnienia dźwięku.
Czy to możliwe?
Odpowiedzi:
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:
Aby przekonwertować wiele plików:
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):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:Możliwym sposobem automatycznego parsowania kodeka audio i odpowiedniego nazwania pliku audio byłoby:
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.źródło
ffprobe "$file" 2>&1 |sed -rn 's/.*Audio: (...), .*/\1/p'
; gotowe Naprawiono to.This program is only provided for compatibility and will be removed in a future release. Please use avconv instead.
ffmpeg
lubffprobe
nie są dostępne dla systemu Ubuntu 14.04 lub nowszego.ffmpeg
wrócił do Ubuntu w 15.04 i wygląda jak plewy Libavavconv
iavprobe
został usunięty w 15.10 .Jak stwierdził Nicolas Raoul, wymaga to aktualizacji. Oto ta sama linia, którą dał roadmr, ale zamiast tego użył avconv:
for vid in *.mp4; do avconv -i "$vid" "${vid%.mp4}.mp3"; done
źródło