yt-dlp в MP3: правильная команда, настройки качества и метаданные
Автор Команда TunelioОпубликовано
Достаточно одной строки: yt-dlp -x --audio-format mp3 --audio-quality 0 URL. yt-dlp скачивает лучший аудиопоток YouTube (обычно Opus или AAC), а ffmpeg конвертирует его в VBR MP3. Ниже: что значат флаги, как выбрать битрейт, встроить обложку и теги, работать с плейлистами и когда в MP3 конвертировать вообще не стоит.
Команда
yt-dlp -x --audio-format mp3 --audio-quality 0 "https://youtu.be/dQw4w9WgXcQ"- -x (--extract-audio): скачать только аудиопоток и запустить аудио-постпроцессор.
- --audio-format mp3: перекодировать результат в MP3 через ffmpeg (обязателен — см. ниже).
- --audio-quality 0: лучшее качество VBR (0 = лучшее, 10 = худшее, или фиксированный битрейт вроде 192K).
Нужен ffmpeg в PATH или через --ffmpeg-location; без него yt-dlp пишет «ffmpeg not found» и сохраняет исходный .webm/.m4a вместо MP3. Установка описана в руководстве по ffmpeg.
Битрейт: что выбрать
--audio-quality 0 # VBR ~220–260 кбит/с, лучшее качество (рекомендуется)
--audio-quality 5 # VBR ~120–150 кбит/с, маленькие файлы
--audio-quality 192K # постоянные 192 кбит/с для плееров, не любящих VBRИсходное аудио YouTube — максимум около 128 кбит/с AAC или ~160 кбит/с Opus. MP3 не добавит качества, которого не было, поэтому 320K в основном увеличивает размер; VBR 0 сохраняет всё, что есть в источнике. Любая конвертация в MP3 — транскодирование lossy-в-lossy: если MP3 не нужен именно как формат, оставьте оригинал (следующий раздел).
А нужен ли вам MP3?
yt-dlp -x --audio-format best "URL" # оставить исходный Opus (.webm/.opus) или AAC (.m4a) — без транскодирования
yt-dlp -x --audio-format m4a "URL" # AAC в .m4a: играет на устройствах Apple и большинстве плееровMP3 — правильный выбор для старых автомагнитол, некоторых подкаст-приложений и всего, что понимает только MP3. Для телефонов, браузеров и современных плееров исходный Opus или AAC меньше и звучит лучше. Подробнее — в руководстве webm vs mp3.
Обложка, название, исполнитель
yt-dlp -x --audio-format mp3 --audio-quality 0 \
--embed-thumbnail --embed-metadata \
--parse-metadata "title:%(artist)s - %(title)s" \
"URL"--embed-thumbnail записывает превью видео как обложку ID3 (yt-dlp сам конвертирует WebP в JPEG). --embed-metadata заполняет теги: название, автор, дата, описание. Строка --parse-metadata разбивает имена вида «Исполнитель - Название» на поля artist и title, если автор использовал эту конвенцию.
Имена файлов и папки
yt-dlp -x --audio-format mp3 -o "~/Music/%(uploader)s/%(title)s.%(ext)s" "URL"
# плейлист: нумерованные файлы в папке с именем плейлиста
yt-dlp -x --audio-format mp3 -o "%(playlist)s/%(playlist_index)02d - %(title)s.%(ext)s" "PLAYLIST_URL"Используйте %(ext)s, а не жёсткое .mp3: yt-dlp сначала скачивает с исходным расширением и переименовывает после конвертации. --restrict-filenames заменяет пробелы и спецсимволы, если плеер капризный.
Плейлисты и каналы
yt-dlp -x --audio-format mp3 --audio-quality 0 \
--download-archive done.txt --ignore-errors \
--sleep-interval 2 --max-sleep-interval 6 \
"https://www.youtube.com/playlist?list=PL..."--download-archive запоминает готовые видео, чтобы повторные запуски брали только новые; --ignore-errors пропускает удалённые или приватные элементы вместо прерывания; флаги sleep держат массовые запуски в пределах лимитов YouTube — что бывает без них, описано в руководстве по бот-проверке.
Сохраните как конфиг
# ~/.config/yt-dlp/config (Windows: %APPDATA%\yt-dlp\config.txt)
-x
--audio-format mp3
--audio-quality 0
--embed-thumbnail
--embed-metadata
-o ~/Music/%(title)s.%(ext)sС таким конфигом достаточно yt-dlp URL. Для разовой загрузки видео используйте --ignore-config.
Частые проблемы
- На выходе .webm или .m4a вместо .mp3 → нет ffmpeg; установите или передайте --ffmpeg-location.
- «Postprocessing: Conversion failed!» → повреждённая частичная загрузка или очень старый ffmpeg; удалите .part, обновите оба инструмента, повторите.
- Нет обложки → --embed-thumbnail требует ffmpeg и для части файлов Python-пакет mutagen (входит в официальные бинарники и yt-dlp[default]).
- Медленные загрузки, 403, бот-проверка → это не проблема MP3; обновите yt-dlp и пройдите руководства по 403 и бот-проверке.
- Не та дорожка на многоязычных видео → выберите через -f 'ba[language=ru]' или посмотрите список дорожек в yt-dlp -F.
MP3 через API
Если MP3 — функция вашего бота или приложения, а не личная загрузка, описанный пайплайн (yt-dlp плюс ffmpeg плюс чистый IP) становится инфраструктурой, которую нужно запускать и патчить. Хостинговый API возвращает готовую ссылку на MP3 одним запросом:
curl "https://tunelio.dev/create?url=https://youtu.be/dQw4w9WgXcQ&quality=mp3" \
-H "Authorization: Bearer tnl_your_api_key"
# → { "url": "https://…/tunnel?id=…&sig=…", "file_size_str": "3.29 MB", "status": "ok" }Tunelio — наш сервис; для личного использования достаточно команды в начале страницы. Новые аккаунты получают 100 бесплатных кредитов, карта не нужна.
Источники
- README yt-dlp — опции постобработки (-x, --audio-format, --audio-quality, --embed-*), шаблон вывода.
- README yt-dlp — выбор и сортировка форматов (-f, -S).
- Документация ffmpeg — шкала качества VBR libmp3lame.
Частые вопросы
--audio-quality 0 — это 320 кбит/с?
Нет. 0 — лучшая настройка VBR (примерно 220–260 кбит/с в зависимости от материала). Источник YouTube всё равно ~128–160 кбит/с, так что 320K только увеличивает файлы.
Почему получился .webm, а не .mp3?
ffmpeg не установлен или не в PATH, и yt-dlp оставил исходный аудиоконтейнер. Установите ffmpeg или передайте --ffmpeg-location.
Можно скачать весь плейлист в MP3?
Да: дайте yt-dlp ссылку на плейлист и добавьте --download-archive и --ignore-errors, чтобы повторные запуски были инкрементальными, а битые элементы не останавливали пакет.
Теряется ли качество при конвертации в MP3?
Немного — это второе lossy-кодирование поверх Opus/AAC YouTube. Используйте --audio-format best, чтобы оставить оригинал, если плеер его поддерживает.