Перейти к содержимому

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; перекодирует только если выбранный источник был Opus

iPhone, 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). Без транскодирования и потерь.

Похожие руководства