Как скачать видео с 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