yt-dlp

yt-dlp помогает сохранять видео и аудио с поддерживаемых сайтов, выбирать качество и отдельные потоки, загружать плейлисты и субтитры, а при наличии FFmpeg объединять дорожки, извлекать звук, менять контейнер и встраивать метаданные.

Работа строится вокруг команды и набора параметров: пользователь передаёт адрес страницы, при необходимости сначала смотрит перечень доступных форматов, задаёт правила выбора качества и определяет имя итогового файла. Вместо фиксированного набора пресетов yt-dlp использует идентификаторы потоков, фильтры и сортировку, поэтому один и тот же сценарий можно сделать как одной короткой командой, так и подробно настроенной конфигурацией.

Для обычного сохранения одного совместимого потока дополнительных программ может не понадобиться, но FFmpeg и ffprobe нужны для ключевых операций постобработки: объединения раздельных видео- и аудиопотоков, извлечения звука, ремультиплексирования, перекодирования, работы с фрагментами и встраивания субтитров. Для полной работы некоторых экстракторов также требуется поддерживаемая среда JavaScript; конкретная необходимость зависит от сайта и способа выдачи медиапотоков.

Скачать yt-dlp

Оценка 9.7Рекомендуем
  • Конвертация видео
  • Сжатие файлов
  • Просто для новичков
Скачать бесплатно на Windows
Лучшая альтернатива
yt-dlp
Оценка 8.5
  • Нет графического окна
  • Синтаксис требует практики
  • Зависит от изменений сайтов
Скачать yt-dlp
Загрузка начнётся после нажатия

Как устроена работа с yt-dlp

В минимальном варианте утилите достаточно передать адрес поддерживаемой страницы. Экстрактор определяет сайт, получает сведения о доступных медиапотоках и выбирает вариант по правилам по умолчанию. Если видео и звук приходят отдельными дорожками, после загрузки yt-dlp передаёт их FFmpeg для объединения. В терминале видны этапы извлечения данных, выбранные форматы, имя назначения, прогресс и действия постобработчиков, поэтому результат можно проверять без отдельного окна состояния.

Для предсказуемой работы полезно разделять три стадии. Сначала выполняется извлечение информации со страницы: название, идентификатор, список потоков, субтитры, главы и другие доступные поля. Затем загрузчик получает один или несколько медиапотоков. После этого могут запускаться постобработчики — например, слияние видео и аудио, извлечение звука, изменение контейнера, добавление метаданных или субтитров. Ошибка на каждой стадии выглядит по-разному, и это важно при диагностике: проблема экстрактора не равна проблеме FFmpeg, а отказ записи файла не равен отсутствию формата на сервере.

Командная строка особенно удобна, когда действия нужно повторять. Параметры можно сохранить в конфигурацию, адреса — в пакетный файл, а сведения о результате — вывести как JSON или по шаблону. Благодаря этому yt-dlp применяют не только для ручной загрузки одного ролика, но и как часть сценариев резервного копирования собственных публикаций, медиатеки подкастов или регулярного пополнения папки новыми элементами плейлиста. При этом автоматизация не отменяет правила конкретного сайта и права на используемый контент.

  • Проверить общие параметры: yt-dlp --help.
  • Посмотреть форматы без загрузки: yt-dlp -F URL.
  • Запустить обычное сохранение: yt-dlp URL.
  • Получить подробный диагностический вывод: yt-dlp -v URL.

Справка yt-dlp в терминале

Как yt-dlp понимает переданный адрес

Для известных площадок используются специализированные экстракторы. Их задача — разобрать страницу и связанные запросы так, чтобы получить реальные медиапотоки, служебные поля и доступные варианты качества. Список экстракторов можно вывести параметром --list-extractors, а краткие описания — --extractor-descriptions. Это точнее, чем считать поддержку сайта по одному доменному имени: у одной площадки могут быть отдельные обработчики для видео, плейлистов, каналов, клипов, прямых трансляций или встроенных плееров.

Если специализированного обработчика нет, yt-dlp может попробовать общий экстрактор. Он полезен для страниц, где медиассылка обнаруживается стандартным способом, но не гарантирует поддержку любого сайта. Наличие воспроизведения в браузере само по себе не означает, что загрузчик сумеет извлечь поток: страница может требовать JavaScript, особые токены, вход в аккаунт, географически ограниченный запрос или защищённую DRM-схему.

При смене разметки или API площадки ранее рабочий адрес может временно перестать обрабатываться. В такой ситуации сначала стоит проверить диагностический вывод, затем убедиться, что установлены доступные исправления, и только потом менять параметры. Попытка случайно перебрать форматы обычно не помогает, если ошибка возникает до этапа получения списка потоков. Для отчёта о проблеме полезен вывод -v: он показывает выбранный экстрактор, среду выполнения, внешние программы и ключевые этапы запроса.

Адрес можно передать прямо в командной строке, прочитать из текстового пакетного файла или подать через стандартный ввод. Если оболочка интерпретирует символы &, ?, скобки или пробелы, адрес заключают в кавычки по правилам этой оболочки. Это не настройка yt-dlp, а способ не дать PowerShell, cmd, Bash или другой среде разобрать часть адреса как собственную команду.

Просмотр доступных форматов перед загрузкой

Параметр -F или --list-formats выводит таблицу форматов, которые экстрактор обнаружил для конкретного материала. Обычно в ней есть идентификатор формата, контейнер или расширение, разрешение, частота кадров, число аудиоканалов, примерный или известный размер, суммарный битрейт, протокол, видеокодек и аудиокодек. Набор столбцов зависит от доступных данных, поэтому пустое поле не следует трактовать как нулевое значение.

Главная практическая деталь — отдельные строки могут содержать только видео или только аудио. Это нормальная схема доставки для адаптивного стриминга. Если выбрать такой видеопоток отдельно, итоговый файл не получит звук. Для максимального качества yt-dlp часто выбирает лучшую видеодорожку и подходящую аудиодорожку раздельно, а затем объединяет их. Именно поэтому установленный FFmpeg заметно расширяет рабочие сценарии даже тогда, когда пользователь не собирается вручную перекодировать материал.

Таблица форматов полезна и при ошибке Requested format is not available. Вместо подстановки чужого идентификатора нужно выполнить -F для того же адреса и выбрать существующую комбинацию. Идентификаторы не являются универсальными пресетами: число, доступное на одном сайте или ролике, может отсутствовать на другом.

Список форматов yt-dlp

Выбор качества: идентификаторы, фильтры и сортировка

Параметр -f задаёт выражение выбора формата. Можно указать конкретный идентификатор, совместить видеодорожку и аудиодорожку знаком + или задать несколько альтернатив через /. Практический смысл альтернатив в том, что команда не обязана ломаться только из-за отсутствия строго заданного варианта: сначала проверяется предпочтительная комбинация, затем запасная.

Фильтры в квадратных скобках позволяют ограничивать кандидатов по свойствам, которые реально сообщает экстрактор: например, высоте кадра, расширению, кодеку, наличию аудио или видео. Для задачи не выше Full HD полезнее ограничение высоты, чем попытка запомнить ID формата. Если на странице нет потока, удовлетворяющего условию, фильтр может оставить список пустым, поэтому жёсткие ограничения стоит сочетать с осмысленным запасным правилом.

Параметр -S задаёт порядок сортировки форматов по полям. Он удобен, когда нужна не конкретная строка, а приоритет: например, предпочитать определённое разрешение и контейнер, сохраняя возможность взять ближайший допустимый вариант. Сортировка и фильтрация решают разные задачи: фильтр удаляет неподходящие варианты, сортировка расставляет оставшиеся по предпочтению.

Нельзя сводить лучшее качество только к расширению MP4 или WebM. Контейнер не определяет разрешение, битрейт и кодек. Два потока с одинаковым расширением могут заметно отличаться. Перед сложной загрузкой разумно посмотреть -F, затем сформулировать правило выбора и только после этого добавлять ремультиплексирование или перекодирование.

yt-dlp -F URL
yt-dlp -f "bestvideo+bestaudio/best" URL
yt-dlp -S "res:1080,ext:mp4:m4a" URL

Параметры выбора форматов yt-dlp

Контейнер, кодек, remux и перекодирование

В yt-dlp важно отличать выбор исходного медиапотока от постобработки уже загруженного файла. --merge-output-format задаёт контейнер, который можно использовать при необходимости объединить раздельные дорожки. --remux-video меняет контейнер без обязательного перекодирования медиаданных, если комбинация кодеков совместима с целевым контейнером. --recode-video, напротив, допускает перекодирование через FFmpeg.

Remux обычно быстрее и не вносит потери качества, потому что содержимое дорожек не пересчитывается. Но он не способен сделать несовместимый кодек совместимым с контейнером. Если требуется именно другой видеокодек или аудиокодек, нужен режим перекодирования, и тогда скорость, итоговый размер и качество уже зависят от FFmpeg и выбранных параметров.

Утилита не предоставляет панель кодеков с ползунками CRF, профиля, GOP или уровня. Низкоуровневые аргументы можно передавать внешнему постобработчику через --postprocessor-args, но это уже интерфейс к FFmpeg, а не собственная система визуального экспорта yt-dlp. Поэтому для сложного кодирования сначала стоит проверить команду FFmpeg отдельно и только потом включать её в автоматизированный сценарий загрузки.

Если цель — просто получить совместимый контейнер после скачивания, начинать стоит с remux. Перекодирование оправдано, когда контейнер не принимает исходные кодеки или есть отдельное требование к формату воспроизведения. Это сокращает ненужную обработку и сохраняет исходное качество там, где пересчёт не нужен.

Параметры постобработки yt-dlp

Зачем нужен FFmpeg и что происходит при объединении дорожек

