yt-dlp аудио: WebM/Opus, M4A/AAC или MP3 — что оставить?
Автор Команда TunelioОпубликовано
YouTube не хранит MP3. Его аудиопотоки — Opus в контейнере WebM (до ~160 кбит/с) и AAC в M4A (~128 кбит/с). yt-dlp -x отдаёт один из них нетронутым; запрос MP3 заставляет ffmpeg перекодировать, теряя немного качества и тратя CPU. Оставляйте WebM/Opus ради качества и размера, M4A — для устройств Apple и широкой совместимости, MP3 — только когда плеер не понимает ничего другого.
Что YouTube отдаёт на самом деле
yt-dlp -F "https://youtu.be/dQw4w9WgXcQ"
# ID EXT ... ACODEC ABR
# 249 webm opus ~50k (низкий)
# 250 webm opus ~70k (средний)
# 251 webm opus ~130–160k (высокий) ← обычно "bestaudio"
# 140 m4a aac ~128kЭто единственные аудиодорожки обычного видео (у части видео есть ещё AAC повыше или многоязычные дорожки). Что бы вы ни получили в итоге — MP3, FLAC, WAV — оно сделано из одного из этих потоков и не может быть лучше ~160 кбит/с Opus или ~128 кбит/с AAC.
Три варианта
Оставить оригинал (WebM/Opus или M4A/AAC) — лучшее качество, без транскодирования
yt-dlp -x --audio-format best "URL" # оставляет bestaudio как есть (обычно .webm/.opus)
yt-dlp -f bestaudio "URL" # тот же поток вообще без постобработкиНоль потерь, мгновенно, самый маленький файл для этого качества. Opus нативно играет в любом современном браузере, Android, VLC, Windows 10+ и большинстве десктопных плееров. --audio-format best ещё и ремуксит .webm в .opus, когда возможно, чтобы теггеры его узнавали.
M4A (AAC) — дружит с Apple, тоже без транскодирования, если источник AAC
yt-dlp -f 'ba[ext=m4a]' "URL" # взять дорожку AAC как есть (itag 140)
yt-dlp -x --audio-format m4a "URL" # AAC в .m4a; перекодирует только если выбранный источник был OpusiPhone, iPad, iTunes/Music и многие автомобильные системы понимают M4A, но не Opus. Прямой выбор дорожки AAC исключает перекодирование; ~128 кбит/с AAC достаточно для речи и большинства музыки.
MP3 — максимальная совместимость, всегда перекодирование
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"MP3 нужен, когда его действительно требует устройство: старые автомагнитолы, дешёвые MP3-плееры, некоторые подкаст-платформы и устаревшие инструменты. Транскодирование lossy-в-lossy стоит времени ffmpeg; VBR 0 сводит потери к минимуму. Подробности — в руководстве по MP3.
Бок о бок
- Качество: WebM/Opus > M4A/AAC ≳ MP3 (при равном битрейте Opus — самый эффективный кодек из трёх, MP3 — наименее).
- Размер 4-минутной песни: Opus 160k ≈ 4,7 МБ · AAC 128k ≈ 3,8 МБ · MP3 VBR 0 ≈ 6–8 МБ.
- Совместимость: MP3 везде · AAC/M4A везде, кроме нескольких очень старых плееров · Opus везде, кроме старых устройств Apple и части автомобильных систем.
- CPU: оригинал = ничего · M4A из AAC = ничего · MP3 = несколько секунд на трек (важно в масштабе).
- Метаданные и обложка: все три поддерживают теги через --embed-metadata --embed-thumbnail.
Выбор по задаче
- Личная библиотека на телефоне/компьютере → оригинал (--audio-format best).
- Экосистема Apple, машина через USB → M4A (-f 'ba[ext=m4a]').
- Подкаст-лента, старое железо, неизвестные плееры → MP3 VBR 0.
- Речь для транскрибации или ML → оставьте Opus или запросите сразу транскрипт вместо аудио.
- Архив → оригинальный поток; перекодировать можно потом, обратно — никогда.
Типичные ошибки
- «--audio-format mp3 --audio-quality 320K для лучшего качества» — источник ~160 кбит/с; вы увеличиваете файл, а не качество.
- Конвертировать Opus в M4A, когда есть дорожка AAC — выберите itag 140 и обойдитесь без перекодирования.
- Жёсткое .mp3 в -o — используйте %(ext)s, чтобы yt-dlp мог переименовать после конвертации.
- Ожидать, что FLAC/WAV будут lossless — это lossless-контейнеры для lossy-источника; больше, но не лучше.
В продукте
Если приложение отдаёт пользователям аудио, выбор формата становится серверной стоимостью: каждый MP3 — задача ffmpeg, каждый Opus — сквозная передача. Хостинговый API позволяет запрашивать на каждый вызов — quality=mp3 для готового MP3, quality=opus для исходного потока — и в обоих случаях возвращает ссылку. Tunelio — наш сервис; для личных загрузок хватит команд выше. Новые аккаунты получают 100 бесплатных кредитов.
Источники
- README yt-dlp — выбор форматов (-f, -S, bestaudio), --audio-format best.
- Вывод yt-dlp -F — таблица itag/кодеков любого видео.
- Кодек Opus (opus-codec.org) и документация ffmpeg libmp3lame — шкалы битрейта и качества.
Частые вопросы
WebM-аудио лучше MP3?
Да при одном источнике: WebM несёт исходный поток Opus YouTube нетронутым, а MP3 — второе lossy-кодирование поверх него. Opus к тому же эффективнее на килобит.
Будет ли Opus .webm играть на телефоне?
На Android, Windows, Linux, в VLC и любом современном браузере — да. Старые iPhone и часть автомобильных магнитол — нет; там используйте M4A.
yt-dlp скачивает MP3 прямо с YouTube?
Нет. У YouTube нет MP3-потоков; yt-dlp скачивает Opus или AAC, а ffmpeg конвертирует, когда вы просите --audio-format mp3.
Что делает --audio-format best?
Оставляет скачанное аудио в исходном кодеке, лишь ремуксируя контейнер (например .webm → .opus). Без транскодирования и потерь.