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

yt-dlp и ffmpeg: зачем он нужен, как установить и какие команды его используют

Автор Команда TunelioОпубликовано

Без ffmpeg yt-dlp может сохранить только то, что YouTube отдаёт одним файлом — обычно 360p или 720p со встроенным звуком. Всё выше приходит отдельными видео- и аудиопотоками, которые ffmpeg должен слить, а каждая конвертация в MP3 — работа ffmpeg. Установите его один раз, добавьте в PATH (или укажите --ffmpeg-location), и предупреждение «ffmpeg not found», пропавшее 1080p и неудачные -x исчезнут.

Что ffmpeg делает для yt-dlp

  • Слияние: YouTube отдаёт 1080p, 1440p и 4K отдельными DASH-потоками (только видео и только аудио). yt-dlp скачивает оба и просит ffmpeg собрать их в один MP4 или MKV.
  • Извлечение аудио: -x --audio-format mp3 (или m4a, opus, flac, wav) — это транскодирование или ремукс силами ffmpeg.
  • Постобработка: встраивание обложек и метаданных, нарезка по главам, ремукс WebM в MP4, исправление контейнера, загрузка HLS/m3u8 для некоторых сайтов.

Если yt-dlp пишет «WARNING: ffmpeg not found» или «You have requested merging of multiple formats but ffmpeg is not installed», он тихо откатывается на лучший однофайловый формат — поэтому столько людей «получают только 720p».

Установка ffmpeg

Linux

sudo apt install ffmpeg        # Debian / Ubuntu
sudo dnf install ffmpeg        # Fedora (сначала включите RPM Fusion)
sudo pacman -S ffmpeg          # Arch
ffmpeg -version

macOS

brew install ffmpeg

Windows

winget install Gyan.FFmpeg      # или: choco install ffmpeg  /  scoop install ffmpeg
# затем откройте НОВЫЙ терминал, чтобы PATH обновился, и проверьте:
ffmpeg -version

Проект yt-dlp публикует и собственные сборки ffmpeg (yt-dlp/FFmpeg-Builds на GitHub) с патчами для редких случаев; большинству хватает пакета дистрибутива. yt-dlp нужны исполняемые файлы ffmpeg и ffprobe — оба есть в каждом пакете выше.

Укажите yt-dlp, где ffmpeg

# если ffmpeg не в PATH (портативные сборки Windows, свои пути):
yt-dlp --ffmpeg-location "C:\ffmpeg\bin" "URL"
yt-dlp --ffmpeg-location /opt/ffmpeg/bin/ffmpeg "URL"

# навсегда — в конфиге yt-dlp (~/.config/yt-dlp/config или %APPDATA%\yt-dlp\config.txt):
--ffmpeg-location /opt/ffmpeg/bin

--ffmpeg-location принимает либо каталог с ffmpeg/ffprobe, либо путь к самому бинарнику ffmpeg. Проверьте через yt-dlp -v: отладочный заголовок печатает найденную версию ffmpeg или «ffmpeg: none».

Команды, использующие ffmpeg

MP4 лучшего качества (видео + аудио слиты)

# лучшее видео + лучшее аудио, слитые в MP4
yt-dlp -f "bv*+ba/b" --merge-output-format mp4 "https://youtu.be/dQw4w9WgXcQ"

# предпочесть H.264 + AAC, чтобы файл играл везде без перекодирования
yt-dlp -S "res:1080,vcodec:h264,acodec:m4a" --merge-output-format mp4 "URL"

Слияние — это ремукс, а не перекодирование: секунды и без потери качества. Перекодирование происходит только по запросу через --recode-video или если кодеки не умещаются в выбранный контейнер (VP9 в MP4 — нормально; Opus в MP4 — нет, тогда yt-dlp откатывается на MKV).

Извлечь аудио

yt-dlp -x --audio-format mp3 --audio-quality 0 "URL"   # MP3, лучший VBR
yt-dlp -x --audio-format best "URL"                   # оставить исходный Opus/AAC без транскодирования

Встроить обложку и метаданные

yt-dlp -x --audio-format mp3 --embed-thumbnail --embed-metadata "URL"

Вырезать фрагмент

yt-dlp --download-sections "*00:01:00-00:02:30" -f "bv*+ba/b" "URL"

Частые ошибки ffmpeg с yt-dlp

  • «ffmpeg not found» после установки → откройте новый терминал (Windows читает PATH при запуске) или передайте --ffmpeg-location.
  • «Postprocessing: Conversion failed!» → обычно повреждённая частичная загрузка; удалите .part и повторите либо обновите yt-dlp — старые сборки отдают ffmpeg битые фрагменты.
  • «ffmpeg exited with code 1» при слиянии → проверьте место на диске и права на каталог вывода; запустите с -v, чтобы увидеть stderr самого ffmpeg.
  • 1080p всё ещё нет при установленном ffmpeg → YouTube не предложил его вашему клиенту; попробуйте другой клиент плеера или проверьте предупреждение о PO-токене (см. руководство по 403).
  • Очень старый ffmpeg (до 4.x) → часть опций и кодеков не работает; обновите — yt-dlp рассчитывает на относительно свежую сборку.

Docker

FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg curl unzip \
 && pip install --no-cache-dir "yt-dlp[default]" \
 && curl -fsSL https://deno.land/install.sh | DENO_INSTALL=/usr/local sh
ENTRYPOINT ["yt-dlp"]

Контейнеру для полной поддержки YouTube сегодня нужны три вещи: yt-dlp, ffmpeg и JavaScript-рантайм (Deno). Пересобирайте образ регулярно — см. руководство по обновлению.

Когда ffmpeg вообще не хочется запускать

Слияние и транскодирование — это CPU, за который вы платите на каждой загрузке; на сервере, обслуживающем пользователей, это быстро накапливается, плюс ещё один бинарник, который надо патчить. Хостинговый API возвращает уже собранный MP4 или готовый MP3 одной подписанной ссылкой, так что с вашей стороны остаётся один HTTP-запрос. Tunelio — наш сервис, учитывайте это; для локального использования ffmpeg плюс yt-dlp — правильный инструмент. Новые аккаунты получают 100 бесплатных кредитов.

Источники

  • README yt-dlp — Dependencies (ffmpeg/ffprobe), опции постобработки, --ffmpeg-location.
  • yt-dlp/FFmpeg-Builds — патченные сборки ffmpeg от проекта.
  • ffmpeg.org — официальная загрузка и документация.

Частые вопросы

ffmpeg обязателен для yt-dlp?

Для запуска — нет, но для YouTube фактически да: всё выше 720p и любая конвертация аудио требуют его. Без ffmpeg вы получаете только лучший однофайловый формат.

Слияние снижает качество?

Нет. Слияние — это ремукс: потоки копируются в новый контейнер без перекодирования. Качество теряется только при транскодировании, например в MP3.

yt-dlp говорит, что ffmpeg не найден, хотя он установлен — почему?

Он не в том PATH, который видит yt-dlp (типично на Windows сразу после установки, а также в cron/Docker). Откройте новый терминал или передайте --ffmpeg-location с папкой, где лежит ffmpeg.exe.

Нужен ли ещё ffprobe?

Да, yt-dlp использует ffprobe в некоторых постпроцессорах. Он входит в любой стандартный пакет ffmpeg.

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