Многие видеосервисы отдают высокое качество как две независимые сущности: видеопоток без звука и аудиопоток без картинки. yt-dlp скачивает их по отдельности, а постобработчик Merger вызывает FFmpeg и создаёт один итоговый файл. В терминале это видно по двум строкам назначения и последующему сообщению об объединении форматов.

Без FFmpeg загрузчик всё ещё может сохранить единый поток, если такой вариант доступен, но максимальное качество на конкретном сайте может оказаться недоступно в одном файле. Кроме слияния, FFmpeg используется для извлечения аудио, remux, перекодирования, преобразования и встраивания субтитров, операций с временными диапазонами, главами и ряда других постобработчиков. ffprobe помогает определить свойства медиа и проверить результат некоторых операций.

Путь к внешним исполняемым файлам можно задать, если они не находятся в PATH. Ошибка о том, что FFmpeg не найден, не означает, что yt-dlp не сумел извлечь страницу. Это отдельный этап: загрузка могла завершиться, но требуемая постобработка не может стартовать. В диагностическом режиме строка exe versions показывает, какие внешние программы обнаружены.

После успешного слияния временные отдельные файлы обычно удаляются. Параметр -k или --keep-video сохраняет промежуточные дорожки. Это полезно для диагностики или когда оригинальные потоки нужны отдельно, но увеличивает занимаемое место.

Загрузка и объединение потоков yt-dlp

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

Ключ -x или --extract-audio переводит задачу в режим получения аудиофайла после загрузки. Эта операция требует FFmpeg и ffprobe. Через --audio-format можно выбрать поддерживаемый выходной вариант, среди которых документация перечисляет best, AAC, ALAC, FLAC, M4A, MP3, Opus, Vorbis и WAV. --audio-quality задаёт качество или битрейт для преобразования, когда перекодирование действительно выполняется.

Режим извлечения звука не превращает yt-dlp в аудиоредактор. Здесь нет многодорожечного монтажа, микширования, шумоподавления, нормализации по визуальной шкале, эквалайзера или ручной расстановки фейдов. Задача ограничена получением аудиодорожки и запуском нужного постобработчика FFmpeg.

Если исходный сервис уже отдаёт подходящий аудиопоток, лишнее перекодирование может быть не нужно. Выбор best оставляет постобработчику возможность использовать подходящий вариант, тогда как принудительный MP3 или другой формат означает пересчёт, когда исходный кодек отличается. Для архивного хранения полезно учитывать это различие: контейнер и расширение сами по себе не гарантируют отсутствие потерь.

Метаданные и обложку можно обрабатывать отдельными ключами. Их наличие зависит от сведений, которые предоставляет экстрактор, и от совместимости целевого файла. Если площадка не сообщает исполнителя, альбом или другую нужную информацию, yt-dlp не создаёт достоверные значения из ничего.

Субтитры: список, языки, форматы и встраивание

--list-subs показывает доступные дорожки субтитров для выбранного материала. --write-subs сохраняет предоставленные автором или площадкой субтитры, а --write-auto-subs запрашивает автоматически сгенерированные варианты там, где экстрактор их поддерживает. Это разные источники текста, поэтому автоматические субтитры не следует считать эквивалентом подготовленной вручную дорожки.

Параметр --sub-langs ограничивает языки, а --sub-format задаёт предпочтение форматов. При наличии FFmpeg субтитры можно преобразовать через соответствующий постобработчик и встроить в поддерживаемый медиаконтейнер с --embed-subs. Встраивание не означает, что текст навсегда нарисован поверх кадра: для MP4, WebM или MKV речь идёт о дорожке субтитров, если выбранная комбинация формата и контейнера допускает её.

yt-dlp не распознаёт речь самостоятельно и не выполняет OCR по изображению. Если на странице нет дорожки нужного языка, ключ --sub-langs не создаст перевод. Точно так же автоматические субтитры доступны только там, где сервис их реально предоставляет через поддерживаемый механизм.

При пакетной работе удобно сначала выполнить --list-subs для типичного материала, чтобы увидеть обозначения языков и форматов, а затем использовать те же правила в плейлисте. Для разных роликов набор может отличаться, поэтому чрезмерно жёсткое правило нужно сочетать с пониманием того, что часть элементов останется без субтитров.

Параметры субтитров yt-dlp

Метаданные, описания, обложки и служебный JSON

Помимо медиапотока yt-dlp умеет сохранять сопровождающие данные. --write-info-json создаёт файл с извлечённой информацией о видео; --write-description сохраняет описание; --write-thumbnail — выбранную миниатюру, а --write-all-thumbnails — все доступные варианты. Перед загрузкой миниатюр можно посмотреть их список через --list-thumbnails.

Встраивание метаданных и миниатюры выполняется постобработчиками и зависит от целевого формата и внешних библиотек. Полезно различать сохранить рядом и встроить внутрь: отдельный JSON или изображение остаётся самостоятельным файлом, тогда как встроенные поля становятся частью поддерживаемого контейнера.

Info JSON особенно полезен в автоматизации, потому что содержит машинно читаемые поля: идентификатор, название, длительность, сведения о форматах, канале или авторе, плейлисте и другие значения, если они получены экстрактором. При этом документация предупреждает, что такой файл может содержать персональную информацию. Его не стоит автоматически публиковать вместе с медиатекой без просмотра содержимого.

Получение комментариев также может быть запрошено для info JSON, но на крупных страницах это способно заметно увеличить число запросов и время обработки. Если задача сводится к скачиванию медиа, нет смысла включать дополнительные данные на всякий случай: каждый лишний этап добавляет вероятность ограничения со стороны сайта и усложняет хранение.

Шаблоны имён и структура папок

Параметр -o или --output задаёт шаблон имени. Вместо жёсткого текста можно использовать поля в форме %(title)s, %(id)s, %(ext)s и множество других значений, доступных для конкретного объекта. По умолчанию имя строится из названия, идентификатора и расширения. Идентификатор полезно сохранять в архивной медиатеке: одинаковые названия тогда не приводят к неочевидным совпадениям.

-P или --paths управляет базовыми путями для домашних, временных и отдельных типов файлов. Это позволяет, например, загружать промежуточные части на быстрый диск, а готовые результаты переносить в медиатеку после завершения. Если в -o указан абсолютный путь, логика базового каталога меняется, поэтому пути и шаблоны стоит проектировать вместе.

Шаблоны умеют формировать иерархию каталогов: плейлист, дата, автор или иной доступный атрибут может стать частью пути. Но поле бывает отсутствующим, содержать символы, запрещённые файловой системой, или оказаться слишком длинным. Для таких случаев есть --restrict-filenames, --windows-filenames, ограничение длины имени и заполнитель для недоступных значений.

Перед массовой загрузкой полезно проверить имя без получения медиа через режим печати. Так можно заметить конфликт каталогов, слишком длинный путь или нежелательные символы заранее. Для Windows особенно важно учитывать суммарную длину пути и правила конкретного приложения, которое потом будет открывать файл.

Шаблоны имён файлов yt-dlp

Плейлисты, каналы и выбор элементов

Когда переданный адрес представляет и отдельный ролик, и часть плейлиста, поведение можно уточнить с помощью --yes-playlist или --no-playlist. Для списков доступны ограничения по позициям: начало, конец и явное перечисление элементов. Это помогает не загружать многолетний архив канала, если нужна только конкретная часть.

Индексы плейлиста относятся к тому порядку, который извлёк yt-dlp. На динамических страницах список способен меняться между запусками, поэтому для долгосрочной синхронизации надёжнее сочетать фильтры с --download-archive, а не полагаться только на последние десять позиций. Архив хранит идентификаторы уже обработанных объектов и позволяет пропускать их в следующих запусках.

Плейлист не равен монтажной последовательности. yt-dlp загружает отдельные элементы как отдельные медиафайлы; он не создаёт из них видеопроект с таймлайном и переходами. Некоторые операции умеют разделять один файл по главам или объединять связанные аудио- и видеодорожки, но это другой класс действий.

При большом списке полезно заранее проверить метаданные в симуляции, настроить шаблон имени с полем плейлиста и определить политику ошибок. Ограничение максимального количества загрузок, остановка на существующей записи архива и пропуск остатка после серии сбоев позволяют сделать пакетный запуск более предсказуемым.

Архив загрузок: как получать только новые элементы

--download-archive FILE ведёт текстовый реестр идентификаторов успешно обработанных видео. При первом запуске подходящие элементы скачиваются и записываются в архив, а при повторном запуске уже зарегистрированные пропускаются. Это один из самых практичных механизмов для периодического пополнения папки новыми материалами из плейлиста или канала.

Архив не является каталогом файлов и не проверяет, сохранился ли ранее скачанный медиафайл на диске. Если запись есть, yt-dlp считает объект уже обработанным. Поэтому удаление файла вручную не приводит к автоматической повторной загрузке; для неё нужно осознанно изменить архив или запустить команду без этого ограничения.

--break-on-existing может остановить дальнейший обход, когда встречен элемент, уже присутствующий в архиве. Это полезно для списков, где новые публикации идут подряд в начале. Но если порядок нестабилен или старые и новые элементы перемешаны, ранняя остановка способна пропустить ещё не загруженный объект. Перед включением такого режима важно понимать структуру конкретного списка.

Архив удобно хранить рядом с конфигурацией, резервировать и не путать с логом. Он содержит технические идентификаторы, а не подробную историю ошибок. Для аудита результатов лучше отдельно сохранять вывод, JSON или собственный журнал сценария.

Повторный запуск с архивом yt-dlp

Пакетный файл и очередь без графического менеджера

Ключ -a или --batch-file читает адреса из текстового файла, по одному на строку. Это простой способ подготовить очередь без длинной командной строки. Комментарии в таком файле распознаются по документированным начальным символам, поэтому список можно снабдить техническими пометками, не превращая его в отдельный скрипт.

