Как загрузить видео с YouTube в формате mp3 с лучшим качеством звука с помощью youtube-dl

Я хочу загружать видео с YouTube в формате mp3 в лучшем качестве. Приведенный ниже код помогает загружать видео с YouTube в виде m4a но не мы mp3

youtube-dl -f bestaudio --audio-quality 0 --audio-format mp3 https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_

можете ли вы сказать мне, как использовать bestaudio параметр для загрузки видео с YouTube в виде mp3

От man youtube-dl:

-x, --extract-audio                  Convert video files to audio-only files (requires ffmpeg or avconv and ffprobe or avprobe)    --audio-format FORMAT            Specify audio format: "best", "aac", "vorbis", "mp3", "m4a", "opus", or "wav"; "best" by default    --audio-quality QUALITY          Specify ffmpeg/avconv audio quality, insert a value between 0 (better) and 9 (worse) for VBR or a specific bitrate like 128K (default

Таким образом, ваша команда может быть:

youtube-dl -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 <Video-URL>

То --audio-quality 0 использует высочайшее качество кодирования, но может увеличить размер вашего файла без необходимости. Значение по умолчанию равно 5 и может быть лучшим выбором в зависимости от качества источника.

Итак, если для вас важны качество и размер файла, вам следует избегать перекодирования и придерживаться собственных музыкальных форматов Youtube:

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>

приводящий к m4a файл или

youtube-dl -f bestaudio --extract-audio --embed-thumbnail --add-metadata <Video-URL>

вероятно, это приведет к ogg файл.

Вы можете перечислить доступный формат с помощью

youtube-dl -F <Video-URL>

Если вам нужен только mp3-файл:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 && rm {} "

Если вы не хотите удалять исходный файл:

youtube-dl -f bestaudio  "https://www.youtube.com/playlist?list=PLYRruMbyFRcBVdVN8v4FNkIKkXvL-bZn_" --exec "ffmpeg -i {}  -codec:a libmp3lame -qscale:a 0 {}.mp3 "

Я рекомендую использовать Pafy (Python), очень легко получить аудиосвязь, и вы можете скачать напрямую, если хотите:

#python3import pafyvideo = pafy.new('video id or video url')bestaudio = video.getbestaudio()bestaudio.bitrate #get bit ratebestaudio.extension #extension of audio fileurl...bestaudio.url #get url...#download if you wantbestaudio.download()

Также стоит отметить другие фрагменты из man youtube-dl (онлайн-копию можно найти здесь):

(Для тех, кто думает о TL; DR, просто прочитайте 4-й абзац, и вы можете использовать youtube-dl -x URL как и должно быть, скачивайте в любом случае в лучшем качестве :)

Также youtube-dl -f bestaudio URL работает по моему опыту! Однако при использовании обоих этих вариантов большую часть времени вам потребуется конвертировать в MP3 с помощью ffmpeg или что-то подобное - поскольку вы уже редактируете файл, вы также можете пометьте его (используйте старую версию ID3 для большей совместимости с устройствами!).

ВЫБОР ФОРМАТА

По умолчанию youtube-dl пытается загрузить лучшее качество, но иногда вы можете захотеть загрузить другой формат. Простейшим случаем является запрос определенного формата, например -f 22. Вы можете получить список доступных форматов с помощью --list-formats, вы также можете использовать расширение файла (в настоящее время оно поддерживает aac, m4a, mp3, mp4, ogg, wav, webm) или специальные имена best, bestvideo, bestaudio и worst.

Если вы хотите загрузить несколько видео, и у них нет доступных одинаковых форматов, вы можете указать порядок предпочтений с помощью косых черт, как в-f 22/17/18. Вы также можете отфильтровать результаты видео, заключив условие в квадратные скобки, как в -f "best[height=720]" (или -f "[filesize>10M]">>). Это работает для размера файла, высоты, ширины, tbr, abr, vbr, asr и кадров в секунду, а также для сравнений <, <=, , =, =, != и для ext, codec, vcodec, контейнера и протокола, а также сравнения =, != . Форматы, для которых значение неизвестно, исключаются, если только вы не поставите знак вопроса (?) после оператора. Вы можете комбинировать фильтры формата, так что -f "[height <=? 720][tbr>500]" выбирает видео с разрешением до 720p (или видео, высота которых неизвестна) с битрейтом не менее 500 КБит/с.

Используйте запятые для загрузки нескольких форматов, таких как -f 136/137/mp4/bestvideo,140/m4a/bestaudio. Вы можете объединить видео и аудио двух форматов в один файл с помощью -f <video-format>+<audio-format> (требуется ffmpeg или avconv), например -f bestvideo+bestaudio.

С конца апреля 2015 года и версии 2015.04.26 youtube-dl использует -f bestvideo+bestaudio/best в качестве выбора формата по умолчанию (см. #5447, #5456). Если установлены ffmpeg или avconv, это приводит к загрузке bestvideo и bestaudio по отдельности и объединению их в один файл, обеспечивающий наилучшее общее доступное качество. В противном случае он возвращается к лучшему и приводит к загрузке наилучшего доступного качества в виде одного файла. best также необходим для видео, которые не поступают с YouTube, потому что они не предоставляют аудио и видео в двух разных файлах. Если вы хотите загружать только некоторые форматы dash (например, если вы не заинтересованы в получении видео с разрешением выше 1080p), вы можете добавить -f bestvideo[height<=?1080]+bestaudio/best в ваш конфигурационный файл. Обратите внимание, что если вы используете youtube-dl для потоковой передачи в stdout (и, скорее всего, затем передаете его в свой медиаплеер), т.Е. вы явно указываете шаблон вывода как -o -, youtube-dl по-прежнему использует -f best выбор формата для того, чтобы немедленно начать доставку контента на ваш плеер, а не ждать, пока bestvideo и bestaudio будут загружены и мультиплексированы.

Если вы хотите сохранить старое поведение выбора формата (до youtube-dl 2015.04.26), т.е. вы хотите загружать медиафайлы наилучшего доступного качества в виде одного файла, вы должны явно указать свой выбор с помощью -f best. Возможно, вы захотите добавить его в конфигурационный файл (#configuration), чтобы не вводить его каждый раз при запуске youtube-dl.

...

Не могли бы вы, пожалуйста, вернуть опцию -b обратно?

Большинство людей, задающих этот вопрос, не знают, что youtube-dl теперь по умолчанию загружает самое высокое доступное качество, как сообщает YouTube, которое в некоторых случаях будет 1080p или 720p, поэтому вам больше не нужна опция -b. Для некоторых конкретных видео, возможно, YouTube не сообщает, что они доступны в определенном формате высокого качества, который вас интересует. В этом случае просто запросите его с помощью -f опция и youtube-dl попытаются загрузить его.

Youtube (вероятно, так оно и есть предполагаемый чтобы быть сайтом для воспроизведения видео) также, по-видимому, сжимает звук (см. здесь) до 120 ~ Кбит / с, что довольно низко, но по большей части кажется нормальным.

Чтобы сравнить загруженные видео, вы можете запросить загруженные видео / аудиодорожки (возможно, вам потребуется использовать avprobe вместо ffprobe), чтобы увидеть, что лучше:

$ ffprobe -hide_banner output-output-loads-of-options.webmInput #0, matroska,webm, from 'output-output-loads-of-options.webm':  Metadata:    encoder         : google  Duration: 00:04:02.63, start: 0.000000, bitrate: 118 kb/s    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp (default)$ ffprobe -hide_banner output_with_just_-x.ogg Input #0, ogg, from 'output_with_just_-x':  Duration: 00:04:02.65, start: 0.000000, bitrate: 117 kb/s    Stream #0:0(eng): Audio: vorbis, 44100 Hz, stereo, fltp, 128 kb/s    Metadata:      LANGUAGE        : eng      ENCODER         : Lavf56.4.101

вы можете передать m4a в avconv для преобразования в mp3