yt-dlp
yt-dlp — форк youtube-dl, активный в 2021 году после фактической остановки оригинального проекта. Сегодня это де-факто стандарт для скачивания видео и аудио с YouTube, VK-видео, Rutube, Vimeo, Twitch, SoundCloud и ещё ~1800 сайтов. Написан на Python, лицензия Unlicense.
Сайт: github.com/yt-dlp/yt-dlp
Когда использовать
✅ Подходит, если нужно:
- скачать видео или аудио с YouTube, VK, Rutube, Twitch, SoundCloud и других платформ;
- получить максимальное качество (4K, HDR, отдельные дорожки видео/аудио);
- сохранить субтитры, метаданные, превью в одном проходе (
--write-info-json --write-subs --write-thumbnail); - вести инкрементальный архив канала/плейлиста через
--download-archive(повторный запуск пропускает уже скачанные).
❌ Не лучший выбор, если:
- нужны только изображения и галереи — gallery-dl;
- нужно сохранить HTML-страницу с плеером (а не сам файл) — Browsertrix Crawler + yt-dlp;
- нужны только аудио-подкасты — gallery-dl + yt-dlp;
- контент защищён DRM — yt-dlp не обходит Widevine/PlayReady.
Зачем нужен архивисту
Видеохостинги умирают: видео удаляют, каналы банят, плееры ломаются. Единственный надёжный способ сохранить ролик — скачать оригинальный файл или хотя бы его манифест (DASH/HLS). yt-dlp:
- Скачивает исходный медиа-файл в максимальном качестве.
- Сохраняет метаданные: title, описание, теги, имя автора, дата.
- Пишет субтитры (в т.ч. авто-сгенерированные) в SRT/VTT.
- Пишет JSON с полной информацией о ролике (для индексирования).
- Обходит защиты — нативная поддержка PO Token, visitor Data, mweb-клиента.
- Работает в Docker — для серверов без Python.
Возможности
- 1800+ поддерживаемых сайтов через систему экстракторов.
- Выбор качества: best, worst, конкретный формат (
-f 137+140). - Слияние видео + аудио через ffmpeg.
- Загрузка плейлистов и каналов целиком.
- Субтитры: ручные, авто, перевод.
- Пост-процессинг: ffmpeg, метаданные, превью, спонсор-блок.
- SponsorBlock-интеграция: вырезание/маркировка спонсорских вставок.
- Прямая запись в архив через
--download-archive(текстовый файл с ID). - WARC-вывод через
--write-pagesиyt-dlp[default]+ обёртки. - Возобновление загрузки и повторы при сбое.
- Cookies и аутентификация.
- Proxy, custom headers, custom player_client.
- JSON-метаданные для каждого видео.
- Live streams (запись в реальном времени).
Когда использовать
✅ Подходит для:
- Скачивания видео с YouTube, VK Video, Rutube, Vimeo, Twitch и т.д.
- Загрузки аудио (подкасты, музыка).
- Массовой архивации каналов/плейлистов.
- Извлечения субтитров (для исследований, NLP).
- Live-записи стримов.
- Сбора метаданных для каталогизации.
❌ Не подходит для:
- Скачивания страниц целиком с комментариями и сайдбаром (для этого — Browsertrix).
- Скачивания изображений/галерей (для этого — gallery-dl).
- Обхода DRM (Widevine и т.п.) — это техни чески возможно, но юридически запрещено в большинстве юрисдикций.
- Стриминговых платформ с paywall (Netflix, Кинопоиск) — без авторизации.
Установка
Через пакетные менеджеры (рекомендуется)
# macOS
brew install yt-dlp
# Linux (pipx — изолированная установка)
pipx install yt-dlp
# Ubuntu/Debian (PPA)
sudo add-apt-repository ppa:yt-dlp/ppa
sudo apt update && sudo apt install yt-dlp
# Arch
sudo pacman -S yt-dlp
# Windows
winget install yt-dlp
choco install yt-dlp
Через pip
pip install -U yt-dlp
Готовые бинарники (без зависимостей)
# Linux/macOS
sudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp \
-o /usr/local/bin/yt-dlp
sudo chmod a+rx /usr/local/bin/yt-dlp
Docker
docker run --rm -u $(id -u):$(id -g) \
-v $(pwd):/work \
ghcr.io/yt-dlp/yt-dlp \
https://www.youtube.com/watch?v=VIDEO_ID
Зависимости
- Python 3.9+ (для pip-установки).
- ffmpeg — для слияния видео/аудио и пост-процессинга.
# Linux
sudo apt install ffmpeg
# macOS
brew install ffmpeg
Использование
Скачать одно видео
yt-dlp "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
По умолчанию скачает лучшее качество видео + аудио, смерджит через ffmpeg.
Скачать только аудио (mp3)
yt-dlp -x --audio-format mp3 "https://www.youtube.com/watch?v=VIDEO_ID"
-x — extract audio. Добавьте --audio-quality 0 для максимального качества.
Выбрать качество
# Лучшее видео до 1080p + лучшее аудио
yt-dlp -f "bestvideo[height<=?1080]+bestaudio" URL
# Только 720p
yt-dlp -f "bestvideo[height<=720]+bestaudio" URL
# Конкретный формат (список через -F)
yt-dlp -F URL # показать доступные форматы
yt-dlp -f 137+140 URL
Скачать плейлист
yt-dlp "https://www.youtube.com/playlist?list=PLxxxxxx"
# С диапазоном
yt-dlp --playlist-items 1-10 "https://www.youtube.com/playlist?list=PLxxxxxx"
# С начала до 50-го видео
yt-dlp --playlist-items "1-50" URL
Скачать весь канал
yt-dlp "https://www.youtube.com/@ChannelName"
С субтитрами и метаданными
yt-dlp --write-subs --write-auto-subs --sub-langs "ru,en" \
--write-info-json --write-thumbnail \
--write-description \
URL
Файлы на выходе:
Title [VIDEO_ID].mp4— видео.Title [VIDEO_ID].info.json— все метаданные.Title [VIDEO_ID].ru.vtt,.en.vtt— субтитры.Title [VIDEO_ID].jpg— превью.
С ограничением скорости (для вежливого скачивания)
yt-dlp --limit-rate 5M URL
С cookies (для приватных/age-restricted видео)
# Экспорт cookies из браузера
yt-dlp --cookies-from-browser firefox URL
# Из файла
yt-dlp --cookies cookies.txt URL
Возобновление после обрыва
yt-dlp -c URL
Архив скачанных (чтобы не качать повторно)
yt-dlp --download-archive archive.txt "https://www.youtube.com/playlist?list=PLxxxx"
Каждое успешно скачанное видео запишется в archive.txt. При повторном запуске — будет пропущено.
Удалить спонсорские вставки (SponsorBlock)
yt-dlp --sponsorblock-mark all URL # пометить
yt-dlp --sponsorblock-remove sponsor URL # вырезать
Через прокси (Tor, VPN, корпоративный)
yt-dlp --proxy "socks5://127.0.0.1:9050" URL
Конфигурация
~/.config/yt-dlp/config (Linux/macOS)
# Формат имени файла
-o %(uploader)s/%(playlist_index)s - %(title)s [%(id)s].%(ext)s
# Аутентификация (cookies из браузера по умолчанию)
--cookies-from-browser firefox
# Ограничения
--limit-rate 10M
--concurrent-fragments 4
# Субтитры
--write-auto-subs --sub-langs ru,en
# Метаданные
--write-info-json --write-thumbnail
# Архив
--download-archive ~/.yt-dlp-archive.txt
# SponsorBlock
--sponsorblock-remove sponsor,selfpromo
# Лог
--console-title --progress-template "downloading %(progress._percent_str) of %(progress._total_bytes_str)"
yt-dlp.conf (Windows)
-o C:\Users\user\Videos\%(title)s [%(id)s].%(ext)s
--write-info-json
--download-archive C:\Users\user\yt-dlp-archive.txt
Сравнение с другими инструментами
| Инструмент | Сайтов | Видео | Live | SponsorBlock | Язык |
|---|---|---|---|---|---|
| yt-dlp | 1800+ | ✅ | ✅ | ✅ | Python |
| youtube-dl | 1200+ | ✅ | ⚠️ | ❌ | Python |
| gallery-dl | 200+ | ❌ | ❌ | ❌ | Python |
| newpipe | ~30 | ✅ | ✅ | ✅ | Java (Android) |
| lux | 30+ | ✅ | ❌ | ❌ | Go |
| you-get | 80+ | ✅ | ❌ | ❌ | Python |
Когда yt-dlp лучше всех
- Нужно максимальное качество (4K, HDR, high-bitrate audio).
- Нужны субтитры, метаданные, превью.
- Нужна обратная совместимость со старыми youtube-dl скриптами.
- Нужны новые фичи (PO Token, mweb client).
Когда лучше альтернативы
- Только YouTube на Android — NewPipe (без рекламы, без Google-аккаунта).
- Изображения, а не видео — gallery-dl.
- Минимализм и CLI без зависимостей — lux.
Best practices
1. Используйте --write-info-json всегда
Метаданные бесценны при каталогизации. info.json содержит всё: описание, теги, статистику, форматы, время публикации, имя загруженных субтитров.
2. SponsorBlock — для архивирования подкастов, обзоров, геймплея
yt-dlp --sponsorblock-remove all URL
3. Параллельная загрузка плейлистов
yt-dlp --concurrent-fragments 8 --parallel 4 "https://www.youtube.com/playlist?list=PLxxxx"
--parallel 4 — одновременно 4 плейлиста, --concurrent-fragments 8 — 8 фрагментов на каждый.
4. Регулярные выгрузки через cron
# Каждое воскресенье в 4 утра — обновить архив канала
0 4 * * 0 /usr/local/bin/yt-dlp \
--download-archive /opt/yt-dlp/archive.txt \
--output "/opt/yt-dlp/%(uploader)s/%(upload_date)s - %(title)s [%(id)s].%(ext)s" \
--write-info-json --write-thumbnail --write-subs --sub-langs ru,en \
"https://www.youtube.com/@ChannelName" \
>> /var/log/yt-dlp.log 2>&1