Несколько адресов можно передать и прямо после параметров. yt-dlp обрабатывает входные объекты как последовательность задач, однако это не визуальная очередь с кнопками паузы и перетаскиванием приоритетов. Параметры вроде --max-downloads, остановки на ошибке, игнорирования ошибок или сброса ограничений для каждого входного URL управляют логикой командного запуска.

--concurrent-fragments относится к параллельной загрузке фрагментов одного фрагментированного потока, а не к одновременному скачиванию большого количества независимых роликов. Увеличение значения способно ускорить HLS/DASH на подходящем соединении, но также повышает число одновременных запросов. Для сайта с ограничениями это может дать обратный эффект.

Для регулярной автоматизации очередь лучше сочетать с архивом, ограничением числа загрузок и явными путями. Тогда повторный запуск не создаёт дубликаты, а результат оказывается в ожидаемой папке. Если нужна сложная диспетчеризация с несколькими параллельными заданиями и расписанием, её обычно делает внешняя оболочка или планировщик, а yt-dlp остаётся исполнителем отдельной команды.

Фильтрация видео до загрузки

yt-dlp умеет отсеивать элементы по извлечённым метаданным. --match-filters принимает условие над полями видео и помогает, например, пропускать объекты без нужного свойства или ограничивать обработку по числовому значению. Отдельные параметры позволяют учитывать дату публикации, минимальный или максимальный размер и другие критерии выбора.

Фильтр работает только с данными, которые удалось получить. Если сайт не сообщает точный размер до начала передачи, условие по размеру может быть неприменимо или опираться на приблизительное значение. То же касается даты, длительности и доступности прямого эфира. Поэтому фильтрацию нужно строить с учётом неполных полей, а не считать каждую колонку гарантированной.

Для тестирования условия полезен режим симуляции и печать нужных полей. Это позволяет увидеть, почему элемент прошёл или был отклонён, без скачивания гигабайт данных. В массовой задаче такой предварительный прогон экономит время и снижает риск того, что слишком широкое правило заберёт весь архив.

Фильтрация не выполняет смысловой анализ содержимого кадра или речи. Она основана на метаданных, которые извлечены со страницы и переданы выражению. Если критерий нельзя описать доступными полями, потребуется внешний этап анализа уже после получения файла.

Сеть, повторы, ограничение скорости и докачка

Для нестабильного соединения предусмотрены повторы запросов и фрагментов, паузы между попытками и сетевой тайм-аут. Эти параметры полезны, когда сервер временно не отвечает или отдельный сегмент HLS/DASH не загрузился с первого раза. Бесконечно увеличивать число повторов не стоит: постоянный ответ 403 или ошибка авторизации не превращаются в временный сбой только от количества попыток.

--limit-rate ограничивает скорость передачи, а параметры сна и случайных пауз помогают не запускать запросы с максимальной частотой. На некоторых площадках это полезнее, чем агрессивное ускорение. --concurrent-fragments, напротив, повышает параллелизм фрагментов и должен подбираться с учётом канала и реакции сервера.

Частично загруженные файлы обычно получают временное расширение .part, а --continue разрешает продолжить загрузку там, где это возможно. Для фрагментированного потока механизм отличается от простого HTTP-файла: продолжение зависит от уже полученных сегментов и того, сохранились ли временные данные. --no-continue принудительно отказывается от такого возобновления.

Прокси задаётся отдельным параметром и может использовать HTTP, HTTPS или SOCKS-схему в поддерживаемом синтаксисе. Это сетевой маршрут, а не гарантия доступа к ограниченному материалу. Если сервер привязывает сессию, cookies, регион, токен и IP друг к другу, случайная смена прокси скорее вызовет дополнительную проверку, чем исправит ситуацию.

Cookies и вход на сайты, где это действительно требуется

Если материал доступен только после входа или сайт требует сессионные данные, yt-dlp умеет читать cookies из файла Netscape-формата либо извлекать их из поддерживаемого профиля браузера через --cookies-from-browser. В некоторых экстракторах также работают логин, пароль, netrc или специальные параметры аутентификации. Конкретный способ определяется площадкой.

Cookies следует воспринимать как чувствительные данные сессии. Файл нельзя прикладывать к публичному отчёту об ошибке или передавать посторонним: действующие значения способны дать доступ к аккаунту в пределах сохранённой сессии. Для диагностики достаточно показать команду с заменённым путём и очистить журнал от секретов.

Извлечение cookies из браузера зависит от профиля и механизма шифрования хранилища. Если профиль заблокирован или ключи недоступны текущему пользователю, операция может завершиться ошибкой. В таком случае полезно проверить точное имя браузера, профиль и системное хранилище ключей, а не многократно повторять команду.

Авторизация не означает поддержку DRM. Если сайт после входа отдаёт обычный незашифрованный поток, экстрактор может его обработать. Если медиа защищено DRM, yt-dlp явно не предназначен для обхода такой защиты.

Работа yt-dlp с cookies браузера

JavaScript runtime, yt-dlp-ejs и требования отдельных экстракторов

Некоторые современные сайты вычисляют параметры медиазапросов с помощью JavaScript. Для полной поддержки YouTube документация yt-dlp рекомендует компонент yt-dlp-ejs и поддерживаемую среду JavaScript; Deno указан как рекомендуемый вариант, также предусмотрена работа с другими поддерживаемыми движками. В диагностическом выводе активные среды появляются в строке JS runtimes.

Если среда JavaScript отсутствует, часть форматов или функций конкретного экстрактора может быть недоступна даже при том, что базовая страница открывается. Это не ошибка кодека и не проблема FFmpeg: медиассылка ещё не была корректно получена. Поэтому при неожиданно бедном списке форматов полезно проверить предупреждения экстрактора до того, как менять -f.

Для YouTube также применяются PO Tokens. Их необходимость зависит от клиента и типа запроса; требования меняются на стороне сервиса. В некоторых сценариях используются провайдеры токенов в виде плагинов. Такой компонент не следует устанавливать случайно из неизвестного архива: он выполняется вместе с загрузчиком и должен иметь понятное происхождение.

Настройки JavaScript и токенов относятся к экстрактору, а не к качеству видео. Они помогают получить доступный конкретному клиенту список потоков; дальше выбор формата, загрузка и FFmpeg работают обычным образом. При изменениях на сайте корректная конфигурация сегодня не является гарантией, что тот же набор параметров навсегда останется достаточным.

Плагины и JavaScript runtime в yt-dlp

Прямые трансляции и запланированные эфиры

yt-dlp может сохранять поддерживаемые сетевые прямые трансляции. Для некоторых экстракторов --live-from-start пытается начать загрузку с доступного начала эфира, а --wait-for-video позволяет ждать запланированную публикацию или трансляцию с заданным интервалом проверки. Реальная возможность получить начало зависит от того, хранит ли площадка предыдущие сегменты и поддерживает ли это выбранный обработчик.

У прямого эфира нет заранее фиксированного конечного размера и длительности. Прерывание процесса оставляет тот объём данных, который успел быть получен и корректно собран. Если поток идёт фрагментами, пригодность результата после аварийного завершения зависит от контейнера, сегментов и постобработки.

Это не захват экрана, веб-камеры, HDMI или карты видеозахвата. yt-dlp работает с сетевым медиаресурсом, который умеет извлечь с поддерживаемой страницы. Он также не является программой для отправки собственной трансляции на сервер: функций кодирования и вещания исходящего видеосигнала как у студий трансляции здесь нет.

Запланированные эфиры особенно чувствительны к авторизации, региону, JavaScript и изменениям экстрактора. Если ожидание работает, а старт с начала нет, следует рассматривать эти функции отдельно: возможность дождаться страницы не означает, что сервис предоставляет архив уже прошедших сегментов выбранному клиенту.

Загрузка только нужного временного участка

--download-sections позволяет ограничить загрузку временными диапазонами или главами, совпадающими с выражением. Для временного диапазона используется синтаксис с началом и концом, а обработка требует FFmpeg. Это функционально похоже на получение фрагмента, но не даёт визуального таймлайна: точки вводятся текстом.

Граница без перекодирования может попасть на ближайший подходящий ключевой кадр, из-за чего начало или конец окажутся не идеально точными. --force-keyframes-at-cuts заставляет FFmpeg перекодировать вокруг разрезов, что способно уменьшить артефакты и улучшить точность, но операция становится значительно медленнее. Для длинного видео это важный компромисс.

Временные участки не заменяют монтаж. Здесь нельзя мышью переставить куски, наложить переход, изменить масштаб кадра или собрать сложную последовательность из разных файлов. Опция рассчитана на техническое ограничение получаемого диапазона, например когда нужен небольшой эпизод из собственного длинного эфира.

yt-dlp --download-sections "*00:10:00-00:12:30" URL
yt-dlp --download-sections "*00:10:00-00:12:30" --force-keyframes-at-cuts URL

Перед массовым применением стоит проверить один типичный файл: некоторые протоколы и сайты отдают диапазоны по-разному, а точность зависит от структуры исходного потока. Если без --force-keyframes-at-cuts результат приемлем, отказ от лишнего перекодирования заметно экономит время.

Главы, разбиение и SponsorBlock

Если видео содержит главы, yt-dlp умеет использовать их при постобработке. --split-chapters создаёт отдельные файлы по внутренним главам, а --remove-chapters удаляет главы, название которых совпадает с заданным выражением. Физическое вырезание участков выполняется через FFmpeg, поэтому на точность и скорость действуют те же ограничения, что и для временных разрезов.

Интеграция SponsorBlock позволяет помечать категории как главы или удалять выбранные категории при постобработке. --sponsorblock-mark создаёт главы для выбранных категорий, --sponsorblock-remove пытается вырезать соответствующие участки. Данные приходят от SponsorBlock и существуют не для каждого видео.

Удаление по категориям не является интеллектуальным распознаванием рекламы внутри yt-dlp. Если для конкретного материала нет записи или границы сообщества неточны, загрузчик не вычислит сцену самостоятельно. Для важных файлов лучше сначала сохранить исходник или проверить результат, особенно если включено перекодирование на разрезах.

