yt-dlp — консольный загрузчик медиа для Windows, macOS и Linux: он получает доступные потоки, выбирает качество, сохраняет видео или аудио, работает с субтитрами, плейлистами и метаданными. На странице Xeon Live можно скачать yt-dlp бесплатно, а ниже разобрана практическая работа с программой — от первого запуска до автоматизации и диагностики.
У yt-dlp нет собственного графического окна: вся работа идёт через командную строку. Пользователь передаёт программе адрес страницы и добавляет параметры, а результат видит как последовательность стадий: определение подходящего обработчика сайта, чтение данных страницы, выбор форматов, загрузка потоков и постобработка. Такой интерфейс требует аккуратного ввода, зато одну и ту же команду легко повторить, перенести в пакетный файл или конфигурацию и использовать без ручного выбора одинаковых настроек при каждом запуске.
Программа ориентирована на пользователей, которым важны контроль форматов и воспроизводимость. Она подходит для единичного сохранения разрешённого к загрузке ролика, выгрузки собственного архива, получения аудиодорожки, субтитров и метаданных, а также для регулярной обработки плейлистов. Скачивать следует только материалы, на сохранение которых у пользователя есть право. Защищённые DRM-потоки не относятся к штатному сценарию yt-dlp: при такой защите правильное действие — остановиться, а не искать обход.
На Windows практичнее всего использовать официальный автономный исполняемый файл и положить его в отдельную папку, которая добавлена в PATH либо открывается как рабочий каталог терминала. На macOS и Linux доступны автономные сборки, Python-установка и системные менеджеры пакетов. Для объединения раздельных видео- и аудиопотоков, извлечения аудио, встраивания субтитров, перемультиплексирования и перекодирования нужен FFmpeg; в состав yt-dlp он не входит. Для современных сайтов также полезен поддерживаемый движок JavaScript, потому что часть извлечения зависит от исполнения кода сайта.
При автономной установке обновление выполняется встроенным механизмом yt-dlp, а версия из системного менеджера пакетов обновляется тем же менеджером. Смешивать способы установки без необходимости не стоит: несколько копий yt-dlp в PATH усложняют диагностику, потому что терминал запускает ту, которая встречается раньше. Проверка yt-dlp --version после обновления сразу показывает, какую копию видит текущая оболочка.
Вывод yt-dlp удобнее воспринимать как журнал конвейера. Строки с названием обработчика сайта показывают этап чтения страницы. Блок [info] сообщает, какие форматы выбраны. Блок [download] показывает путь назначения, объём, процент, скорость и оставшееся время. После загрузки появляются сообщения постобработчиков: например, объединение видео и аудио, перенос метаданных или преобразование контейнера. Ошибка на последнем этапе означает, что сетевое получение уже состоялось, а проблема возникла при обработке локального файла.
Для первичной проверки команды полезен режим --simulate: программа разбирает страницу и выбирает данные, но не пишет видео на диск. Для автоматизации доступны также -j и -J, которые печатают сведения в JSON. В обычной работе JSON не нужен, но он удобен, когда скрипт должен заранее проверить название, длительность, идентификатор, доступные форматы или другие поля до фактической загрузки.
Базовый рабочий цикл состоит из четырёх действий: проверить адрес, посмотреть доступные форматы, выбрать правило качества и проконтролировать итоговый файл. Такой порядок надёжнее, чем сразу копировать длинную команду из чужого примера. Форматы зависят от конкретного сайта и ролика, поэтому числовой идентификатор, найденный для одного материала, не следует переносить в постоянный скрипт для других страниц.
Начните с безопасного анализа. Скопируйте адрес страницы в браузере, убедитесь, что материал открывается с тем уровнем доступа, который у вас есть, затем в терминале выполните yt-dlp --simulate "URL". Успешный разбор завершается без создания медиафайла. Следом запустите yt-dlp -F "URL". Параметр -F выводит таблицу доступных вариантов и также работает без загрузки содержимого.
В таблице сначала смотрите не на номер формата, а на смысл колонок. EXT показывает контейнер, RESOLUTION — размер кадра, FPS — частоту кадров, VCODEC и ACODEC — кодеки. Строки с пометкой video only не содержат звука, audio only — видеоряда. Высокое разрешение нередко представлено именно парой раздельных потоков, которые после получения объединяет FFmpeg. Поэтому отсутствие звука у отдельной строки 1080p не означает, что итоговый файл будет немым: важен выбранный набор видео плюс аудио.
Для общего контекста по типам потоков и совместимости контейнеров полезно сверяться с материалом Xeon Live о видеокодеках и их совместимости. Это помогает отличать контейнер MP4 или WebM от кодека H.264, AV1 или VP9 и не путать смену контейнера с перекодированием.
Для разовой загрузки достаточно yt-dlp "URL": программа применит стандартный селектор и выберет предпочтительный вариант. Для повторяемых задач лучше задать смысловое правило. Ограничение по высоте до 1080 строк можно оформить как yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" "URL". Первая часть просит подходящее видео и лучшее аудио, а запасной вариант после косой черты допускает уже объединённый поток, когда отдельной пары нет.
Когда важнее совместимость, чем абсолютное качество, сортировку стоит задавать осознанно. Параметр -S меняет приоритет форматов. Например, yt-dlp -S "res:1080,fps" "URL" ставит разрешение около 1080p и затем частоту кадров в начало предпочтений. Для типового воспроизведения на бытовых устройствах имеет смысл отдельно учитывать кодек и контейнер, но не нужно заставлять yt-dlp перекодировать каждый ролик без причины: перекодирование тратит время и для потерьных кодеков обычно добавляет ещё одно поколение потерь.
После выбора правила запустите обычную загрузку и дождитесь завершающего сообщения. Затем проверьте три вещи: итоговый файл существует в ожидаемой папке, воспроизводятся и видео, и звук, а разрешение соответствует выбранному правилу. При работе с несколькими платформами дополнительно проверьте файл на том устройстве, где он будет использоваться. Для системного выбора контейнера и назначения можно использовать отдельное руководство Xeon Live о том, в какой формат сохранять видео для разных задач.
Чтобы не искать файл в текущем каталоге, задайте папку параметром -P: yt-dlp -P "D:/Media" "URL" на Windows или yt-dlp -P "$HOME/Videos" "URL" в Unix-подобной оболочке. В журнале строка Destination показывает фактический путь. При раздельном видео и аудио сначала появятся временные файлы отдельных потоков, затем FFmpeg объединит их в итоговый контейнер. Не оценивайте результат до завершения этой стадии.
Когда задача связана именно с YouTube, общую последовательность можно сопоставить с отдельной инструкцией Xeon Live о том, как сохранять видео с YouTube. В yt-dlp основная разница состоит в том, что выбор качества и обработка выполняются параметрами командной строки, а не кнопками интерфейса.
yt-dlp умеет получать не только итоговый видеоролик. Для медиатеки, расшифровки, монтажа и архива часто нужны отдельная аудиодорожка, субтитры, обложка и структурированные сведения о публикации. Эти сценарии лучше выполнять отдельными командами: так проще проверить, что именно сохранено, и не смешивать лишнюю перекодировку с обычной загрузкой.
Сначала решите, нужен ли конкретный формат или достаточно исходного аудиопотока. Для сохранения лучшего доступного аудио без принудительного преобразования используйте yt-dlp -f ba "URL". Расширение результата зависит от источника. Когда нужен MP3 для совместимости, выполните yt-dlp -f ba -x --audio-format mp3 "URL". Параметр -x запускает аудиопостобработку через FFmpeg, а --audio-format задаёт целевой формат.
Конвертация в MP3 не создаёт качества, которого нет в источнике. При исходном AAC, Opus или другом потерьном аудио преобразование в MP3 выполняет новое сжатие. Для архива лучше сохранить исходный поток либо выбрать формат, который нужен конечному устройству. Материал Xeon Live о том, как сохранять аудио с YouTube, полезен для сравнения с другими способами, а отдельный разбор формата MP3 помогает понять компромисс между совместимостью и повторным сжатием.
Проверка аудио выполняется после завершения ExtractAudio. Откройте файл, сравните длительность с исходным роликом и прослушайте начало, середину и конец. При массовой обработке дополнительно проверяйте расширение и размер, потому что пустой или очень короткий файл обычно указывает на ошибку доступа к потоку, а не на нормальный результат.
Сначала выполните yt-dlp --list-subs "URL". Команда покажет доступные ручные и автоматически созданные дорожки без загрузки видео. После этого сохраните нужные языки: yt-dlp --write-subs --sub-langs "ru,en" --sub-format "srt/best" --skip-download "URL". Для автоматических дорожек используйте --write-auto-subs. Когда субтитры требуется встроить в совместимый медиаконтейнер, применяется --embed-subs; отдельно сохранённые файлы удобнее для редактирования и проверки текста.
Для материалов с субтитрами на YouTube полезно сопоставить команды с инструкцией Xeon Live о том, как скачать видео с субтитрами. В yt-dlp стоит явно указывать язык, потому что обозначения дорожек у разных сайтов отличаются, а live chat в некоторых сценариях тоже представляется как субтитровая дорожка. Комбинация --sub-langs "all,-live_chat" сохраняет все доступные языки, кроме чата трансляции.
Метаданные сохраняются отдельно командой yt-dlp --write-info-json --skip-download "URL". Такой JSON содержит технические поля страницы и иногда персональные сведения, поэтому его не следует публиковать автоматически. Обложку можно получить через --write-thumbnail. Практичная последовательность для архива такова: сначала сохранить info.json и миниатюру без видео, проверить название, идентификатор и дату, затем запускать медиа-загрузку с тем же шаблоном имени. Это уменьшает риск потерять связь между файлом и исходной публикацией.
Большая сила yt-dlp проявляется не в одиночной команде, а в повторяемой схеме хранения. Путь, имя, порядок элементов плейлиста и журнал уже скачанных идентификаторов задаются параметрами, поэтому медиатеку можно обновлять без ручного переименования сотен файлов. Главный принцип — сначала выбрать стабильный шаблон, затем запустить короткий тест на двух-трёх элементах и только после этого обрабатывать весь список.
Параметр -o принимает шаблон, где поля в форме %(field)s подставляются из метаданных. Для архива канала подходит, например, -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s [%(id)s].%(ext)s". Идентификатор в квадратных скобках полезен даже при красивых названиях: два ролика нередко имеют одинаковый заголовок, а ID сохраняет однозначность. Папка создаётся из части шаблона до имени файла.
На Windows добавьте --windows-filenames, когда архив будет перемещаться между дисками и приложениями с жёсткими ограничениями имён. Параметр --restrict-filenames дополнительно ограничивает набор символов, что удобно для старых скриптов и сетевых хранилищ. Слишком агрессивная очистка делает названия менее читаемыми, поэтому в обычном локальном архиве достаточно Windows-совместимости и сохранения ID.
Когда передан адрес плейлиста или канала, yt-dlp обрабатывает последовательность элементов. Для контролируемого запуска сначала используйте --simulate, чтобы увидеть объём. Если адрес одновременно относится к отдельному ролику и плейлисту, --no-playlist ограничивает работу одним видео, а --yes-playlist явно выбирает список. Для диапазона элементов современный синтаксис -I "1:10" ограничивает первые десять позиций.
Чтобы не получать одни и те же файлы при каждом обновлении канала, используйте --download-archive archive.txt. После успешной загрузки идентификатор записывается в архив; при следующем запуске уже отмеченные элементы пропускаются. Этот файл нужно хранить вместе с конфигурацией и резервной копией, иначе новый компьютер воспримет старый плейлист как полностью необработанный.
Для набора несвязанных адресов создайте обычный текстовый файл, по одному адресу в строке, и выполните yt-dlp -a urls.txt. Такой способ удобнее длинной командной строки и позволяет временно пропускать строки комментариями. При большой очереди сначала запустите --simulate -a urls.txt, исправьте ошибки адресов и лишь затем снимите режим проверки. Для независимых материалов не используйте общий шаблон без ID: совпадающие названия являются типичной причиной путаницы.
Автоматизация не должна превращать программу в неконтролируемый сборщик. Ограничьте папку назначения, храните download-archive, задавайте понятный шаблон, проверяйте свободное место и периодически открывайте несколько случайных файлов. Эти меры важнее максимальной скорости: повреждённый или неправильно названный архив обнаруживается сразу, а не после сотен обработанных элементов.
Часть сайтов выдаёт разные данные анонимному и вошедшему пользователю. yt-dlp не получает дополнительные права сам по себе: он использует доступ, который уже есть у вашей браузерной сессии. Поэтому авторизацию стоит использовать только для материалов, которые открываются у вашей учётной записи, а файлы cookies рассматривать как секретные данные, сопоставимые с активной сессией.
Для интерактивной работы проще читать cookies прямо из профиля браузера: yt-dlp --cookies-from-browser firefox --simulate -v "URL". В подробном выводе видно, удалось ли прочитать профиль и сколько данных сессии извлечено. Поддерживаются распространённые браузеры, среди них Firefox, Chrome, Chromium, Edge, Brave, Opera, Safari, Vivaldi и Whale. Название профиля и системное хранилище при необходимости указываются в расширенной форме параметра.
Второй путь — файл Netscape cookies, передаваемый через --cookies cookies.txt. Такой файл способен содержать действующую сессию, поэтому его нельзя отправлять в чат, прикладывать к задаче, хранить в публичном репозитории или синхронизировать без защиты. После завершения разовой работы временный файл лучше удалить. Передача cookies не снимает ограничения прав и не делает доступным контент, которого нет у самой учётной записи.
При ошибке 403 или сообщении антибот-системы сначала обновите yt-dlp, затем повторите --simulate -v. Для сайтов, где доступ зависит от браузерной сессии и сетевого отпечатка, документация рекомендует использовать свежую сессию и согласованный заголовок браузера. Не добавляйте случайные заголовки из старых инструкций: они быстро устаревают и усложняют диагностику. Для потоковых страниц общий контекст по методам сохранения даёт руководство Xeon Live о том, как сохранить потоковое видео с сайта.
Современные извлекатели также используют JavaScript. yt-dlp поддерживает Deno, Node, QuickJS и Bun; в документации Deno имеет высший приоритет и используется как стандартный вариант, когда он доступен. При сообщении об отсутствии нужной среды, установите поддерживаемый движок и проверьте yt-dlp --js-runtimes deno --simulate "URL" либо соответствующее имя установленной среды. Для официальных исполняемых файлов дополнительные JS-компоненты поставляются по предусмотренной схеме; при пакетной установке состояние зависимостей проверяется отдельно.
Сетевую нестабильность не лечат увеличением числа потоков без контроля. Параметр -N 4 разрешает четыре одновременных фрагмента для DASH/HLS native и ускоряет только фрагментированные потоки. Начните с небольшого значения и сравните стабильность. При ограниченном сервере чрезмерная параллельность даёт больше ошибок и повторов, а не выигрыш. После изменения -N сравните итоговый размер и длительность с обычной загрузкой.
После базовых сценариев имеет смысл переносить повторяющиеся параметры в конфигурацию и использовать операции, которые действительно экономят время: загрузку только нужного временного участка, работу с главами, параллельные фрагменты и пресеты. Эти функции сильнее зависят от FFmpeg и структуры конкретного источника, поэтому каждую новую комбинацию сначала проверяйте на коротком материале.
Параметр --download-sections принимает название главы по регулярному выражению или временной диапазон с начальной звёздочкой. Пример: yt-dlp --download-sections "*00:01:30-00:03:00" "URL". Для такого режима требуется FFmpeg. После выполнения сравните длительность полученного файла с ожидаемыми 90 секундами и откройте первые и последние секунды: резка по потоковой структуре и опорным кадрам не всегда совпадает с монтажной точностью.
Когда в ролике есть внутренние главы, --split-chapters создаёт отдельные файлы по границам глав. SponsorBlock интегрирован отдельными параметрами: --sponsorblock-mark добавляет отметки, а --sponsorblock-remove default удаляет категории набора default там, где сервис предоставляет сегменты. Удаление меняет медиапоток, поэтому для важного архива сначала используйте маркировку или сохраните исходный файл. После удаления проверьте длительность, стыки и синхронность звука.
Для фрагментированных DASH/HLS потоков ускорение регулируется --concurrent-fragments N. Начните с 4, сравните скорость с N=1 и не увеличивайте значение, когда сервер отвечает нестабильно. Высокая параллельность полезна только там, где задержка отдельных фрагментов действительно является узким местом. Она не ускоряет постобработку FFmpeg и не помогает при ограничении скорости самим сайтом.
Конфигурация принимает те же параметры, что и командная строка. Для переносной установки бинарного файла удобно разместить yt-dlp.conf рядом с ним. В конфигурации можно задать постоянную папку, шаблон имени, правила субтитров и другие повторяемые настройки. Перед переносом параметров обязательно проверьте команду вручную: ошибка в конфигурации будет влиять на каждый последующий запуск, в том числе команды, где вы не ожидаете этой опции.
Практичный минимальный файл для локального архива содержит одну опцию на строку, например -P D:/Media, затем -o %(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s [%(id)s].%(ext)s и --download-archive D:/Media/archive.txt. Не добавляйте туда cookies, токены или пароли. Секреты должны передаваться отдельно и храниться с ограниченным доступом.
Алиасы сокращают длинные наборы параметров. Синтаксис --alias ALIASES OPTIONS создаёт собственную опцию. Например, алиас для извлечения MP3 можно построить на сочетании выбора лучшего аудио, -x и --audio-format mp3. После добавления алиаса выполните yt-dlp --help: определённые алиасы перечисляются в справке. Не задавайте алиасу имя существующей опции и не создавайте цепочку, которую трудно расшифровать при отладке.
При изменении конфигурации полезно временно запускать команду без пользовательских настроек и сравнивать вывод. Цель — понимать, какие параметры пришли из файла, а какие указаны вручную. Если результат внезапно стал другого формата или начал сохраняться в неожиданную папку, первым делом проверьте конфигурационные файлы, а не сетевую часть.
У yt-dlp диагностический вывод достаточно подробный, поэтому исправление лучше строить по стадиям. Не меняйте одновременно пять параметров. Сначала получите подробный журнал, определите, на каком этапе возникает ошибка, затем внесите одно изменение и повторите тот же тест. Такой подход отделяет проблемы извлечения страницы от сети, авторизации, загрузки конкретного потока и локальной постобработки.
Повторите проблемную команду с -v --simulate. Параметр -v печатает сведения о версии, среде, конфигурации, зависимостях и выбранном обработчике. --simulate предотвращает изменение уже существующих файлов и ускоряет проверку ошибок извлечения. Сохраните полный текст от первой строки до ERROR: обрезанный фрагмент часто скрывает предупреждение, которое объясняет последующую ошибку.
Для официальной автономной сборки выполните yt-dlp -U, затем снова yt-dlp --version. Для установки через пакетный менеджер обновление выполняется самим менеджером. После обновления закройте и откройте терминал, если менялся PATH. Затем повторите исходную команду с -v и убедитесь, что в первой части журнала указана новая версия, а не старая копия из другого каталога.
Когда сообщение связано с FFmpeg, отдельно выполните ffmpeg -version и ffprobe -version. Наличие исполняемых файлов в соседней папке не гарантирует, что yt-dlp найдёт их из текущего окружения. Исправьте PATH или задайте поддерживаемое расположение FFmpeg. После этого повторите короткий тест, где действительно требуется объединение раздельного видео и аудио: успешное выполнение Merger подтверждает, что зависимость найдена.
Сообщение о DRM — не обычная сетевая ошибка. yt-dlp не предназначен для снятия такой защиты. Удаление параметров, смена user-agent и повторные попытки не превращают защищённый поток в штатно поддерживаемый. Для материала с DRM используйте предусмотренный сервисом способ офлайн-доступа. Это одновременно технически правильнее и не создаёт ложного ожидания, что обновление программы решит ограничение.
При HTTP 403 сначала выполните обновление и подробный тест. Затем проверьте, открывается ли тот же материал в обычном браузере с той же сетью. Когда сайт использует браузерную сессию для разрешённого доступа, передайте cookies из этой сессии и повторите --simulate -v. При HTTP 429 уменьшите частоту обращений и прекратите агрессивные повторы: это ограничение со стороны сервиса, а не повреждение локального файла. Смена десятков параметров подряд только усложняет состояние.
Сообщение о том, что доступные форматы не найдены, разбирается через -F -v. Причинами бывают изменение сайта, необходимость входа, географическое или аккаунтное ограничение, временная ошибка обработчика либо отсутствие пригодного потока. Проверка исправления всегда одна: -F снова выводит осмысленный список, после чего --simulate выбирает один из вариантов без ERROR. Только тогда запускайте фактическую загрузку.
yt-dlp особенно силён там, где важны воспроизводимые команды и тонкий контроль результата. Его преимущества заметны в длинных плейлистах, регулярных архивах, работе с отдельными дорожками и автоматизированных сценариях. Обратная сторона той же модели — терминал, большое число опций и зависимость от изменений сайтов. Программа не заменяет видеоредактор, медиаконвертер с визуальной очередью и официальный офлайн-режим сервиса для защищённого контента.
youtube-dl остаётся близким по идее и синтаксису предшественником. yt-dlp развил форматную сортировку, работу с браузерными cookies, SponsorBlock, параллельные фрагменты, расширенные шаблоны и множество других функций. Streamlink рациональнее, когда основная задача — передать живой поток в медиаплеер, а не строить архив с метаданными и постобработкой. Lux — отдельный загрузчик на Go; он привлекателен компактным CLI и собственным набором поддерживаемых сайтов, но набор функций и совместимость нужно оценивать относительно конкретной площадки.
Практическая рекомендация проста. Для единичного ролика начните с --simulate, затем -F и обычной загрузки с понятным правилом качества. Для аудио используйте отдельную команду и не перекодируйте без необходимости. Для плейлистов сразу настройте -o и --download-archive. Для страниц с авторизацией передавайте только собственную действующую сессию и храните cookies как секрет. При любой новой ошибке сначала обновите программу и получите -v, а уже затем меняйте один параметр за раз. Такая дисциплина делает yt-dlp предсказуемым инструментом, а не набором случайных команд из чужих инструкций.