Jak uzyskać najlepszą jakość dźwięku za pomocą youtube-dl?
16
Używam youtube-dlw systemie Linux do pobierania filmów z YouTube i wyodrębniania audio. To mój sposób na zbudowanie małej kolekcji muzycznej.
W każdym razie wiem, że istnieje opcja, --audio-quality=gdzie 0 jest najlepsze, a 9 najgorsze. Czy to wszystko, co muszę zrobić, aby uzyskać najlepszą jakość dźwięku?
Ponadto, czy ktoś wie, czy pobieranie z SoundCloud może uzyskać wyższą jakość?
--audio-qualityNie ma wpływu na jakość dźwięku źródła. Jest to opcja przetwarzania końcowego i ponownie koduje dźwięk.
Ponieważ jakiekolwiek (stratne) ponowne kodowanie faktycznie pogorszy jakość strumienia - lub przynajmniej zwiększy jego niepotrzebnie większy rozmiar - odradzam w ogóle przetwarzanie końcowe dźwięku.
Aby uzyskać najlepszą możliwą jakość dźwięku, wystarczy wybrać format źródłowy wysokiej jakości. W rzeczywistości youtube-dlzrobi to domyślnie, ale możesz to jawnie ustawić za pomocą --audio-format best. YouTube (i inni dostawcy) przechowują różne kodeki audio o różnych przepływnościach i youtube-dlwybiorą najlepszy z nich.
Jeśli masz ffmpegzainstalowany w swoim systemie, youtube-dlmożesz automatycznie wyodrębnić audio:
youtube-dl --audio-format best -x <url>
W przeciwnym razie otrzymasz plik wideo, z którego musisz wyodrębnić komponent audio.
Jeśli ffmpegnie ponownie koduje, to dlaczego wybieram format audio? Jeśli wprowadzę ten wiersz, ale aaczamiast niego, nie otrzymam tego samego pliku, ale z innym rozszerzeniem. Otrzymuję inny plik o nieco innym rozmiarze i szybkości transmisji.
Blrp,
1
Ok, ale to tak naprawdę nie odpowiada na moje pytanie. Pytam konkretnie o konwersję wideo na audio. Jeśli istnieje polecenie, które pobiera dźwięk z MP4 i zapisuje go jako plik audio bez ponownego kodowania, powinien być tylko jeden możliwy wynik, prawda? A jednak polecenie ffmpeg w twoim poście daje inny wynik w zależności od rozszerzenia, które wybrałem dla dźwięku. Czy zawsze jest jedno prawidłowe rozszerzenie audio, w zależności od rozszerzenia wideo, dla którego otrzymuję dźwięk bez ponownego kodowania? Lub jak inaczej to zrobić?
Blrp
1
Teraz widzę. Najpierw wyjaśniłem moją odpowiedź - była nieco bardziej złożona niż potrzebna. Być może ta odpowiedź jest interesująca do przeczytania. Nawet jeśli strumień bitów kodeka audio nie zostanie zmieniony (tzn. Skopiowany), rozszerzenie określa sposób, w jaki jest zawijany w formacie. Nie ma tutaj mapowania 1: 1. Niektóre formaty wymagają więcej miejsca niż inne. Możesz użyć ffmpeg -i in.mp4 -c:a copy -vn out.m4ai skończyć z innym plikiem niż ffmpeg -i in.mp4 -c:a copy -vn out.mkv, chociaż oba zawierają dokładnie te same dane audio (a zatem mają tę samą jakość dźwięku).
slhck
1
Jestem pewien, że to nie koduje ponownie. Nie ma takiej możliwości. Powodem, dla którego otrzymujesz te same bitrate, jest to, że YouTube ma bardzo ograniczoną różnorodność bitrate'ów / kodeków, których używają, w przeciwieństwie do reprezentacji wideo. Może YouTube jest nieco nieobliczalny, gdy przypisuje bitrate wideo i audio, i możesz zobaczyć wyższą bitrate audio dla niższej jakości wideo - w takim przypadku myślę, że youtube-dlnadal wybiera format wideo najwyższej jakości. Czy masz konkretny przykład wideo?
slhck,
1
Wydaje mi się w porządku. Na przykład w drugim, gdy użyjesz -xjako opcji, pobierze wariant tylko audio z najwyższą przepływnością (256k, kod formatu 141, sprawdź za pomocą youtube-dl -F <url>). Wszystkie inne komponenty audio innych reprezentacji audiowizualnych mają niższe prędkości transmisji.
slhck,
5
Pozostań przy rodzimych formatach muzycznych YouTube, aby uniknąć ponownego kodowania:
Jaka jest różnica między bestaudio[ext=m4a]i --extract-audio? Dlaczego ten drugi prawdopodobnie miałby skutkować pierwszym, oggale nie pierwszym?
Hashim,
[ext=m4a]ogranicza wybór do dostępnych formatów m4a i bez zapisywania --extract-audiogo w tym samym formacie kontenera m4a. Z --extract-audiodanymi audio są wydobywane i przechowywane w kontenerze OGG.
Frank Breitling,
Przepraszam, że jest już za późno, ale to tak naprawdę nie tłumaczy, dlaczego ten ostatni spowodowałby .oggkonkretny plik. Dlaczego .ogg, gdy .oggnie został określony?
Hashim
Rozumiem, że najlepsza dostępna jakość dźwięku jest w formacie OPUS, a nie AAC, a następnie jest zapisywana w kontenerze ogg. Zaktualizowałem odpowiednio swoją odpowiedź.
ffmpeg
nie ponownie koduje, to dlaczego wybieram format audio? Jeśli wprowadzę ten wiersz, aleaac
zamiast niego, nie otrzymam tego samego pliku, ale z innym rozszerzeniem. Otrzymuję inny plik o nieco innym rozmiarze i szybkości transmisji.ffmpeg -i in.mp4 -c:a copy -vn out.m4a
i skończyć z innym plikiem niżffmpeg -i in.mp4 -c:a copy -vn out.mkv
, chociaż oba zawierają dokładnie te same dane audio (a zatem mają tę samą jakość dźwięku).youtube-dl
nadal wybiera format wideo najwyższej jakości. Czy masz konkretny przykład wideo?-x
jako opcji, pobierze wariant tylko audio z najwyższą przepływnością (256k, kod formatu 141, sprawdź za pomocąyoutube-dl -F <url>
). Wszystkie inne komponenty audio innych reprezentacji audiowizualnych mają niższe prędkości transmisji.Pozostań przy rodzimych formatach muzycznych YouTube, aby uniknąć ponownego kodowania:
w wyniku czego powstaje
m4a
plik lubTen ostatni może również zapisywać w
ogg
pliku, jeśli formatem najwyższej jakości audio jest OPUS, a nie AAC.Możesz wymienić dostępny format za pomocą
źródło
bestaudio[ext=m4a]
i--extract-audio
? Dlaczego ten drugi prawdopodobnie miałby skutkować pierwszym,ogg
ale nie pierwszym?[ext=m4a]
ogranicza wybór do dostępnych formatów m4a i bez zapisywania--extract-audio
go w tym samym formacie kontenera m4a. Z--extract-audio
danymi audio są wydobywane i przechowywane w kontenerze OGG..ogg
konkretny plik. Dlaczego.ogg
, gdy.ogg
nie został określony?Użyj polecenia:
źródło