Разбиение по главам отличается от нарезки на произвольные равные куски. Главы должны быть доступны в метаданных либо сформированы постобработчиком из поддерживаемых данных. Названия выходных частей можно включить в шаблон имени, чтобы не получить набор неразличимых файлов.

Параметры глав и SponsorBlock yt-dlp

Чего нет: кадрирование, цвет, эффекты и стабилизация

У yt-dlp нет собственных инструментов кадрирования изображения, поворота с визуальным предпросмотром, цветокоррекции, LUT, масок, переходов, размытия, титров, стабилизации или трекинга. Эти задачи относятся к видеоредактору либо к фильтрам FFmpeg. Загрузчик может передать аргументы внешнему постобработчику, но не предоставляет отдельную модель проекта для таких эффектов.

Поэтому команда с --postprocessor-args не должна восприниматься как скрытая монтажная панель. Пользователь сам отвечает за синтаксис FFmpeg, совместимость фильтров, кодек и качество. Ошибка в таких аргументах появляется уже на этапе внешней программы, а yt-dlp лишь сообщает о неуспешной постобработке.

Нет и произвольной склейки заранее лежащих на диске клипов. Merger объединяет связанные потоки одного загружаемого объекта, а некоторые режимы работают с главами и частями плейлиста. Если требуется собрать несколько независимых файлов в один фильм, расставить их по времени и добавить переходы, нужна другая программа.

Такое разделение полезно учитывать при выборе инструмента. yt-dlp силён в извлечении, выборе и сохранении сетевого медиа с воспроизводимыми правилами. Монтаж, дизайн кадра и художественная обработка — отдельный этап рабочего процесса.

Плагины экстракторов и постобработчиков

Проект поддерживает плагины, которые могут добавлять экстракторы и постобработчики. Дополнительные каталоги задаются через --plugin-dirs; диагностический режим показывает найденные каталоги и загруженные компоненты. Это механизм расширения Python-кода, а не каталог визуальных фильтров.

Плагин выполняется с правами процесса yt-dlp, поэтому происхождение имеет значение. Для постоянной установки предпочтительнее пакет с открытым исходным кодом, ясным назначением и документацией совместимости. Случайный исполняемый архив, обещающий разблокировать все сайты, не является обязательной частью yt-dlp и не должен подменять официальный бинарник.

Отдельный класс дополнений связан с экстракторными требованиями конкретных сервисов, например провайдером PO Token. Потребность в таком компоненте может меняться по мере изменения сайта. Если основной экстрактор работает без него для нужного сценария, устанавливать лишнее расширение не требуется.

При проблеме после добавления плагина полезно запустить yt-dlp без дополнительных каталогов и сравнить -v. Так можно отделить ошибку основной программы от несовместимости расширения. Для автоматизации список плагинов и их версии следует фиксировать вместе с конфигурацией окружения.

Использование как Python-пакета

yt-dlp можно вызывать из Python через класс YoutubeDL. Параметры передаются словарём, после чего код может извлечь информацию, запустить загрузку и получить структуру метаданных. В документации также приводится получение информации без скачивания и подготовка JSON-совместимого результата.

Такой способ удобен, когда нужно встроить загрузчик в собственный сценарий обработки файлов, не разбирая текст терминала. Однако это не графический SDK с дизайнером интерфейса: приложение отвечает за свой UI, очередь, хранение настроек, обработку исключений и права доступа.

import yt_dlp

opts = {'quiet': True}
with yt_dlp.YoutubeDL(opts) as ydl:
    info = ydl.extract_info('URL', download=False)
    data = ydl.sanitize_info(info)

Для надёжного кода лучше использовать документированные параметры и методы, а не внутренние классы экстракторов. Внутренняя структура может меняться быстрее публичного интерфейса. Если сценарий запускает FFmpeg, JavaScript runtime или плагины, их наличие всё равно нужно проверять в окружении — использование Python не отменяет внешние зависимости.

Конфигурационные файлы

Почти те же ключи, которые вводятся в командной строке, можно записать в конфигурацию. Это удобно для постоянных правил: каталога сохранения, шаблона имён, выбора субтитров, архива загрузок, предпочитаемого качества или сетевых ограничений. Тогда разовая команда остаётся короткой и содержит главным образом адрес.

yt-dlp ищет конфигурации в документированных расположениях, включая файл рядом с исполняемым бинарником, пользовательские каталоги и системную конфигурацию. --config-locations позволяет явно указать дополнительное расположение, а --ignore-config полезен для чистого диагностического запуска.

Правила кавычек в конфигурационном файле отличаются от конкретной командной оболочки, потому что файл разбирает сама программа. Ошибка, которая возникает только при обычном запуске и исчезает с --ignore-config, почти всегда указывает на конфликт сохранённых параметров. В такой ситуации нужно временно минимизировать конфигурацию и возвращать строки по одной.

Не стоит хранить в общем конфиге чувствительные cookies или пароли, особенно если файл синхронизируется в облако или попадает в репозиторий. Секретные данные лучше передавать отдельным защищённым способом, а в конфигурации оставлять безопасные параметры поведения.

Расположения конфигурации yt-dlp

Алиасы для повторяемых наборов параметров

Если одна и та же группа ключей нужна регулярно, yt-dlp позволяет объявить пользовательский алиас через --alias. Алиас не создаёт новый режим обработки: он разворачивается в заранее записанную последовательность обычных параметров. Такой приём удобен, когда, например, один профиль должен сохранять видео и субтитры в медиатеку, другой — извлекать только аудио, а третий — запускать диагностическую команду с подробным журналом.

Хороший алиас решает одну понятную задачу и не скрывает слишком много решений. Если в него одновременно поместить выбор формата, фильтр плейлиста, сетевые повторы, cookies, постобработку и сложный шаблон имени, поиск ошибки становится труднее. Практичнее иметь несколько небольших профилей с говорящими именами и при необходимости сочетать их с обычными ключами.

При переносе конфигурации между компьютерами следует отдельно проверить пути, синтаксис оболочки и наличие внешних программ. Алиас, который вызывает FFmpeg-зависимую операцию, не становится автономным только потому, что он записан в конфиге: на новой системе FFmpeg и FFprobe также должны быть доступны.

Проверка результата без загрузки файла

Перед большой очередью полезно сначала проверить, что yt-dlp распознал страницу и выбрал ожидаемый формат. Ключ --simulate выполняет извлечение информации, но пропускает фактическую загрузку. Его можно сочетать с --print, чтобы вывести конкретные поля: идентификатор, название, выбранное расширение, итоговый путь или другие доступные значения шаблона.

Режимы -j и -J выводят сведения в JSON-представлении. Это особенно удобно для сценариев, которые не должны разбирать человеческий текст в терминале. Машиночитаемый вывод позволяет сначала получить метаданные, применить собственную проверку, а уже затем запускать отдельную команду загрузки.

Симуляция не гарантирует, что каждый медиасегмент впоследствии будет доступен: между извлечением информации и реальной загрузкой может измениться сессия, истечь токен или сработать ограничение сайта. Но она хорошо ловит ошибки формата, шаблона имени, фильтра и распознавания адреса до того, как будет потрачен трафик.

Диагностический вывод -v

Ключ -v включает подробный журнал, в котором видны версия Python или тип автономной сборки, параметры запуска, найденные зависимости, прокси-настройки, экстрактор и этапы получения данных. Для воспроизводимой диагностики это намного полезнее одной последней строки с ошибкой: причина нередко находится выше, например в отсутствующем FFmpeg, неожиданном конфиге или недоступном JavaScript runtime.

Перед публикацией диагностического журнала его необходимо просмотреть. В командной строке и заголовках могут оказаться cookies, токены, локальные пути, имя пользователя системы и другие данные, которые не относятся к самой ошибке. Для собственной диагностики полный журнал полезен, но для передачи другому человеку чувствительные значения следует удалить.

Если проблема появилась только на одном сайте, в журнале важно отделять этап экстрактора от этапа загрузчика и постобработчика. Ошибка до появления списка форматов означает одно, сетевой отказ при получении сегмента — другое, а сбой FFmpeg после успешно загруженных потоков — третье. Такое разделение сокращает число бессмысленных повторов команды.

Обновление автономной сборки

Официальные автономные бинарники yt-dlp умеют проверять и устанавливать доступное обновление через -U, если способ установки поддерживает этот механизм. Для пакета, установленного менеджером пакетов или через Python, правильнее использовать тот же менеджер, которым программа была установлена: так его база пакетов остаётся согласованной.

Перед обновлением автоматизированной системы полезно сохранить рабочую команду и диагностический вывод. Изменения на видеосайтах происходят независимо от программы, поэтому обновление обычно нужно именно для новых исправлений экстракторов и совместимости, но оно не заменяет проверку параметров конкретного сценария.

Если команда обновления сообщает, что способ установки ею не управляется, не следует заменять бинарник случайным файлом. Нужно определить исходный канал установки и обновить программу через него либо использовать официальный релизный файл для соответствующей архитектуры.

Совместимость с Windows, macOS, Linux и Python

Официальные релизные файлы охватывают несколько настольных систем и архитектур. Для Windows публикуются автономные варианты x86-64, x86 и ARM64; основной 64-битный EXE рассчитан на Windows 8 и новее, а ARM64-вариант — на Windows 10 и новее. Для macOS доступен универсальный бинарник с требованием macOS 10.15 или новее. Для Linux публикуются отдельные сборки под распространённые архитектуры и варианты libc.

При установке как Python-пакета требуется поддерживаемая версия интерпретатора. Документация проекта указывает CPython 3.10 или новее, а для PyPy — совместимую ветвь Python 3.11. Если системный Python старее, установка через pip может завершиться отказом ещё до запуска yt-dlp; в этом случае рациональнее обновить Python в отдельном окружении или выбрать официальный автономный бинарник.

