Как скачать видео с YouTube как аудио лучшего качества, используя 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

4 ответа

Решение

От 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), очень легко получить аудио ссылку, и вы можете скачать напрямую, если хотите:

#python3
import pafy
video = pafy.new('video id or video url')
bestaudio = video.getbestaudio()
bestaudio.bitrate #get bit rate
bestaudio.extension #extension of audio fileurl
...
bestaudio.url #get url
...
#download if you want
bestaudio.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 и худший.

Если вы хотите загрузить несколько видео, и они не имеют одинаковые форматы, вы можете указать порядок предпочтений, используя косую черту, как в -f 22/17/18, Вы также можете отфильтровать результаты видео, поместив условие в скобки, как в -f "best[height=720]" (или же -f "[filesize>10M]"). Это работает для размера файла, высоты, ширины, tbr, abr, vbr, asr и fps и сравнений <, <=,>, >=, =,!= И для ext, кодека, 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 по отдельности и объединению их в один файл, обеспечивая наилучшее общее доступное качество. В противном случае он возвращается к лучшему и приводит к загрузке наилучшего доступного качества в виде одного файла. Лучшее также нужно для видео, которые не приходят с YouTube, потому что они не предоставляют аудио и видео в двух разных файлах. Если вы хотите загрузить только некоторые форматы тире (например, если вы не заинтересованы в получении видео с разрешением выше 1080p), вы можете добавить -f bestvideo[height<=?1080]+bestaudio/best в ваш файл конфигурации. Обратите внимание, что если вы используете youtube-dl для потоковой передачи на стандартный вывод (и, скорее всего, затем направите его на медиаплеер), то есть вы явно указываете шаблон вывода как -o -, YouTube-DL по-прежнему использует -f best выбор формата, чтобы немедленно начать доставку контента на плеер, а не ждать, пока bestvideo и bestaudio будут загружены и смешаны.

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

...

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

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

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

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

$ ffprobe -hide_banner output-output-loads-of-options.webm
Input #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
Другие вопросы по тегам