Wydobywanie wav z mp4 przy zachowaniu najwyższej możliwej jakości

39

Przejrzałem dokumentację i mogę wyodrębnić wavplik z mp4pliku za pomocą polecenia:

ffmpeg -i my_video.mp4 output_audio.wav

Jak mogę jednak kontrolować jakość wavpliku? (np. powiedz, że chcę zachować jakość oryginalnego dźwięku tak bardzo, jak potrafię)

Amelio Vazquez-Reina
źródło

Odpowiedzi:

20

wavpliki zwykle zawierają nieskompresowany dźwięk, i jest to ustawienie domyślne podczas tworzenia wavpliku przy użyciu ffmpeg. Twoje polecenie zachowa już maksymalną jakość, ponieważ nie ma kompresji stratnej (ani żadnej kompresji) w celu obniżenia jakości.

Zakładając, że oryginalny dźwięk jest skompresowany, możesz zachować tę samą jakość bez dużego rozmiaru pliku potrzebnego do nieskompresowanego dźwięku, po prostu kopiując oryginalny dźwięk (bez wideo) do nowego mp4pliku:

ffmpeg -i my_video.mp4 -c copy -map 0:a output_audio.mp4

Możesz również ponownie go zakodować lub przekonwertować na inny kodek audio, ale jeśli ten kodek używa kompresji stratnej, jakość zostanie utracona.

mark4o
źródło
Dzięki. Co z częstotliwością próbkowania i liczbą bajtów na sekundę? W jaki sposób ffmpeg wybiera je automatycznie?
Amelio Vazquez-Reina,
Częstotliwość próbkowania będzie taka sama jak na wejściu. Ponieważ wavplik nie jest skompresowany, szybkość transmisji dla pliku to po prostu częstotliwość próbkowania × wielkość próbki × liczba kanałów . Jeśli chcesz obniżyć jakość, możesz poprosić ffmpego ponowne próbkowanie go do niższej częstotliwości, zmień go na 8-bitowy PCM lub zmień na monofoniczny, ale domyślnie tak nie jest.
mark4o
1
BTW, możesz również poprosić go o ponowne próbkowanie z większą częstotliwością, ale to tylko zwiększy rozmiar pliku, a nie jakość, więc nie ma to większego sensu, chyba że potrzebujesz konkretnej częstotliwości próbkowania.
mark4o
1
W moim systemie z Ubuntu 14.04 musiałem użyć -acodec copyzamiast-c copy -map 0:a
Daniel Alder
To nie jest eksportowane jako plik fali i nie odpowiada na pytanie.
Andrew
22

Wyodrębnianie bezstratnego / bezstratnego dźwięku z wideo ( flv / mp4 to wav / flac / mp3) przy użyciu ffmpegwersji 2.3.1 w Ubuntu 14.04

Odwiedź: http://howto-pages.org/ffmpeg/

Przede wszystkim znajdź podstawowe dane ze źródła. Otwórz wideo w VLC Player. Iść do

> Tools > Codec Information 
> Stream 0 (Video/ Codec/ Resolution/ Frame rate) 
> Stream 1 (Audio/ Codec/ Channel/ Sample rate)

Rozważ plik wejściowy ( -i), taki jak input.mp4lub inne pliki- flv, avi, ...). Aby usunąć wideo ( -vn) i wyjąć dźwięk nieskompresowany ( output.wav) z częstotliwością próbkowania 44100 Hz ( -ar 44100) w kodzie impulsowym modulowanym podpisanymi 16-bitowymi -acodec pcm_s16lepróbkami endianu ( ) i 2 kanałami (stereo) ( -ac 2), użyj następującego polecenia.

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 output.wav

Inne -acodecopcje to mp3 flac m4a.

-acode flackonwertuje do pliku 24-bitowego. W przypadku 16-bitowego próbkowania powinno to być

ffmpeg -i input.mp4 -acodec flac -bits_per_raw_sample 16 -ar 44100 output.flac

Pliki wav i flac są większe niż pliki mp4

ac3konwersja działa z, -acodec 3F2R/LFE -ac 6ale tworzy 4 obojętne ścieżki, jak zaznaczono w Audacity.

Do konwersji mp3 wystarczy użyć

ffmpeg -i input.mp4 -vn -acodec mp3 -ab 320k -ar 44100 -ac 2 output.mp3

Można uzyskać więcej opcji zarówno wejścia, jak i wyjścia, próbując z listy uzyskanej z wiersza poleceń na terminalu

$ ffmpeg -help
dr.murli
źródło
1
To nie odpowiada na pytanie. OP już wie, jak wyodrębnić audio jako plik WAV. Pytają, jak kontrolować jakość - co oczywiście nie jest tak naprawdę możliwe, i dlatego powinna być odpowiedzią (jak mark4o). Pliki MP3 i FLAC również nie są tutaj objęte zakresem.
slhck
Przyszedłem do tego linku, aby znaleźć rozwiązanie, a kiedy pracowałem, dostałem trochę więcej, jak wspomniałem. Problem, który zrozumiałem i nad którym również pracowałem, brzmi: „w jaki sposób mogę kontrolować jakość pliku wav? (Np. Powiedzieć, że chcę zachować jakość oryginalnego dźwięku tak bardzo, jak to możliwe)”. Nie jestem technikiem, ale hobbystą i nowy w Ubuntu i ffmpeg. $ ffmpeg -i input.mp4 daje również całą początkową jakość, a opcje można odpowiednio dodać, aby uzyskać jak najwięcej.
dr.murli
Unknown encoder 'pcm_s161e'proszę doradzić, jak rozwiązać ten problem.
kRazzy R