Наличие самого исполняемого файла не означает наличие всех возможностей постобработки. FFmpeg и FFprobe поставляются отдельно и должны находиться в PATH либо быть указаны программе через соответствующий путь. Для части современных экстракторов также важен поддерживаемый JavaScript runtime и компонент yt-dlp-ejs. Поэтому проверка совместимости включает не только запуск yt-dlp --version, но и проверку зависимостей, которые нужны конкретному сценарию.

Скрипты между системами переносятся легче, если в них нет абсолютных путей и особенностей одной оболочки. Кавычки, экранирование символов процентов, обратные слеши и переменные окружения различаются между CMD, PowerShell и Unix-оболочками. Если команда работает в одной среде и ломается в другой, сначала следует проверить именно синтаксис оболочки, а не менять выражение выбора формата.

DRM и защищённый контент

yt-dlp не предназначен для обхода DRM. Если медиасервис выдаёт только защищённые потоки, программа может распознать страницу и даже показать служебную информацию, но это не превращает защищённый поток в доступный для обычной загрузки файл. Для такого источника корректное решение — использовать официальные способы просмотра или сохранения, которые предоставляет сам сервис.

Сообщения о DRM важно отличать от обычной авторизации. Cookies помогают там, где сайту нужна уже подтверждённая пользовательская сессия и сам контент разрешён для этой сессии, но cookies не снимают криптографическую защиту потока. Попытка лечить DRM-ошибку новыми параметрами формата, другим контейнером или FFmpeg не решает исходное ограничение.

Ошибка: команда yt-dlp не найдена

Если оболочка отвечает, что команда не найдена, проблема возникает до запуска программы. На Windows следует проверить, действительно ли EXE находится в текущем каталоге или в PATH, и при запуске из PowerShell учитывать правила обращения к файлам текущей папки. На macOS и Linux нужно убедиться, что бинарник имеет право на выполнение и каталог присутствует в PATH.

Для установки через Python полезно сравнить интерпретатор, которым запускался pip, и интерпретатор, из которого затем ожидается команда. Несколько Python-окружений часто приводят к ситуации, когда пакет установлен успешно, но исполняемый скрипт оказался в другом каталоге. Проверка через вызов модуля тем же Python помогает отделить проблему PATH от проблемы установки.

Не стоит решать такую ошибку загрузкой случайного portable-архива с неизвестного сайта. Сначала достаточно найти фактический установленный файл и проверить путь. Если файла нет, следует использовать официальный релиз или доверенный менеджер пакетов.

Ошибка: FFmpeg не найден

Отсутствующий FFmpeg чаще всего проявляется после того, как yt-dlp уже получил данные о ролике. Если выбран формат, где видео и аудио приходят отдельными потоками, без FFmpeg программа не сможет выполнить ожидаемое объединение. Аналогичная зависимость возникает при извлечении аудио, перекодировании, remux, встраивании некоторых метаданных и операции с временными участками.

Исправление состоит не в смене адреса ролика, а в установке подходящего FFmpeg и проверке, видит ли его yt-dlp. В подробном выводе -v перечисляются обнаруженные версии зависимостей. Если FFmpeg установлен, но не находится автоматически, можно исправить PATH или указать каталог исполняемых файлов через предусмотренный для этого параметр.

Важно не путать пакет Python с именем ffmpeg и реальные программы ffmpeg/ffprobe. yt-dlp вызывает исполняемые файлы; установка одноимённой библиотеки в Python сама по себе не удовлетворяет эту зависимость.

Ошибка: requested format is not available

Сообщение о недоступном формате означает, что выражение -f не нашло подходящего варианта среди форматов конкретного материала. Самый быстрый путь к причине — выполнить -F для этого адреса и сравнить реальные идентификаторы и свойства со своим фильтром. Копировать идентификатор формата с другого ролика ненадёжно: набор потоков может отличаться даже внутри одного сайта.

Если фильтр требует одновременно определённый кодек, контейнер, разрешение и наличие аудио, он может оказаться слишком строгим. Тогда разумно ослаблять условия по одному и смотреть, какой именно критерий исключает все варианты. Для массовой очереди полезно предпочитать устойчивые выражения по свойствам и сортировку вместо жёсткого ID, если сайт не гарантирует стабильность идентификаторов.

Также нужно учитывать объединение раздельных дорожек. Требование один формат уже содержит и видео, и аудио может исключить наиболее качественные варианты, которые сайт предоставляет отдельно. Если доступен FFmpeg, выражение с выбором лучшей видеодорожки и лучшей аудиодорожки обычно даёт больше вариантов.

Ошибки HTTP 403, 429 и временные сетевые отказы

HTTP 403 указывает, что сервер отказал в доступе к конкретному запросу. Причиной может быть истёкшая ссылка на сегмент, отсутствие нужной сессии, региональное ограничение, изменение требований сайта или слишком старые данные экстрактора. Бесконечный повтор одной и той же команды не исправляет постоянный запрет: сначала полезно получить свежую информацию, проверить cookies и диагностический журнал.

HTTP 429 обычно связан с ограничением частоты запросов. В такой ситуации агрессивное увеличение параллелизма только усугубляет проблему. Практичнее уменьшить нагрузку, использовать задержки и дать ограничению истечь. Для длинных плейлистов стабильность важнее максимальной мгновенной скорости.

Временные разрывы соединения и отдельные сбои фрагментов обрабатываются параметрами повторов. Следует различать --retries для общих повторов и --fragment-retries для фрагментированных потоков. Слишком большое число повторов может долго скрывать систематическую ошибку, поэтому после нескольких одинаковых отказов лучше перейти к диагностике.

Предупреждение о JavaScript runtime

Для некоторых сайтов одного Python-кода экстрактора недостаточно: часть логики страницы выполняется на JavaScript. В таких случаях yt-dlp может предупредить, что не найден поддерживаемый runtime или компонент для JavaScript challenge. Это не следует исправлять случайным изменением формата или установкой FFmpeg, потому что сбой происходит раньше — на этапе получения корректных медиаданных.

В документации yt-dlp рекомендован Deno, а также перечислены другие поддерживаемые среды. После установки runtime полезно снова включить -v и убедиться, что программа его обнаружила. Если используется внешний компонент yt-dlp-ejs, его способ установки также должен соответствовать выбранной установке yt-dlp.

Предупреждение не означает, что каждый сайт обязательно перестанет работать без JavaScript runtime. Требование зависит от экстрактора и конкретного механизма сайта. Поэтому устанавливать дополнительные зависимости имеет смысл на основании диагностического сообщения и документации, а не на всякий случай.

Проблемы с именами файлов, правами и свободным местом

Шаблон -o может сформировать путь, который допустим на одной файловой системе и недопустим на другой. Запрещённые символы, слишком длинное имя, зарезервированное имя Windows или отсутствующий родительский каталог приводят к ошибкам уже на этапе записи. Ключи ограничения имён помогают сделать вывод более переносимым, но меняют итоговые названия, что следует учитывать в медиатеке.

Если каталог существует, но запись запрещена, yt-dlp не может обойти права операционной системы. Нужно выбрать доступный путь или исправить разрешения обычными средствами системы. Запуск с повышенными правами не должен быть первым решением: для пользовательской медиатеки лучше дать нужные права конкретному каталогу.

При объединении и перекодировании требуется место не только под конечный файл. На диске могут одновременно находиться исходные временные дорожки и создаваемый результат. Очередь, которая стабильно падает ближе к концу обработки, стоит проверить на свободное место и на правила удаления промежуточных файлов.

Субтитры нужного языка не найдены

--list-subs показывает, какие ручные и автоматические субтитры доступны именно для переданного материала. Если запрошенный язык отсутствует в этом списке, yt-dlp не может создать его из воздуха. Следует проверить код языка, различие между ручными и автоматически созданными дорожками и фактическую поддержку субтитров экстрактором.

Маска --sub-langs допускает несколько языков и выражения выбора. Для большой очереди слишком широкая маска может сохранить десятки дорожек на каждом ролике, поэтому лучше заранее определить действительно нужный набор. Если субтитры нужно встроить в контейнер, дополнительно проверяются возможности FFmpeg и совместимость выбранного формата субтитров с контейнером.

Наличие автоматически созданной дорожки не говорит о её качестве. yt-dlp отвечает за получение доступного файла, а не за точность распознавания речи или перевод. Для публикационной работы субтитры после загрузки следует проверять отдельно.

Плейлист останавливается или пропускает элементы

В плейлисте отдельный ролик может быть удалён, приватизирован, ограничен по региону или требовать другой авторизации. В зависимости от параметров обработки ошибок такой элемент может остановить команду либо быть пропущен. При массовой загрузке нужно заранее решить, важнее ли строгий отказ при первой проблеме или получение всех остальных доступных элементов.

Если используется архив загрузок, ранее записанные идентификаторы будут намеренно пропускаться. Это нормальное поведение, но оно легко воспринимается как ошибка, если файл архива забыт в конфигурации. Для проверки нужно посмотреть диагностический вывод и содержимое архива, не удаляя его без необходимости.

Фильтры по дате, длительности или другим полям тоже могут исключать элементы. Когда число полученных файлов меньше ожидаемого, правильная диагностика — последовательно проверить фильтр, диапазон элементов, архив и индивидуальные ошибки, а не сразу менять экстрактор.

Конфигурация неожиданно меняет команду

Сохранённые параметры могут незаметно влиять на разовый запуск: выбирать другой путь, добавлять фильтр, включать cookies, менять шаблон имени или задавать иной формат. Если команда выглядит минимальной, а поведение явно соответствует дополнительным ключам, стоит выполнить диагностический запуск с --ignore-config.

Если проблема исчезла, конфигурацию следует разбирать по уровням: пользовательский файл, системный файл и явно подключённые расположения. Полезно временно оставить только одну настройку, убедиться в результате и возвращать остальные постепенно. Такой метод быстрее, чем пытаться перекрыть неизвестный параметр ещё одним параметром командной строки.

Для автоматизации конфигурацию лучше хранить как часть документированного сценария и изменять осознанно. Тогда разница между двумя компьютерами становится видимой, а не прячется в пользовательской папке.

Карта основных параметров yt-dlp

Ниже собраны параметры, которые чаще всего определяют реальное поведение yt-dlp. Таблица не заменяет встроенную справку: она показывает, на каком этапе действует ключ и какую практическую проверку стоит сделать, прежде чем переносить его в постоянную конфигурацию.

ПараметрНазначениеПрактическое замечание
URL или поисковый аргументПередаёт адрес страницы, плейлиста или другого поддерживаемого объекта.Сначала проверьте один материал: так легче увидеть, какой экстрактор выбран и какие поля доступны.
-FПоказывает доступные форматы без обычной загрузки.Используйте перед созданием сложного -f, особенно если сайт отдаёт видео и звук раздельно.
-f FORMATВыбирает один формат или выражение из нескольких потоков.Жёсткий ID удобен для одного ролика, а правила по свойствам обычно устойчивее в очередях.
-S SORTСортирует форматы по указанным критериям предпочтения.Позволяет формулировать приоритеты качества, кодека или размера без привязки к одному ID.
--merge-output-format FORMATЗадаёт предпочтительный контейнер при объединении потоков.Применяется вместе с FFmpeg; сам параметр не меняет кодек дорожек, если перекодирование не требуется.
--remux-video FORMATПерекладывает уже полученные дорожки в другой контейнер.Подходит, когда кодеки совместимы с целевым контейнером и менять их качество не нужно.
--recode-video FORMATПросит FFmpeg перекодировать видео в выбранный выходной формат.Медленнее remux и может изменять качество, потому что создаётся новое закодированное видео.
-xОставляет аудио и запускает аудио-постобработку.Требует FFmpeg/FFprobe; это не просто смена расширения исходного файла.
--audio-format FORMATЗадаёт формат для извлекаемого аудио.Поддерживаются документированные значения, среди них mp3, m4a, opus, flac, wav и другие.
--audio-quality QUALITYУправляет качеством аудио при преобразовании.Имеет смысл только там, где выполняется кодирование; исходный поток не становится качественнее от меньшего числа.
--list-subsВыводит доступные дорожки субтитров.Полезен перед выбором языка: показывает реальные коды и отдельно доступность автоматических дорожек.
--write-subsСохраняет обычные субтитры, если они доступны.Не создаёт перевод и не генерирует отсутствующую дорожку.
--write-auto-subsРазрешает загрузку автоматически созданных субтитров.Качество текста определяется источником, а не yt-dlp.
--sub-langs LANGSВыбирает языки субтитров.Для пакетной работы лучше задавать ограниченный список, чтобы не собирать лишние дорожки.
--sub-format FORMATЗадаёт предпочтение по формату субтитров.Фактический выбор ограничен тем, что отдаёт сайт и умеет конкретный экстрактор.
--embed-subsВстраивает загруженные субтитры в медиаконтейнер.Требует подходящего контейнера и FFmpeg; не каждый формат субтитров можно встроить без преобразования.
--write-info-jsonСохраняет метаданные извлечённого объекта в JSON-файл.Удобно для архива и последующей автоматизации, когда данных в имени файла недостаточно.
--write-thumbnailСохраняет доступную миниатюру рядом с медиа.Формат и наличие изображения зависят от источника.
--embed-thumbnailПытается встроить миниатюру в выходной файл.Это постобработка; поддержка зависит от контейнера, типа медиа и внешних инструментов.
--embed-metadataЗаписывает доступные метаданные в выходной файл.Не добавляет сведения, которых экстрактор не получил со страницы.
-o TEMPLATEОпределяет шаблон итогового имени и пути.Полезно включать стабильный идентификатор, если названия роликов могут совпадать.
-P PATHЗадаёт базовые пути для файлов разных этапов.Помогает отделять временные данные от постоянной медиатеки без усложнения каждого шаблона.
--restrict-filenamesСужает набор символов в создаваемых именах.Повышает переносимость, но делает имена менее естественными и может убрать часть знаков.
--windows-filenamesПрименяет правила совместимых с Windows имён файлов.Полезно, если архив готовится на другой системе, но затем переносится на Windows-накопитель.
--no-overwritesЗапрещает перезаписывать существующие медиафайлы.Не заменяет архив загрузок: одинаковый путь и уже обработанный идентификатор — разные проверки.
--download-archive FILEЗапоминает идентификаторы успешно загруженных объектов.Один из самых надёжных способов периодически догружать только новые элементы канала или плейлиста.
-a FILEЧитает очередь адресов из пакетного файла.Удобно для воспроизводимой серии заданий без отдельного менеджера очереди.
--max-downloads NUMBERОстанавливает обработку после заданного количества загрузок.Пригоден для тестового прогона большой коллекции перед полноценным запуском.
--match-filter FILTERПропускает или принимает объекты по доступным метаданным.Фильтр следует проверять в симуляции: отсутствующее поле может вести себя иначе, чем ожидается.
-r RATEОграничивает скорость загрузки.Полезно на общей сети или при необходимости не занимать весь канал одним заданием.
-N NЗадаёт число одновременно загружаемых фрагментов.Увеличение параллелизма не всегда ускоряет работу и может быстрее привести к лимитам сайта.
-R RETRIESЗадаёт число повторов для определённых ошибок загрузки.Большое значение не исправляет постоянный запрет доступа или неверную авторизацию.
--fragment-retries NОтдельно управляет повторами фрагментов.Имеет значение для HLS/DASH-потоков, где единичный сегмент может временно не ответить.
--proxy URLПередаёт сетевые запросы через заданный прокси.Прокси не отменяет правила доступа сайта и может сам быть причиной задержек или ошибок TLS.
--cookies-from-browser BROWSERИзвлекает cookies из поддерживаемого браузерного профиля.Применяйте только к собственной сессии; диагностические логи с такими данными нельзя публиковать без проверки.
--cookies FILEЧитает cookies из файла в поддерживаемом формате.Файл чувствителен как данные сессии: его следует хранить и передавать как секрет.
--download-sections REGEXОграничивает загрузку указанными главами или временными диапазонами.Точность границ зависит от способа получения потока; для принудительных ключевых кадров понадобится FFmpeg.
--force-keyframes-at-cutsПри нарезке заставляет FFmpeg перекодировать возле нужных границ.Уменьшает артефакты около среза, но делает операцию заметно медленнее.
--split-chaptersРазделяет файл по главам в постобработке.Работает только когда информация о главах получена и установлен FFmpeg.
--sponsorblock-mark CATSПомечает выбранные категории SponsorBlock как главы.Полезно, если сегменты нужно сохранить, но сделать их границы видимыми в совместимом проигрывателе.
--sponsorblock-remove CATSУдаляет выбранные SponsorBlock-сегменты при постобработке.Это не визуальный монтаж; операция строится на доступных метках и работе FFmpeg.
--plugin-dirs PATHДобавляет каталоги, где yt-dlp ищет совместимые плагины.Сторонний плагин выполняет код с правами пользователя, поэтому источник и содержимое должны быть доверенными.
--js-runtimes RUNTIMEНастраивает доступные JavaScript runtime для экстракторов.Используется только там, где сайту нужна JavaScript-обработка; наличие FFmpeg эту зависимость не заменяет.
-s / --simulateИмитирует обработку без обычной загрузки медиа.Хороший первый шаг перед длинным плейлистом, сложным фильтром или новым шаблоном пути.
-O TEMPLATE / --printПечатает выбранные поля по шаблону.Позволяет быстро проверять метаданные и строить скрипты без разбора произвольных строк прогресса.
-jВыводит JSON для каждого обрабатываемого объекта.Подходит для потоковой автоматизации, где каждый элемент читается отдельно.
-JВыводит единый JSON для объекта или плейлиста.Удобен, когда внешней программе нужно получить структуру коллекции одной порцией.
-vВключает подробный диагностический журнал.Смотрите не только последнюю строку: выше видны конфиги, зависимости и экстрактор, которые часто объясняют сбой.
-UЗапускает поддерживаемый механизм обновления автономной сборки.Для установок менеджером пакетов следует использовать менеджер, а не подменять управляемый файл вручную.
--ignore-configОтключает чтение конфигурационных файлов.Нужен для чистого теста, когда поведение не соответствует ключам, видимым в командной строке.
--config-locations PATHУказывает дополнительное расположение конфигурации.Удобно для отдельного профиля автоматизации, который не должен зависеть от пользовательских настроек.

Практические сценарии и ожидаемый результат

Команды ниже показывают связь между задачей и конкретным механизмом yt-dlp. Перед использованием вместо URL или PLAYLIST_URL подставляется адрес поддерживаемой страницы; для сложной очереди разумно сначала выполнить тот же выбор в режиме симуляции.

ЗадачаПример командыЧто должно произойти
Проверить, что страница распознанаyt-dlp --simulate -O "%(title)s | %(id)s" URLМедиа не загружается; в терминале появляется название и стабильный идентификатор, если экстрактор получил эти поля.
Посмотреть все форматыyt-dlp -F URLПоявляется таблица потоков с ID и свойствами; по ней можно выбирать разрешение, кодек и наличие звука.
Взять лучшее видео и аудиоyt-dlp -f "bv+ba/b" URLПри наличии раздельных потоков они загружаются и объединяются FFmpeg; запасной вариант выбирает готовый объединённый формат.
Ограничить высоту видеоyt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URLВыбирается подходящий поток не выше указанной высоты; если выражение слишком строгое, сначала нужно свериться с -F.
Сохранить только звукyt-dlp -x --audio-format mp3 URLПосле получения исходного медиа FFmpeg создаёт аудиофайл выбранного типа; качество ограничено исходной дорожкой.
Скачать ручные субтитры двух языковyt-dlp --write-subs --sub-langs "ru,en" URLСохраняются только реально доступные дорожки с указанными кодами; отсутствующий язык не генерируется.
Проверить языки субтитровyt-dlp --list-subs URLТерминал показывает доступные ручные и автоматические варианты, после чего можно уточнить --sub-langs.
Сохранить метаданные рядом с медиаyt-dlp --write-info-json --write-thumbnail URLВ каталоге появляются служебный JSON и доступная миниатюра вместе с основным файлом.
Организовать файлы по авторуyt-dlp -o "%(uploader)s/%(title)s [%(id)s].%(ext)s" URLПуть строится из метаданных; ID помогает различать одинаковые названия и упрощает повторную идентификацию.
Загрузить очередь из файлаyt-dlp -a queue.txtАдреса читаются построчно и обрабатываются последовательно в рамках одного запуска.
Не скачивать уже обработанные элементыyt-dlp --download-archive archive.txt PLAYLIST_URLПосле успешной загрузки идентификатор записывается в архив, а при следующем запуске совпавшие элементы пропускаются.
Получить только первые тестовые элементыyt-dlp --max-downloads 3 PLAYLIST_URLКоманда завершает обработку после трёх успешных загрузок, что удобно для проверки шаблонов и свободного места.
Ограничить скоростьyt-dlp -r 2M URLЗагрузка не старается занять весь канал; реальная скорость также зависит от сервера и сетевого маршрута.
Использовать собственную браузерную сессиюyt-dlp --cookies-from-browser firefox URLЭкстрактор получает cookies указанного профиля; этот режим нужен только там, где сайт требует авторизацию или подтверждённую сессию.
Скачать временной участокyt-dlp --download-sections "*00:10:00-00:12:30" URLПрограмма пытается получить указанный интервал; точность границ зависит от потока, ключевых кадров и работы FFmpeg.
Разделить файл по главамyt-dlp --split-chapters URLПри наличии глав и FFmpeg создаются отдельные файлы по границам глав; без разметки делить материал не по чему.
Проверить настройки без пользовательского конфигаyt-dlp --ignore-config -v URLЗапуск использует параметры команды без обычных конфигурационных файлов и показывает подробную диагностику.
Получить JSON вместо обычного прогрессаyt-dlp -J --simulate PLAYLIST_URLВнешний скрипт получает структурированные сведения о коллекции без фактического скачивания медиаданных.
Сделать переносимые именаyt-dlp --windows-filenames -o "%(title)s [%(id)s].%(ext)s" URLИмена нормализуются с учётом ограничений Windows, что полезно для архива на общем диске.
Проверить зависимости и экстракторyt-dlp -v --simulate URLВ журнале видны обнаруженные FFmpeg, JavaScript runtime, конфиги и используемый экстрактор; это отправная точка диагностики.

Диагностика по симптомам

У yt-dlp ошибка часто относится к конкретному этапу: запуску программы, извлечению страницы, сетевой загрузке или постобработке. Поэтому полезнее сначала определить этап сбоя, чем менять сразу несколько параметров. В таблице приведены типичные признаки и первая проверка.

СимптомЧто это обычно означаетЧто проверить первым
Команда не запускаетсяОболочка пишет, что yt-dlp не найден.Проверить реальное расположение бинарника или Python-скрипта, PATH и права на выполнение; проблема возникает до работы экстрактора.
Сайт открывается в браузере, но yt-dlp получает 403В журнале запрос к странице или медиасегменту отклонён.Получить новый диагностический журнал, проверить необходимость cookies и не использовать старые временные ссылки на сегменты.
Возникает 429Сервер ограничивает частоту запросов.Снизить параллелизм и частоту обращений, дать лимиту истечь; дополнительные потоки обычно ухудшают ситуацию.
Формат по -f не найденПоявляется сообщение, что requested format недоступен.Сначала выполнить -F, затем ослабить фильтр по одному условию и учитывать раздельные видео/аудиодорожки.
Скачалось видео без звукаБыл выбран video-only поток.Выбрать выражение с отдельной аудиодорожкой и обеспечить FFmpeg для объединения либо выбрать готовый формат с обоими типами дорожек.
Скачался звук без картинкиБыл выбран audio-only ID или включён -x.Проверить команду и список форматов; извлечение аудио специально удаляет потребность в видеодорожке.
Получены два временных файла, но нет итоговогоСбой произошёл на этапе объединения.Проверить наличие FFmpeg, свободное место и полный текст ошибки постобработчика; сами загрузки могли завершиться успешно.
После --recode-video работа идёт очень долгоFFmpeg перекодирует содержимое вместо простой смены контейнера.Если кодеки совместимы с нужным контейнером, рассмотреть remux; если нужна смена кодека, длительность обработки ожидаема.
Субтитры не скачалисьЗапрошенного языка или типа дорожки нет.Посмотреть --list-subs, проверить код языка и при необходимости отдельно разрешить автоматически созданные субтитры.
Субтитры сохранились рядом, но не встроилисьКонтейнер или формат дорожки не подходит для выбранной операции.Проверить FFmpeg и совместимость формата субтитров с контейнером; внешний файл сам по себе уже является успешной загрузкой.
Плейлист содержит меньше файлов, чем ожидаетсяЧасть элементов пропущена фильтром, архивом или индивидуальными ошибками.Посмотреть диагностический вывод, диапазон элементов, --match-filter и файл download archive прежде чем повторять всё заново.
Повторный запуск ничего не скачиваетИдентификаторы уже присутствуют в download archive.Это ожидаемо для периодического обновления коллекции; удалить запись стоит только если элемент действительно нужно получить повторно.
Файлы оказываются не в том каталогеНа путь влияет -P, -o или сохранённый конфиг.Запустить с --ignore-config, вывести предполагаемый путь через --print и затем исправить одно правило.
Имя файла обрезано или измененоСработали ограничения файловой системы или ключи нормализации имён.Проверить --restrict-filenames, --windows-filenames и длину полного пути; не полагаться только на title как уникальный ключ.
Нет места во время постобработкиВременные потоки и новый итоговый файл одновременно занимают диск.Освободить пространство или перенести temp-каталог; оценивать запас по исходным дорожкам плюс создаваемому результату.
Cookies не помогаютПроблема не связана с обычной авторизованной сессией либо cookies истекли.Проверить диагностический журнал и заново получить собственную сессию; cookies не обходят DRM и не снимают ограничения сервиса.
Появилось требование JavaScript runtimeЭкстрактор не может завершить нужный JavaScript challenge.Установить поддерживаемый runtime согласно документации и проверить его обнаружение через -v; FFmpeg к этому этапу не относится.
После обновления ОС скрипт сломалсяИзменились PATH, Python-окружение, права или синтаксис вызывающей оболочки.Сначала проверить --version, -v и доступность зависимостей, затем уже менять параметры загрузки.
Участок --download-sections начинается не на точной секундеГраница попала между ключевыми кадрами.Если точность важнее скорости, использовать режим принудительных ключевых кадров с FFmpeg и учитывать перекодирование.
SponsorBlock ничего не удалилДля материала нет подходящих сегментов выбранной категории или постобработка недоступна.Проверить категории и наличие данных; не ожидать, что yt-dlp самостоятельно распознаёт рекламные фрагменты по изображению.
Плагин не загрузилсяФайл находится не в ожидаемой структуре или несовместим с механизмом плагинов.Проверить каталог через --plugin-dirs, структуру пакета и диагностику; неизвестный код не следует подключать ради теста.
JSON-парсер ломается на обычном выводеСкрипт читает прогресс вместо машинного режима.Использовать -j, -J или точечный --print и отделять диагностический stderr от данных.
Скорость ниже заданного лимитаЛимит задаёт максимум, а не гарантированную пропускную способность.Проверить сервер, сеть, число фрагментов и отсутствие повторов; увеличение лимита не ускоряет медленный источник автоматически.
Работает один ролик, но не весь каналКоллекция использует другой тип страницы, пагинацию или отдельные недоступные элементы.Проверить URL коллекции в симуляции, количество извлечённых элементов и ошибки отдельных записей, не перенося вывод с одного видео на весь сайт.

Подробный диагностический вывод yt-dlp

Производительность, параллельные фрагменты и нагрузка

Скорость yt-dlp определяется не одним параметром. Для обычного прямого файла пределом чаще становится сервер или сеть, для HLS/DASH — ещё и количество фрагментов, а после загрузки время может уходить на FFmpeg. Поэтому значение в строке прогресса во время скачивания нельзя напрямую переносить на общее время задания, если затем выполняются объединение, извлечение аудио или перекодирование.

-N увеличивает число одновременно получаемых фрагментов. Умеренный параллелизм способен лучше использовать быстрый канал, но слишком большое значение создаёт больше запросов, увеличивает вероятность ограничений сервера и не ускоряет источник, который сам выдаёт данные медленно. Для стабильной пакетной очереди значение стоит повышать постепенно и следить не только за скоростью, но и за повторами и кодами HTTP.

Операции remux и merge обычно заметно дешевле полного перекодирования: FFmpeg в основном перепаковывает или соединяет готовые дорожки. --recode-video, преобразование аудио и принудительные ключевые кадры требуют декодирования и кодирования, поэтому сильнее нагружают процессор и занимают больше времени. Это ожидаемая разница между загрузкой и медиапостобработкой.

yt-dlp не предоставляет универсального переключателя использовать GPU для всего процесса. Само извлечение страниц и скачивание от GPU не ускоряются. Аппаратное кодирование, если оно вообще нужно в конкретной задаче, относится к возможностям установленного FFmpeg и его параметрам; такая настройка требует понимания выбранного кодека и не является встроенным профилем yt-dlp.

Проверка обновления yt-dlp

Как выбирать качество без бессмысленного увеличения файла

Качество на видеосайтах описывается не только разрешением. Два потока 1080p могут отличаться кодеком, частотой кадров, битрейтом, динамическим диапазоном и эффективностью сжатия. Поэтому правило всегда брать самый большой файл не равно правилу всегда получать лучший результат. Удобнее сначала определить, что важнее: совместимость проигрывателя, максимальная детализация, небольшой объём или быстрый монтаж после загрузки.

Если конечное устройство плохо поддерживает AV1 или VP9, выбор более привычного кодека иногда практичнее формально более эффективного потока. В обратной ситуации современный кодек может дать сопоставимое визуальное качество при меньшем размере. yt-dlp позволяет сортировать и фильтровать по свойствам формата, но не оценивает субъективное качество картинки вместо пользователя.

Перекодирование после загрузки не восстанавливает детали, которых не было в исходнике. Например, перевод низкобитрейтного видео в контейнер или кодек с большим целевым битрейтом увеличит объём, но не превратит его в более качественный исходник. Если сайт уже предлагает подходящий поток, предпочтительнее скачать его напрямую и ограничиться remux при необходимости совместимого контейнера.

Для аудио действует тот же принцип. Преобразование с потерями в MP3 не улучшает исходный AAC или Opus. Если задача — архивирование, полезно понимать, какой аудиопоток отдаёт источник; если задача — совместимость, перекодирование может быть оправдано, но это компромисс, а не повышение качества.

Медиатека, архив загрузок и повторяемые запуски

Для регулярно пополняемой коллекции удобно разделить три понятия: адрес источника, правило именования и файл download archive. Адрес говорит, что проверять; шаблон определяет, куда класть новые файлы; архив идентификаторов отвечает, что уже было успешно обработано. Вместе эти механизмы превращают повторный запуск в предсказуемое обновление медиатеки без ручной сверки сотен имён.

В шаблон стоит включать стабильный идентификатор материала. Заголовок может измениться, два разных ролика могут называться одинаково, а символы в названии могут нормализоваться файловой системой. Идентификатор помогает связать файл с записью JSON и с архивом загрузок даже если заголовок на сайте изменился.

Файл архива нужно резервировать так же, как конфигурацию. Если он потерян, yt-dlp не узнает из одного только факта существования похожих имён, какие элементы считались успешно завершёнными. Обратная ошибка — механически копировать один архив для двух независимых коллекций, если правила идентификации пересекаются не так, как ожидалось.

После изменения формата или шаблона следует решить, нужно ли заново получать старые материалы. Download archive намеренно не делает различия между скачан в MP4 и скачан в другом контейнере: его задача — помнить сам обработанный идентификатор. Если требуется создать вторую коллекцию с другими правилами, практичнее использовать отдельный архив либо явно управлять повторной обработкой.

Временные файлы, прерванная загрузка и восстановление

Во время загрузки yt-dlp может использовать временные имена и частичные файлы, а после завершения заменять временные имена итоговыми. Для раздельных видео- и аудиопотоков до объединения также существуют отдельные дорожки. Поэтому наличие нескольких файлов рядом с ожидаемым результатом не обязательно означает ошибку: важно смотреть, на каком этапе находится процесс.

При сетевом обрыве поддерживаемые загрузчики способны продолжать частично полученный файл, если команда и сервер позволяют докачку. Но продолжение не должно подменять диагностику, когда один и тот же сегмент стабильно запрещён сервером. В таком случае повтор будет каждый раз доходить до той же точки и снова завершаться ошибкой.

После аварийного завершения не следует сразу удалять все промежуточные файлы. Сначала нужно прочитать последнюю часть журнала: возможно, медиа уже полностью скачано, а сбой произошёл только в FFmpeg. Тогда повторная загрузка гигабайтов не нужна — требуется устранить проблему постобработки. Для большой очереди это существенно экономит трафик.

Каталог временных файлов можно отделять от итоговой медиатеки, если схема путей настроена соответствующим образом. Это полезно при работе с быстрым временным диском, но свободное место нужно оценивать на обоих носителях. Финальное перемещение также может потребовать времени, особенно если каталоги находятся на разных файловых системах.

Cookies, токены и плагины: что считать чувствительными данными

Cookies из браузера представляют действующую пользовательскую сессию. Их нельзя считать безобидной настройкой только потому, что yt-dlp читает их через один параметр. Файл cookies, экспорт профиля или диагностический журнал с заголовками следует хранить так, чтобы посторонний человек не мог использовать данные сессии.

Для типичной публичной страницы cookies вообще не нужны. Их стоит добавлять, когда сайт требует вход, возрастное подтверждение в уже разрешённой учётной записи или иной доступ, который пользователь действительно имеет. Если проблема не связана с авторизацией, передача cookies увеличивает объём чувствительных данных без пользы.

Плагины отличаются по риску от обычных параметров. Совместимый плагин экстрактора или постобработчика является исполняемым Python-кодом и получает те же права, что процесс yt-dlp. Поэтому подключать случайный ZIP из неизвестного источника ради поддержки одного сайта небезопасно. Нужны понятное происхождение, проверяемое содержимое и соответствие механизму плагинов проекта.

Секреты не следует встраивать в общий конфигурационный файл, который хранится в репозитории вместе со скриптами. Гораздо безопаснее отделить воспроизводимые настройки качества и путей от данных конкретной сессии. Тогда конфигурацию можно переносить и проверять без риска случайно опубликовать доступ к аккаунту.

Сообщение yt-dlp о недоступности DRM-защищённого потока

Автоматизация: где заканчивается yt-dlp и начинается ваш скрипт

yt-dlp предоставляет множество машинно-ориентированных средств — JSON-вывод, --print, шаблоны, архив загрузок, пакетный файл и Python API. Однако расписание по часам, уведомления в мессенджер, очистка старых каталогов или перенос файлов на сервер не являются отдельным встроенным диспетчером программы. Эти действия обычно выполняет оболочка, планировщик операционной системы или собственный Python-код.

Надёжный сценарий сначала отделяет получение метаданных от необратимых действий. Например, можно в симуляции получить идентификаторы и названия, проверить фильтр, затем запустить фактическую загрузку, а после успешного завершения передать итоговый путь следующему процессу. Такой порядок проще диагностировать, чем один огромный скрипт, в котором непонятно, какой компонент завершился с ошибкой.

Для интеграции с Python предпочтительнее использовать документированный класс YoutubeDL, если программе нужны структурированные параметры и результаты. Запуск внешней командной строки тоже допустим, но тогда нужно правильно обрабатывать код возврата, stdout, stderr и правила кавычек конкретной системы. Нельзя считать успешным только факт появления текста в терминале.

Если скрипт обслуживает много сайтов, ошибки следует хранить вместе с адресом и временем запуска, а не перезапускать всю очередь вслепую. Экстракторы зависят от структуры сторонних сайтов, поэтому отдельный источник может временно ломаться, когда остальные продолжают работать нормально.

Сравнение yt-dlp с аналогами

ПрограммаЛучше подходит дляГлавное ограничение
yt-dlpГибкая загрузка видео, аудио, плейлистов, субтитров и метаданных с большим числом настраиваемых правил.Командная строка требует освоения параметров; поддержка конкретного сайта зависит от его текущей разметки и API.
youtube-dlБазовые сценарии загрузки медиа из командной строки и совместимость со знакомым синтаксисом.Меньше дополнительных правил выбора форматов и постобработки, присутствующих в yt-dlp.
StreamlinkПолучение потокового видео и передача потока в проигрыватель или файл, особенно для прямых эфиров.Ориентирован прежде всего на потоки, а не на богатую постобработку, метаданные и универсальную архивацию плейлистов.
You-GetПростая загрузка медиа из командной строки с небольшим количеством основных действий.Настройка выбора форматов и постобработки менее детальна и неодинакова для разных сайтов.
LuxCLI-загрузка видео и плейлистов в компактном инструменте на Go.Поддерживаемых сайтов и тонких правил обработки меньше; для объединения потоков также может потребоваться FFmpeg.

Практически yt-dlp стоит выбирать, когда важны точный выбор потоков, сложные шаблоны имён, субтитры, архив уже обработанных элементов и управляемая FFmpeg-постобработка. Streamlink логичнее там, где главная задача — открыть или сохранить живой поток, а не строить медиатеку. youtube-dl удобен для уже существующих простых сценариев с его синтаксисом, You-Get — для минимального набора команд, Lux — когда нужен компактный Go-инструмент. Перед окончательным выбором всё равно следует проверить конкретный сайт: одинаковый класс программ не означает одинаковый набор рабочих экстракторов.

Когда yt-dlp действительно подходит для задачи

yt-dlp уместен, если исходный материал находится на поддерживаемом сайте и его нужно сохранить с контролем качества, дорожек, субтитров, имён и метаданных. Он особенно силён в повторяемых задачах: плейлистах, каналах, пакетных списках, периодическом пополнении коллекции через download archive и автоматизации, где результат нужен в JSON.

Если задача начинается уже с готовых файлов на диске и требует визуально переставлять сцены, кадрировать изображение, править цвет, стабилизировать камеру или собирать многодорожечный проект, yt-dlp не заменяет видеоредактор. Он может передать загруженное медиа FFmpeg для конкретных документированных операций, но не предоставляет монтажный таймлайн и визуальные инструменты коррекции.

Для надёжной работы достаточно придерживаться последовательности: сначала проверить распознавание адреса, затем посмотреть форматы и субтитры, после этого сформулировать выбор, проверить итоговый путь и только затем запускать длинную очередь. При ошибке нужно определить этап сбоя через -v: экстрактор, сеть, авторизация, зависимость или постобработка. Такой подход делает сложные команды yt-dlp управляемыми и воспроизводимыми.