youtube-dl позволяет сохранять видео и аудио с поддерживаемых сайтов, выбирать качество и формат потока, загружать плейлисты и субтитры, извлекать звук, сохранять метаданные и управлять именами файлов из командной строки.
Работа строится вокруг одной команды: после имени youtube-dl указывается адрес ролика, плейлиста или другой поддерживаемой страницы, а перед ним или после него — параметры. Отдельного окна с кнопками и меню у программы нет: список форматов, прогресс, предупреждения и результат выводятся в терминал. Такой подход сначала требует привыкания к синтаксису, зато хорошо подходит для повторяемых задач, пакетной обработки и автоматизации.
Главное отличие youtube-dl от простого загрузчика по прямой ссылке заключается в системе экстракторов. Программа разбирает страницу видеосервиса, получает доступные медиапотоки и метаданные, после чего применяет правила выбора качества, имени файла, плейлиста, субтитров и постобработки. Возможности зависят от конкретного сайта: одни источники отдают единый файл с видео и звуком, другие предлагают раздельные DASH- или HLS-потоки, а для объединения и перекодирования в таких сценариях нужен FFmpeg или совместимый инструмент.
Скачать youtube-dl
- Конвертация видео
- Сжатие файлов
- Просто для новичков
- Нет графического интерфейса
- FFmpeg нужен для слияния
- Команды требуют освоения
Как устроена работа с youtube-dl
У youtube-dl нет графических вкладок и диалогов. Вся логика задаётся параметрами командной строки. Базовая схема выглядит как youtube-dl [OPTIONS] URL [URL...]: можно передать один адрес, несколько адресов подряд либо файл со списком. Если дополнительных параметров нет, программа определяет подходящий экстрактор, извлекает информацию о медиа и старается выбрать наиболее качественный вариант по своим стандартным правилам.
В терминале видны этапы работы: определение источника, получение страницы или служебных данных, чтение манифеста, выбор форматов, имя назначения, процент загрузки, скорость и примерное оставшееся время. При раздельных видеопотоке и аудиопотоке дополнительно появляются сообщения о слиянии. Если нужен только анализ страницы без записи медиа, используются режимы симуляции и вывода метаданных.
Команды удобно воспринимать как набор независимых слоёв. Параметры выбора видео определяют, какие элементы плейлиста вообще попадут в работу. Форматные выражения решают, какой поток брать. Параметры файловой системы задают имя и каталог. Сетевые опции управляют прокси, тайм-аутами и IP-стеком. Опции постобработки подключают FFmpeg, а параметры вывода меняют количество диагностической информации. Благодаря этому одну и ту же команду можно постепенно усложнять, не меняя основной принцип.
Базовая загрузка одного ролика
Для простого сохранения достаточно выполнить команду вида youtube-dl VIDEO_URL. Файл появится в текущем рабочем каталоге терминала. Стандартное имя строится из заголовка, идентификатора и расширения. Это важно учитывать на Windows, macOS и Linux: youtube-dl не спрашивает папку назначения отдельным диалогом, поэтому каталог определяется тем, откуда запущена команда, либо явно задаётся через шаблон -o.
youtube-dl VIDEO_URL
Если в адресе присутствуют символы, которые оболочка трактует специально, прежде всего амперсанд, адрес следует заключить в кавычки. Иначе часть строки может быть обработана самой командной оболочкой и до youtube-dl не дойдёт. На Windows обычно применяются двойные кавычки; в Unix-подобных оболочках подходят одинарные или двойные, если внутри не требуется подстановка переменных.
При нескольких адресах их можно перечислить последовательно. youtube-dl обработает их один за другим. Такой режим удобен для короткой очереди, но для десятков ссылок практичнее пакетный файл, чтобы команда не превращалась в длинную строку и список можно было редактировать отдельно.
Список доступных форматов: параметр -F
Одна из самых полезных команд — -F или её полная форма --list-formats. Она не выбирает качество вслепую, а выводит таблицу потоков, которые обнаружил экстрактор для конкретной страницы. Обычно в таблице присутствуют код формата, контейнер или расширение, разрешение, примечание, кодеки, частота кадров, битрейт и приблизительный размер, если источник его сообщает.
youtube-dl -F VIDEO_URL
Код формата нельзя воспринимать как универсальную характеристику качества для всех сайтов и роликов. Документация прямо предупреждает, что идентификаторы зависят от экстрактора. Даже если на одном ролике определённый номер соответствует MP4 720p, на другом набор доступных кодов может отличаться. Надёжный рабочий процесс для ручного выбора состоит из двух действий: сначала выполнить -F, затем передать нужный код через -f.
В списке особенно важно различать строки video only, audio only и варианты, уже содержащие оба потока. Высокие разрешения на видеосервисах часто представлены отдельным видео без звука. Если выбрать только такую строку, на диске появится корректный видеопоток без аудиодорожки. Для привычного итогового файла нужно одновременно выбрать видеопоток и аудиопоток и затем объединить их.
Выбор конкретного формата через -f
Параметр -f принимает не только один числовой идентификатор, но и полноценное выражение выбора. Простейший вариант — youtube-dl -f FORMAT_ID VIDEO_URL. Он полезен, когда после -F точно известно, какую строку необходимо скачать. Для повторяемых задач лучше опираться не на конкретный номер, а на свойства: расширение, разрешение, размер, кодек или общий класс потока.
youtube-dl -f 22 VIDEO_URL
youtube-dl -f best VIDEO_URL
youtube-dl -f bestaudio VIDEO_URL
youtube-dl -f worstvideo VIDEO_URL
Специальное значение best означает лучший единый файл, который уже содержит видео и аудио. bestvideo выбирает лучший видеопоток без гарантии наличия звука, а bestaudio — лучший аудиопоток. Существуют и варианты worst, worstvideo, worstaudio, полезные для проверки, экономии трафика или получения минимального размера.
Слэш задаёт порядок запасных вариантов. Выражение 22/17/18 означает: сначала попытаться взять формат 22, при его отсутствии — 17, затем 18. Запятая имеет другое значение и просит скачать несколько форматов отдельно. Плюс объединяет видео и аудио в один итоговый файл: bestvideo+bestaudio. Поэтому символы в форматном выражении нельзя считать взаимозаменяемыми.
Фильтры по разрешению, размеру и другим свойствам
Форматные выражения поддерживают условия в квадратных скобках. Это позволяет описать требование без привязки к идентификатору конкретного сервиса. Например, ограничение высоты подходит для ситуации, когда нужен ролик не выше 720p независимо от того, какие коды форматов вернул сайт.
youtube-dl -f "best[height<=720]" VIDEO_URL
youtube-dl -f "bestvideo[height<=?1080]+bestaudio/best" VIDEO_URL
youtube-dl -f "best[filesize<50M]" VIDEO_URL
Числовые поля можно сравнивать операторами меньше, больше, равно и не равно. В форматных фильтрах встречаются filesize, height, width, суммарный битрейт tbr, аудиобитрейт abr, видеобитрейт vbr, частота дискретизации asr и частота кадров fps. Строковые свойства включают расширение, аудиокодек, видеокодек, контейнер и протокол.
Не каждый экстрактор заполняет все метаданные. Если значение неизвестно, обычное условие может исключить формат из выборки. В синтаксисе есть вариант с вопросительным знаком после оператора, позволяющий не отбрасывать поток только из-за неизвестного значения. Это существенно для неоднородных плейлистов, где часть роликов содержит точный размер, а часть — нет.
Раздельные видео и аудио: зачем нужен FFmpeg
На многих источниках лучшее качество хранится раздельно: видеопоток имеет высокое разрешение, но не содержит аудио, а звук представлен отдельным M4A, WebM или другим потоком. Выражение bestvideo+bestaudio просит youtube-dl получить оба компонента. После загрузки программа передаёт их постпроцессору для мультиплексирования — упаковки готовых потоков в общий контейнер без обязательного перекодирования.
Для такого сценария youtube-dl использует FFmpeg или совместимые утилиты, если они доступны в системе. При отсутствии подходящего постпроцессора программа может быть вынуждена выбрать лучший единый формат, а некоторые операции — извлечение MP3, перекодирование и встраивание дорожек — просто не смогут выполниться. Поэтому установка youtube-dl и наличие FFmpeg — два разных вопроса: базовая загрузка возможна без него, а комплексная работа с потоками часто зависит от него.
Опция --merge-output-format задаёт предпочтительный контейнер при необходимости слияния. Поддерживаемые значения в параметрах youtube-dl включают MKV, MP4, OGG, WebM и FLV. Эта настройка не превращает любой кодек в любой другой: контейнер и кодек — разные уровни. Если выбранные потоки несовместимы с желаемым контейнером, возможна другая упаковка или необходимость перекодирования.
Контейнер, расширение и кодек — не одно и то же
В выводе -F расширение вроде MP4 или WebM указывает прежде всего на контейнер, а рядом могут быть сведения о видеокодеке и аудиокодеке. Два файла с расширением MP4 способны содержать разные кодеки и по-разному воспроизводиться на старом телевизоре, монтажной системе или аппаратном плеере. Поэтому запрос -f mp4 выбирает лучший единый формат с таким расширением, но не гарантирует конкретный H.264-профиль, AAC-параметры или разрешение.
Когда требуется максимально предсказуемая совместимость, полезно комбинировать условия. Типичный шаблон выбирает лучший MP4-видеопоток и M4A-аудио, затем использует запасной единый MP4 и только после этого любой лучший формат. Такой подход лучше, чем жёстко закреплять один код формата, если команда должна работать с разными роликами.
youtube-dl -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" VIDEO_URL
Опция --recode-video относится уже к перекодированию. Она заставляет постпроцессор при необходимости кодировать видео в указанный формат. Это заметно тяжелее для процессора и может менять качество, в отличие от простого слияния уже готовых потоков. Поэтому применять её стоит по конкретной причине: совместимость с программой, устройством или заданным рабочим стандартом.
Извлечение аудио и преобразование в MP3, M4A, FLAC и другие форматы
Ключ -x или --extract-audio переводит задачу в режим получения аудиофайла. Если формат явно не задан, youtube-dl выбирает подходящий аудиопоток и запускает постобработку. Параметр --audio-format позволяет запросить AAC, FLAC, MP3, M4A, Opus, Vorbis, WAV либо значение best. Для конвертации нужен FFmpeg или совместимый набор инструментов.
youtube-dl -x VIDEO_URL
youtube-dl -x --audio-format mp3 VIDEO_URL
youtube-dl -x --audio-format flac VIDEO_URL
Параметр --audio-quality управляет качеством преобразования: поддерживается шкала VBR от 0, где качество выше, до 9, где оно ниже, либо конкретный битрейт вроде 128K. Важно понимать, что конвертация не создаёт качества, которого не было в исходном потоке. Перекодирование с низкобитрейтного Opus в MP3 320 Кбит/с увеличит размер, но не вернёт потерянные детали.
По умолчанию временный видеофайл после успешного извлечения звука удаляется. Ключ -k или --keep-video сохраняет исходник вместе с итоговым аудио. Это удобно, если один и тот же материал нужен и как видео, и как отдельная аудиодорожка, либо если исходный поток планируется обработать другим инструментом позже.
Субтитры: просмотр языков, загрузка и встраивание
youtube-dl умеет работать с субтитрами, когда экстрактор источника предоставляет соответствующую информацию. Команда --list-subs показывает доступные дорожки и языковые коды. --write-sub сохраняет обычные субтитры, --write-auto-sub — автоматически созданные дорожки там, где такой тип поддерживается, а --all-subs запрашивает все доступные варианты.
youtube-dl --list-subs VIDEO_URL
youtube-dl --write-sub --sub-lang ru VIDEO_URL
youtube-dl --write-auto-sub --sub-lang en VIDEO_URL
Формат субтитров задаётся через --sub-format. Можно указать один вариант или цепочку предпочтений, например ass/srt/best. Если нужен итоговый видеоконтейнер со встроенными субтитрами, применяется --embed-subs. Встраивание относится к постобработке и зависит от FFmpeg; документация youtube-dl ограничивает эту операцию контейнерами MP4, WebM и MKV.
Автоматические субтитры и авторские субтитры — разные сущности. Первые формируются сервисом распознавания речи и могут содержать ошибки, вторые загружены автором или редактором. При подготовке архива разумно сначала выполнить --list-subs, чтобы увидеть реальные языковые метки и не полагаться на предположение вроде ru или en, которое на конкретной странице может отсутствовать.
Плейлисты и выбор отдельных элементов
Если передан адрес плейлиста, youtube-dl умеет пройти по его элементам последовательно. Для ограничения диапазона есть --playlist-start и --playlist-end, а --playlist-items позволяет задать точные позиции и диапазоны, например 1,2,5,8 или 1-3,7,10-13. Нумерация относится к позиции элемента в плейлисте, а не к идентификатору видео.
youtube-dl --playlist-items 1,3,5 PLAYLIST_URL
youtube-dl --playlist-start 10 --playlist-end 20 PLAYLIST_URL
Параметр --playlist-reverse разворачивает порядок, а --playlist-random случайно перемешивает последовательность. --flat-playlist действует иначе: он не извлекает каждое видео полностью, а ограничивается более поверхностным перечислением элементов. Такой режим полезен в сценариях инвентаризации и последующей обработки идентификаторов, но его данные могут быть менее полными, чем при полноценной обработке каждой страницы.
При пакетной загрузке особенно полезен -i или --ignore-errors. Без него ошибка на одном элементе может прервать дальнейшую работу в зависимости от настроек. С -i недоступный или удалённый ролик пропускается, и очередь продолжается. Обратное поведение задаётся --abort-on-error.
Пакетный файл и несколько адресов
Для больших списков используется -a FILE или --batch-file FILE. В файле адреса располагаются по одному на строку. Поддерживается чтение из стандартного ввода, если вместо имени файла указать дефис. Строки, распознаваемые как комментарии, можно использовать для пояснений внутри списка.
youtube-dl -a queue.txt
youtube-dl -i -a queue.txt
Пакетный файл отделяет список источников от политики загрузки. Один и тот же queue.txt можно обрабатывать разными командами: один раз сохранить только метаданные, другой раз получить аудио, третий — скачать видео с ограничением 720p. Это удобнее, чем копировать десятки адресов в сценарий или оболочку.
Для регулярно обновляемого списка полезна связка с --download-archive. Этот параметр ведёт файл уже обработанных идентификаторов и позволяет пропускать медиа, которые ранее были успешно загружены. В отличие от проверки существования имени на диске, архив ориентируется на идентификаторы и меньше зависит от изменения шаблона имени файла.
Шаблоны имён и каталогов через -o
Опция -o или --output задаёт шаблон итогового пути. Внутри используются поля вида %(title)s, %(id)s, %(ext)s. Значения подставляются после извлечения метаданных. Стандартный шаблон youtube-dl сочетает заголовок, идентификатор и расширение, что уменьшает риск коллизий для одинаково названных роликов.
youtube-dl -o "%(title)s-%(id)s.%(ext)s" VIDEO_URL
youtube-dl -o "%(uploader)s/%(title)s.%(ext)s" VIDEO_URL
youtube-dl -o "%(playlist)s/%(playlist_index)s - %(title)s.%(ext)s" PLAYLIST_URL
Шаблон может включать и каталоги. Если путь содержит подкаталог, youtube-dl создаёт недостающие директории. Для плейлистов особенно полезны playlist и playlist_index: они сохраняют структуру подборки и порядок элементов. Для каналов и музыкальных источников могут пригодиться поля автора, исполнителя, альбома, номера трека, сезона и эпизода — при условии, что конкретный экстрактор возвращает эти метаданные.
Не все поля гарантированно присутствуют. Если значение отсутствует, используется заполнитель из --output-na-placeholder, по умолчанию NA. Параметр --restrict-filenames ограничивает имя ASCII-символами и избегает пробелов и ряда специальных знаков. Это полезно при переносе архива на старые устройства, в скрипты с неаккуратным экранированием или на файловые системы с более жёсткими ограничениями.
Как избежать перезаписи и сохранить частичные загрузки
Параметр -w или --no-overwrites запрещает перезаписывать существующие файлы. Для прерванных загрузок действует -c или --continue; продолжение включено по умолчанию там, где протокол и сервер позволяют восстановить передачу. --no-continue заставляет начать заново.
Во время обычной загрузки youtube-dl использует временные файлы с расширением .part. После успешного завершения они переименовываются в итоговое имя. Опция --no-part отключает такой подход и пишет прямо в файл назначения. Для большинства задач временный файл безопаснее: по расширению видно, что загрузка не завершена, и медиатека не воспринимает недокачанный материал как готовый.
Если проблема возникла на фрагментированном потоке DASH, HLS или ISM, действуют отдельные счётчики повторов. --fragment-retries задаёт число попыток для фрагмента. --skip-unavailable-fragments разрешает пропуск недоступных сегментов, а --abort-on-unavailable-fragment требует прекратить загрузку. Выбор зависит от задачи: для полноты архива лучше обнаружить ошибку, а для просмотра длинной трансляции иногда приемлемо пропустить редкий повреждённый сегмент.
Метаданные, описания и миниатюры
youtube-dl может сохранять не только медиаданные. --write-description записывает описание в отдельный файл, --write-info-json создаёт файл с метаданными, а --write-thumbnail сохраняет миниатюру. --write-all-thumbnails пытается получить все варианты, а --list-thumbnails показывает доступные миниатюры без обычной загрузки видео.
youtube-dl --write-info-json --write-description --write-thumbnail VIDEO_URL
Файл .info.json ценен для архивации и автоматизации: в нём могут присутствовать идентификатор, заголовок, длительность, дата публикации, автор, сведения о форматах и другие поля, возвращённые экстрактором. Набор полей зависит от сайта. Поэтому сценарий обработки JSON должен проверять наличие ключей, а не предполагать, что каждый источник предоставляет одинаковую структуру.
Опция --load-info-json позволяет загрузить ранее сохранённый информационный файл. Это отделяет этап извлечения метаданных от дальнейшей обработки. Такая схема полезна, если сначала нужно зафиксировать состояние страницы, а затем выполнять медиаоперации по сохранённому описанию, не полагаясь на повторное извлечение всех данных.
Встраивание метаданных, субтитров и обложки
Параметр --add-metadata передаёт метаданные в итоговый медиафайл через постпроцессор. --embed-subs встраивает субтитры в поддерживаемые контейнеры, а --embed-thumbnail добавляет изображение как обложку аудиофайла, когда выбранный формат и инструменты это допускают. Эти операции выполняются после основной загрузки.
--metadata-from-title умеет извлекать дополнительные поля из заголовка по шаблону. Например, для названий вида Исполнитель - Трек можно разделить строку на artist и title. Это не распознавание музыки и не обращение к внешней базе: программа разбирает текст заголовка по заданному пользователем формату или регулярному выражению.
Ключ --xattrs записывает часть метаданных в расширенные атрибуты файловой системы по используемым программой соглашениям. Такой вариант подходит не всем системам и не заменяет метаданные внутри контейнера. Если архив переносится на другую файловую систему, xattr могут не сохраниться, поэтому для долгосрочного хранения предпочтительнее отдельный JSON и, при необходимости, встроенные теги.
JSON-вывод и использование youtube-dl в скриптах
Для автоматизации предусмотрены -j или --dump-json, а также -J или --dump-single-json. Первый режим выводит JSON-информацию по элементам, второй способен представить данные по аргументу целиком; для плейлиста это позволяет получить структуру плейлиста в одной JSON-записи. При обычном --dump-json загрузка медиа не выполняется.
youtube-dl -j VIDEO_URL
youtube-dl -J PLAYLIST_URL
Отдельные параметры --get-title, --get-id, --get-thumbnail, --get-description, --get-duration, --get-filename и --get-format выводят конкретное значение в тихом режиме. Они удобны для простых shell-скриптов, где разбирать JSON избыточно. Для сложной интеграции JSON надёжнее, потому что структура явно отделяет поля друг от друга.
--print-json отличается тем, что выводит информацию и при этом загрузка продолжается. Это удобно, если внешний процесс должен одновременно следить за тем, что фактически скачивается. Для машинного чтения полезно избегать лишнего прогресса и предупреждений либо разделять стандартный вывод и поток ошибок в оболочке.
Получение прямого адреса медиапотока через -g
Опция -g или --get-url не сохраняет видео, а печатает прямой адрес выбранного медиапотока. Если выбранное качество состоит из отдельного видео и аудио, вывод может содержать несколько адресов. Это позволяет передать загрузку внешнему менеджеру, проигрывателю или другому сетевому инструменту.
Такие адреса часто являются временными. Они могут зависеть от подписи, cookies, IP-адреса, заголовка User-Agent и срока действия. Поэтому сохранение прямой ссылки на потом ненадёжно: то, что работает сразу после извлечения, через некоторое время способно перестать открываться. Для повторяемого сценария устойчивее каждый раз запускать youtube-dl и получать свежий адрес.
Если внешний загрузчик получает отказ, хотя youtube-dl сам скачивает поток, причиной нередко оказываются cookies или HTTP-заголовки. В таком случае недостаточно скопировать только URL: принимающая программа должна воспроизвести необходимые параметры запроса. Это особенно заметно на сайтах с авторизацией, токенами и проверкой источника перехода.
Конфигурационные файлы
Чтобы не повторять постоянные параметры, youtube-dl читает конфигурационный файл. В Unix-подобных системах используется пользовательский путь в каталоге конфигурации, а на Windows — файл в профиле пользователя. В конфигурации записываются те же ключи, что и в обычной командной строке: например, шаблон имени, ограничение качества, путь к архиву загрузок, предпочитаемый контейнер или параметры субтитров.
--ignore-errors
--restrict-filenames
-o %(uploader)s/%(title)s-%(id)s.%(ext)s
-f bestvideo[height<=?1080]+bestaudio/best
--download-archive archive.txt
--ignore-config запускает youtube-dl без чтения конфигурации. Это первый диагностический шаг, если команда ведёт себя не так, как ожидается: скрытый параметр в конфиге способен менять формат, каталог или сетевые настройки. --config-location указывает другой файл или каталог конфигурации, что удобно для нескольких профилей — например, аудио, архив 1080p и метаданные без видео.
Конфигурационный файл следует хранить без секретов, которые нежелательно видеть другим пользователям системы. Для логинов и паролей лучше использовать специально предусмотренные механизмы вроде .netrc с ограниченными правами, а не оставлять пароль в общем текстовом конфиге или истории терминала.
Аутентификация, .netrc, пароли и cookies
Для сайтов, где экстрактор поддерживает учётные данные, есть -u/--username и -p/--password. Если пароль не передан параметром, программа может запросить его интерактивно. -2 передаёт код двухфакторной аутентификации, а --video-password предназначен для роликов, защищённых отдельным паролем на поддерживаемых площадках.
Ключ --netrc заставляет youtube-dl читать данные из файла .netrc. Это предпочтительнее пароля прямо в командной строке, потому что строка запуска может сохраняться в истории оболочки или быть видимой другим процессам в зависимости от системы. Файл с учётными данными должен быть доступен только владельцу.
--cookies FILE работает с cookie jar. Cookies бывают необходимы, когда сайт проверяет сессию, возраст, CAPTCHA или иной доступ, уже подтверждённый браузером. Передавать чужие cookies или публиковать собственный файл нельзя: фактически он может содержать активную сессию. Для диагностики полезно сначала убедиться, что тот же контент действительно открывается в браузере под нужной учётной записью.
Прокси, IPv4, IPv6 и сетевые параметры
--proxy принимает адрес HTTP, HTTPS или SOCKS-прокси. Пустое значение принудительно включает прямое соединение, что удобно, если прокси задан системно или в конфигурации. --socket-timeout ограничивает ожидание сетевой операции, --source-address привязывает исходящее соединение к конкретному локальному IP.
Ключи -4 и -6 принуждают использовать IPv4 или IPv6. Это полезно не для ускорения как такового, а для устранения сетевой неоднозначности: например, когда DNS возвращает оба стека, но один маршрут работает нестабильно. Если проблема исчезает с -4, это указывает на сетевой путь или конфигурацию IPv6, а не на формат видео.
В группе географических ограничений есть отдельный прокси проверки и параметры подстановки заголовка X-Forwarded-For. Они не гарантируют доступ к любому закрытому контенту: решение зависит от конкретного сайта и его механизмов. Использовать такие параметры следует только там, где это не нарушает правила источника и пользователь имеет право на доступ.
Ограничение скорости, повторы и паузы
Параметр -r или --limit-rate задаёт максимальную скорость в байтах в секунду с суффиксами вроде K и M. Ограничение полезно, если загрузка не должна занимать весь канал. -R/--retries задаёт число повторов обычной загрузки, а --fragment-retries — отдельно для фрагментированных потоков.
--sleep-interval добавляет задержку перед загрузками. В сочетании с --max-sleep-interval можно получить случайную паузу в диапазоне. Такая настройка применяется в больших очередях, где не требуется мгновенно обращаться к следующему элементу. Она не является способом обхода блокировок, но помогает не создавать ненужно плотную последовательность запросов.
Параметр --buffer-size задаёт начальный размер буфера, а --no-resize-buffer запрещает его автоматическое изменение. --http-chunk-size включает экспериментальную загрузку HTTP-частями указанного размера. Эти настройки нужны значительно реже, чем формат, имя или повтор, и менять их без конкретной сетевой проблемы обычно не требуется.
HLS, DASH, ISM и фрагментированные потоки
Современные видеосервисы часто отдают не один файл, а манифест и множество сегментов. youtube-dl умеет обрабатывать такие схемы через внутренние загрузчики или FFmpeg. Для HLS есть --hls-prefer-native и --hls-prefer-ffmpeg, определяющие предпочтительный механизм.
При сбое отдельного сегмента поведение регулируется параметрами недоступных фрагментов. Если требуется максимально точная копия трансляции, разумно прекращать процесс при потере части данных, чтобы ошибка не осталась незамеченной. Для менее критичного просмотра можно разрешить пропуск, понимая, что итоговый файл способен содержать разрыв.
--keep-fragments сохраняет загруженные сегменты после завершения. Обычно youtube-dl удаляет их, потому что пользователю нужен итоговый файл, а не сотни технических кусочков. Сохранение оправдано при диагностике, восстановлении или исследовании работы потока, но резко увеличивает количество файлов в каталоге.
Отбор видео по дате, размеру, заголовку и другим условиям
youtube-dl умеет фильтровать не только формат, но и сами элементы очереди. --date выбирает конкретную дату публикации, --datebefore и --dateafter устанавливают границы. Поддерживаются абсолютные даты вида YYYYMMDD и относительные выражения, описанные в документации.
--match-title загружает только совпадающие заголовки, а --reject-title исключает совпадения. В качестве условия может выступать регулярное выражение или регистронезависимая подстрока согласно правилам параметра. --min-filesize и --max-filesize отсеивают элементы по размеру, если размер известен до загрузки.
Для числа просмотров существуют --min-views, --max-views и связанные фильтры. Нет: youtube-dl предоставляет фильтры по числу просмотров отдельно через параметры минимального и максимального количества просмотров, если экстрактор сообщает счётчик. Также есть ограничение по возрастному рейтингу --age-limit и --max-downloads, завершающее работу после указанного числа успешно загруженных файлов.
Любой фильтр зависит от метаданных источника. Если сайт не сообщает размер, дату, просмотры или возрастную метку на этапе извлечения, условие может вести себя иначе, чем на YouTube. Поэтому перед запуском большой очереди полезно проверить несколько элементов через JSON-вывод или симуляцию.
Архив загрузок и повторные запуски
--download-archive FILE — один из наиболее практичных параметров для регулярно обновляемых каналов и подборок. После успешной загрузки программа записывает идентификатор в архив. При следующем запуске уже отмеченный элемент пропускается. Это позволяет каждый день или каждую неделю обрабатывать один и тот же адрес плейлиста, забирая только новые материалы.
Архив нужно воспринимать как журнал выполненных задач, а не как каталог файлов. Если пользователь вручную удалит видео с диска, запись в архиве останется и youtube-dl не станет скачивать его снова, пока соответствующая строка не удалена из журнала. И наоборот, смена имени файла не влияет на отметку.
При миграции между компьютерами полезно переносить архив вместе с медиатекой. Если требуется заново собрать всё содержимое, нужно осознанно создать другой archive-файл или очистить нужные записи, а не отключать механизм случайно. Для сложных коллекций разумно вести отдельные архивы по источникам, чтобы было проще понимать, что уже обработано.
Внешний загрузчик
youtube-dl может передать непосредственную передачу данных внешнему загрузчику через --external-downloader. Дополнительные аргументы задаются --external-downloader-args. Такой режим нужен, когда конкретный инструмент лучше справляется с параллельными соединениями, особой сетевой политикой или интеграцией в существующую инфраструктуру.
При этом youtube-dl всё равно выполняет ключевую работу по извлечению страницы и выбору медиапотока. Внешний загрузчик не заменяет экстрактор. Если сайт изменил структуру и youtube-dl не может получить корректный URL потока, переключение только механизма скачивания проблему не исправит.
Аргументы внешней программы требуют осторожного экранирования: кавычки сначала обрабатывает shell, затем youtube-dl, затем вызываемый загрузчик. Если команда сложная, надёжнее перенести постоянные параметры в конфигурацию или отдельный сценарий и проверять итог с -v.
Вывод в stdout и передача медиапотока по конвейеру
Шаблон вывода -o - отправляет медиа в стандартный вывод. Это позволяет строить конвейеры с проигрывателем или другим процессом, не создавая обычный файл на диске. В таком режиме youtube-dl предпочитает единый формат best, чтобы начать отдавать данные сразу, а не ждать загрузки и слияния двух отдельных потоков.
youtube-dl -o - VIDEO_URL | PLAYER_COMMAND -
Конвейер требует, чтобы принимающая программа умела читать поток из stdin. Прогресс и служебные сообщения должны быть организованы так, чтобы не смешиваться с бинарными медиаданными. Если задача заключается не в просмотре, а в долгосрочном сохранении, обычный файл проще контролировать и повторно использовать.
Передача через stdout хорошо показывает архитектуру youtube-dl: программа может быть не только конечным загрузчиком, но и источником данных для других утилит. Это особенно удобно в Unix-подобных сценариях, где несколько небольших инструментов связываются через каналы.
Тихий режим, прогресс и диагностический вывод
-q/--quiet уменьшает обычный вывод, --no-warnings скрывает предупреждения, --no-progress выключает индикатор прогресса. Для построчной обработки журнала есть --newline, при котором обновления прогресса выводятся отдельными строками вместо перезаписи одной строки терминала.
Для диагностики используется -v/--verbose. Он показывает больше сведений о конфигурации, окружении, выбранном экстракторе и процессе обработки. Именно verbose-вывод наиболее полезен при разборе неожиданного формата, ошибки SSL, сетевого отказа или проблемы FFmpeg. При обращении за технической помощью лучше предоставлять полный лог после удаления секретов и персональных данных.
--dump-pages, --write-pages и --print-traffic относятся к глубокому отладочному режиму. Они могут вывести содержимое страниц или HTTP-трафик и поэтому способны раскрыть cookies, токены и другие чувствительные данные. Такие параметры не следует включать для подробности в обычном использовании или публиковать их результат без проверки.
Проверка команды без загрузки
-s или --simulate позволяет пройти этап извлечения без скачивания видео и без записи обычных файлов. --skip-download также пропускает медиаданные, но может применяться совместно с некоторыми операциями сохранения сопутствующих материалов. Эти режимы полезны, когда нужно проверить фильтры, форматную логику, название файла или доступность источника.
Перед массовой обработкой плейлиста разумно сначала выполнить команду в режиме симуляции и убедиться, что шаблон каталога, фильтр заголовка и ограничение диапазона делают именно то, что ожидается. Это особенно важно с --playlist-items и регулярными выражениями: ошибка в условии способна исключить нужные элементы или, наоборот, охватить слишком много.
Для проверки выбранного имени без загрузки используется --get-filename, для выбранного формата — --get-format, для общей структуры — JSON. Эти команды дают больше контроля, чем попытка определить будущий результат только по строке -o.
Практический сценарий: сохранить видео до 1080p с лучшим звуком
Если нужен универсальный предел 1080p, не стоит закреплять форматный номер. Подходящее выражение выбирает лучший видеопоток с высотой не выше 1080 и добавляет лучший аудиопоток, а затем имеет запасной единый формат. Вопросительный знак возле сравнения допускает варианты, для которых высота не заполнена.
youtube-dl -f "bestvideo[height<=?1080]+bestaudio/best[height<=?1080]" VIDEO_URL
Если конечному устройству нужен MP4, можно добавить предпочтение расширений и при необходимости --merge-output-format mp4. Однако контейнер нельзя выбирать изолированно от кодеков. Для старых устройств иногда важнее H.264 и AAC, а youtube-dl не является универсальным профилировщиком совместимости. Если исходные кодеки не подходят, потребуется осознанное перекодирование через FFmpeg.
Перед запуском на большом наборе полезно применить -F к нескольким типичным роликам. Так становится видно, встречаются ли 60 fps, разные кодеки, HDR-варианты или потоки без известного размера. После этого форматное выражение можно уточнить по реальным данным источника.
Практический сценарий: собрать аудиоколлекцию
Для получения аудио используется -x, а для повторяемой коллекции стоит сразу настроить имя по исполнителю и названию, если источник предоставляет соответствующие поля. Когда таких музыкальных метаданных нет, безопаснее строить имя из uploader, title и id.
youtube-dl -x --audio-format mp3 --audio-quality 0 -o "%(uploader)s/%(title)s-%(id)s.%(ext)s" PLAYLIST_URL
Качество 0 для VBR-конвертации не означает, что исходная запись стала без потерь. Если доступен только сжатый поток, повторное кодирование в MP3 добавляет ещё один этап потерь. Для архивной копии логичнее сохранить bestaudio в исходном контейнере, а MP3 создавать только для совместимости с конкретным плеером.
Если нужно сохранить обложку и метаданные, добавляются --write-thumbnail, --embed-thumbnail и --add-metadata. Поддержка итогового результата зависит от контейнера и FFmpeg, поэтому для массового архива следует проверить один файл в целевом музыкальном проигрывателе до обработки сотен треков.
Практический сценарий: архив плейлиста без повторов
Для периодического запуска нужен стабильный шаблон каталога и archive-файл. Вместо ручного сравнения содержимого папки youtube-dl будет ориентироваться на идентификаторы уже успешно обработанных материалов. Параметр -i позволит продолжать очередь, если отдельный элемент удалён или временно недоступен.
youtube-dl -i --download-archive downloaded.txt -o "%(playlist)s/%(playlist_index)05d - %(title)s-%(id)s.%(ext)s" PLAYLIST_URL
Пять цифр в %(playlist_index)05d задают нулевое заполнение и помогают файловому менеджеру сортировать длинный список по позиции. Если порядок плейлиста может меняться, индекс отражает положение на момент конкретного запуска, а идентификатор в имени остаётся более устойчивой привязкой к самому видео.
Для регулярного выполнения нельзя забывать, что сайты меняют доступность контента, авторизацию и структуру страниц. Ошибка одного дня не обязательно означает повреждение архива; verbose-лог помогает отличить временный сетевой сбой от изменения экстрактора или удаления материала.
Практический сценарий: сохранить только субтитры и метаданные
Иногда медиапоток не нужен: требуется текст, описание, дата и служебные поля. Тогда можно сочетать --skip-download с параметрами субтитров и метаданных. Такой режим заметно экономит место и время, особенно для исследовательских коллекций и каталогов.
youtube-dl --skip-download --write-sub --write-auto-sub --write-info-json --write-description VIDEO_URL
Не следует автоматически считать, что --write-auto-sub даст текст для любого видео. Автоматическая дорожка появляется только там, где источник её предоставляет и экстрактор умеет её получить. Сначала --list-subs показывает фактический набор языков и типов.
При последующем анализе JSON полезно хранить id и extractor вместе: одинаковые короткие идентификаторы теоретически могут встречаться на разных платформах. Если шаблон имени основан только на заголовке, дубликаты названий легко сталкиваются, поэтому добавление id повышает надёжность каталога.
Практический сценарий: получить медиассылки для другого загрузчика
Связка -g и форматного селектора превращает youtube-dl в извлекатель адресов. Сначала можно получить список через -F, затем запросить URL конкретного формата или выражения. Для большого списка адреса можно выводить пакетно, но они часто имеют срок жизни, поэтому генерировать их сильно заранее не стоит.
Если внешний загрузчик поддерживает только один URL, следует выбирать единый формат best. Выражение bestvideo+bestaudio может вернуть два адреса, которые потом потребуют слияния. Это принципиальное различие: лучшее качество на современных сервисах часто означает два независимых потока.
При передаче ссылки на другой компьютер может возникнуть отказ, даже если URL ещё не истёк. Некоторые сервисы привязывают выдачу к IP, cookies или заголовкам. Поэтому youtube-dl надёжнее использовать на той же машине, которая выполняет фактическую загрузку, либо переносить весь необходимый контекст запроса.
Что делать, если появляется Requested format is not available
Ошибка означает, что заданное выражение не нашло подходящего формата среди реально доступных для данного элемента. Первый шаг — выполнить -F для той же страницы. Если в команде жёстко указан числовой код, его может просто не быть у этого ролика. Для неоднородных плейлистов числовые идентификаторы особенно хрупки.
Решение — перейти на свойства и запасные варианты. Вместо -f 137+140 можно использовать выбор по высоте, расширению или специальные имена bestvideo/bestaudio. Слэш задаёт fallback. Если нужен единый файл без FFmpeg, следует явно использовать best, понимая, что разрешение может быть ниже, чем у раздельных потоков.
Если даже -F выводит неожиданно мало вариантов, причина может быть на стороне источника, авторизации, региона, экстрактора или конкретного клиента, который сайт предоставляет. В таком случае форматная строка не исправит отсутствие данных, которые программа вообще не смогла получить.
Что делать, если FFmpeg не найден
Сообщение о недоступности FFmpeg обычно проявляется при попытке объединить видео и аудио, извлечь звук, встроить субтитры или перекодировать файл. Нужно убедиться, что исполняемый файл FFmpeg доступен через системный PATH либо находится там, где youtube-dl способен его обнаружить. Простое наличие архива FFmpeg в папке загрузок не означает, что программа видит его.
Для проверки полезно запустить ffmpeg -version в том же терминале. Если оболочка сама не находит команду, youtube-dl также не сможет нормально использовать постпроцессор. После настройки PATH следует открыть новый терминал, чтобы он получил обновлённое окружение.
Альтернативный путь — выбрать единый поток через -f best и отказаться от операций, требующих постобработки. Это не исправляет FFmpeg, но позволяет скачать вариант, в котором аудио и видео уже объединены на стороне сервиса.
Что делать при HTTP 429 или 402
Официальная документация связывает ответы 429 Too Many Requests и 402 Payment Required в ряде сценариев с блокировкой из-за интенсивных запросов. Сервис может потребовать CAPTCHA. Практический порядок действий — прекратить повторные попытки, открыть тот же ресурс в браузере, пройти требуемую проверку и при необходимости передать youtube-dl cookies той же сессии.
Если компьютер использует несколько внешних IP-адресов, важно, чтобы запрос youtube-dl выходил через тот же адрес, на котором была пройдена проверка. Для управления исходным адресом существует --source-address. Бессмысленно бесконечно увеличивать число повторов: если сервер сознательно отклоняет запросы, автоматический retry только создаёт новые отказы.
При массовых очередях помогает более умеренная частота обращений, паузы и отсутствие ненужных повторных запусков. Но эти меры не являются гарантией: условия блокировки определяет сам видеосервис.
Что делать при HTTP 403 Forbidden
403 означает, что сервер отказал в доступе к запрошенному ресурсу. Причины различаются: временная подпись устарела, сессия отсутствует, нужен Referer, изменился механизм выдачи ссылки, запрос идёт из неподходящего региона или IP, либо источник вообще запретил данный доступ. Начинать следует с повторного извлечения свежего URL и verbose-лога.
Если используется -g и затем ссылка передаётся другой программе, проверка должна проводиться и внутри самого youtube-dl. Когда youtube-dl скачивает файл, а внешний менеджер получает 403, обычно отличается контекст запроса — cookies, User-Agent, Referer или IP. Ключи --referer, --user-agent, --add-header и --cookies существуют именно для контролируемой передачи таких параметров там, где это оправдано.
Не стоит сразу применять --no-check-certificate: отключение проверки сертификата решает другую категорию проблем и снижает безопасность соединения. 403 — это HTTP-ответ сервера, а не ошибка доверия TLS-сертификату.
Ошибки сертификата и параметр --no-check-certificate
При ошибке TLS сначала нужно проверить системное время, хранилище корневых сертификатов, корпоративный прокси и перехват HTTPS. Параметр --no-check-certificate отключает проверку сертификата и потому должен использоваться только как осознанная временная мера для диагностики. Он не делает источник доступнее, а убирает важную проверку подлинности сервера.
На рабочих сетях причиной часто бывает прокси с собственным корневым сертификатом. Правильное решение — доверить соответствующий сертификат системным средствам, если это политика организации, а не постоянно запускать загрузчик без проверки TLS.
Если ошибка появилась только на одном сайте, verbose-лог покажет точку отказа. Если она возникает на всех HTTPS-ресурсах, вероятнее проблема системная и её следует решать на уровне Python, сертификатов или сети.
Проблемы с именами файлов и слишком длинным путём
Заголовки видео могут содержать символы, неудобные для файловой системы, или быть слишком длинными в сочетании с каталогами плейлиста. --restrict-filenames делает имена проще, а собственный -o позволяет уменьшить количество полей. На Windows ограничение длины полного пути может проявиться раньше, если шаблон содержит несколько вложенных каталогов.
Надёжный компромисс — короткий заголовок плюс идентификатор. Полностью удалять ID из массового архива рискованно: разные ролики способны иметь одинаковые названия. Если требуется строгое машинное имя, --id оставляет только идентификатор, а человекочитаемые метаданные сохраняются отдельно через JSON.
Если файл уже создан с неудобным именем, изменение шаблона не переименует существующие результаты автоматически. youtube-dl применяет -o при текущей операции, поэтому миграцию старой коллекции лучше выполнять отдельным инструментом, опираясь на сохранённые метаданные.
Когда использовать --restrict-filenames
Этот параметр полезен для серверных каталогов, переносных накопителей, медиаплееров и скриптов, которые плохо переносят пробелы, Unicode или специальные знаки. Он ограничивает набор символов, но не меняет содержимое самого видео и не влияет на метаданные источника.
Для обычного личного архива ограничение необязательно. Современные файловые системы нормально работают с Unicode, а человекочитаемое имя на родном языке удобнее. Проблема чаще возникает не из-за файловой системы, а из-за плохо написанного последующего скрипта, который не заключает пути в кавычки.
Если задача требует и читаемых названий, и высокой переносимости, можно хранить подробные данные в .info.json, а медиа называть по ID или по короткому нормализованному шаблону.
Кэш youtube-dl
youtube-dl использует файловый кэш для некоторых служебных данных. Путь задаётся --cache-dir, --no-cache-dir отключает кэш, --rm-cache-dir удаляет его содержимое. Кэш не является папкой скачанных видео и его очистка не удаляет медиатеку.
Отключать кэш постоянно нет смысла без причины. Он уменьшает необходимость повторно получать или вычислять некоторые данные. Очистка полезна как диагностический шаг, если есть подозрение на повреждённое или устаревшее служебное содержимое, но не должна быть универсальным ответом на любую ошибку.
При запуске от разных пользователей каждый может иметь собственный кэш и конфигурацию. Поэтому команда, работающая в интерактивном терминале, способна вести себя иначе в cron, службе или другом аккаунте даже на том же компьютере.
Выбор User-Agent, Referer и дополнительных заголовков
--dump-user-agent показывает идентификатор браузера, используемый программой. --user-agent позволяет задать другой. --referer передаёт страницу-источник для сервисов, которые проверяют переход. --add-header FIELD:VALUE добавляет произвольный HTTP-заголовок и может применяться несколько раз.
Эти опции предназначены для совместимости с конкретными сайтами, а не для случайного перебора. Неправильный заголовок способен ухудшить ситуацию: сервер может вернуть другой вариант страницы или отказать в доступе. Если нужен Cookie, документация рекомендует использовать специализированный параметр cookies, а не вручную помещать чувствимое содержимое в --add-header.
При публикации verbose-лога нужно проверять заголовки. В них могут находиться токены авторизации и идентификаторы сессии. Перед отправкой отчёта такие значения следует удалять.
Работа с несколькими IP и привязка исходящего адреса
--source-address IP полезен на сервере с несколькими интерфейсами, VPN или несколькими внешними адресами. Он заставляет сетевые соединения исходить с указанного локального IP, если ОС может построить соответствующий маршрут. Это не то же самое, что прокси: трафик всё равно идёт напрямую, но через выбранный интерфейс или адрес.
Параметр имеет практическое значение, когда браузер прошёл CAPTCHA с одного внешнего IP, а youtube-dl по умолчанию выходит через другой. Также он помогает воспроизводить сетевые проблемы: можно сравнить результат через два маршрута, не меняя глобальную конфигурацию системы.
Неверный адрес приведёт к ошибке соединения. Поэтому перед использованием стоит проверить локальную конфигурацию и не подставлять произвольный внешний IP, который не назначен системе.
Ограничения youtube-dl, которые важно учитывать
Первое ограничение — отсутствие встроенного графического интерфейса. Параметры гибкие, но пользователь сам отвечает за синтаксис, кавычки, каталоги и понимание форматных выражений. Сторонние GUI существуют, однако это отдельные программы, и их кнопки, возможности и ошибки нельзя автоматически приписывать самому youtube-dl.
Второе — зависимость от структуры сторонних видеосервисов. Экстрактор работает только пока сайт предоставляет данные в форме, которую код умеет разбирать. Изменение страницы, API, подписи или политики доступа способно временно нарушить загрузку даже при полностью исправной установке.
Третье — часть функций требует внешних инструментов. Высокое качество с раздельными потоками, извлечение MP3, перекодирование, объединение и встраивание субтитров обычно опираются на FFmpeg. Без него базовая загрузка остаётся возможной, но функциональность существенно уже.
Четвёртое — youtube-dl не снимает DRM и не отменяет права доступа. Наличие экстрактора не означает право скачивать любой материал. Пользователь должен учитывать авторские права, лицензию контента и правила конкретного сервиса.
Безопасность и приватность
Самые чувствительные данные в типичном сценарии — cookies, логины, пароли и отладочный сетевой вывод. Пароль в командной строке может попасть в историю shell. Cookie-файл способен давать доступ к аккаунту без повторного ввода пароля. Полный HTTP-трафик может содержать токены. Поэтому секреты следует хранить с ограниченными правами и не включать в общедоступные конфиги.
При использовании .netrc права файла должны запрещать чтение посторонним пользователям. На многопользовательском сервере это особенно важно. Для автоматизации лучше создать отдельный аккаунт с минимально необходимыми правами, чем использовать основную личную сессию.
Опции, ослабляющие безопасность соединения, например --no-check-certificate или предпочтение незашифрованного соединения там, где оно поддерживается, следует рассматривать как исключение. Удобство загрузки не оправдывает постоянное отключение проверки подлинности сервера.
Как читать типичный журнал загрузки
Строки с тегом источника, например экстрактора, показывают получение страницы и служебной информации. [info] обычно относится к выбору форматов и другим сведениям. [download] сообщает имя назначения и прогресс. [ffmpeg] появляется на этапе слияния, извлечения или другого постпроцессинга.
Если после загрузки двух временных файлов появляется строка о слиянии и затем удалении оригиналов, это нормальная последовательность для bestvideo+bestaudio. Если удаление нежелательно, применяется -k там, где это относится к постобработке. Предупреждение о несовместимых форматах может означать, что итоговый контейнер будет отличаться от ожидаемого.
Процент и ETA не всегда ведут себя линейно на фрагментированных потоках: отдельные сегменты могут иметь разные размеры и скорости. Для автоматических журналов --newline удобнее динамического обновления одной строки, потому что каждая отметка прогресса сохраняется как отдельная запись.
Расширенная настройка имён для сериалов, музыки и плейлистов
Набор полей output template значительно шире заголовка и ID. Для эпизодического контента доступны поля серии, сезона, номера сезона, эпизода и номера эпизода, если экстрактор их извлекает. Для музыки встречаются track, track_number, artist, genre, album, album_artist, disc_number и release_year.
Структуру каталога можно строить прямо в шаблоне. Например, сериал раскладывается по сезонам, а музыка — по исполнителю и альбому. Но шаблон должен предусматривать отсутствие метаданных: не каждый видеосервис знает сезон или альбом. Заполнитель NA лучше, чем полное падение команды, но может создавать папки с таким именем, поэтому перед массовой обработкой стоит посмотреть JSON нескольких элементов.
Числовые поля поддерживают форматирование, например %(playlist_index)05d. Это простой способ получить фиксированную ширину номера без внешнего переименования. Для буквального символа процента в шаблоне используется удвоенный знак процента.
Универсальный фильтр --match-filter
Помимо специализированных параметров по дате, числу просмотров и размеру, youtube-dl имеет --match-filter. Он проверяет метаданные элемента до загрузки и позволяет описать более сложное условие. В качестве полей используются те же ключи, которые доступны в шаблонах имени и JSON: например, duration, view_count, uploader, description или другие значения, если их вернул экстрактор.
youtube-dl --match-filter "duration < 1800" PLAYLIST_URL
youtube-dl --match-filter "view_count >= 1000 & description" PLAYLIST_URL
Проверка наличия поля записывается просто его именем; отрицание — с восклицательным знаком. Числа сравниваются операторами >, >=, <, <=, = и !=. Для строковых значений доступны равенство и неравенство с литералом. Амперсанд объединяет несколько обязательных условий. Поскольку амперсанд имеет специальное значение в некоторых командных оболочках, всё выражение разумно заключать в кавычки.
Неизвестные значения требуют особого внимания. Если экстрактор не сообщил поле, обычное сравнение исключает элемент. Вариант оператора с вопросительным знаком разрешает неизвестное значение. Например, условие может принять ролик с отсутствующим счётчиком, но всё равно отсеять известные значения за пределами заданного диапазона. Это особенно важно для плейлистов, собранных из разных сайтов или типов страниц.
Фильтр выполняется на метаданных, а не на содержимом видео. Он не анализирует речь, изображение или музыкальный жанр сам по себе. Если поле genre не пришло от сайта, youtube-dl не станет угадывать его. Для сложной коллекции полезно сначала посмотреть несколько .info.json и только затем строить условие по реально присутствующим ключам.
--no-playlist и --yes-playlist для неоднозначных ссылок
Некоторые адреса одновременно указывают на конкретное видео и содержат контекст плейлиста. В такой ситуации важно заранее решить, нужен один ролик или вся подборка. --no-playlist требует обработать только видео, а --yes-playlist подтверждает загрузку плейлиста, если адрес допускает оба толкования.
Эти параметры полезнее, чем попытка вручную редактировать адрес, потому что они фиксируют намерение прямо в команде или конфигурации. Например, в сценарии сохранить случайно скопированную ссылку на отдельный ролик можно постоянно использовать --no-playlist и не бояться, что вместе с ним запустится очередь из сотен элементов.
Обратный сценарий встречается при архивировании учебного курса или сериала, когда ссылка открывает первый эпизод, но содержит идентификатор списка. --yes-playlist помогает не ограничиться одним элементом. После этого можно применить --playlist-items, фильтр по дате или archive-файл.
Если команда неожиданно обрабатывает только один элемент или, наоборот, всю подборку, стоит проверить конфигурационный файл: один из этих ключей мог быть задан там постоянно. Запуск с --ignore-config быстро показывает, связано ли поведение со скрытой настройкой.
Загрузка всех форматов и предпочтение свободных контейнеров
--all-formats просит скачать все обнаруженные видеоформаты. Это редкий, но полезный исследовательский режим: например, если нужно сравнить кодеки, сохранить несколько исходных представлений или проверить, что именно отдаёт сервис. Он может резко увеличить объём данных, потому что один ролик способен иметь десятки потоков разных разрешений, частот кадров и кодеков.
--prefer-free-formats меняет предпочтение в пользу свободных форматов, если пользователь не зафиксировал конкретный вариант. Этот параметр не означает скачивать только свободный формат и не отменяет явный -f. Он влияет на выбор при равных или сопоставимых вариантах согласно внутренней логике программы.
Для обычного просмотра --all-formats почти никогда не нужен. Рациональнее сформулировать правило вроде ограничения 1080p или предпочтения MP4. Полный набор оправдан, если задача связана с тестированием декодеров, сравнением битрейтов, исследованием адаптивных потоков или сохранением исходных вариантов до принятия решения.
При загрузке нескольких форматов следует включать %(format_id)s в шаблон имени. Иначе разные представления одного ролика могут претендовать на одинаковый путь. Документация отдельно рекомендует различать имена, когда через запятую запрашивается несколько потоков без слияния.
HLS в MPEG-TS и просмотр до окончания загрузки
Для HLS предусмотрена опция --hls-use-mpegts. Она сохраняет HLS-видео в контейнере MPEG-TS, что позволяет некоторым проигрывателям начать воспроизведение ещё до полного завершения загрузки. Это полезно для длинных трансляций или материалов, где не хочется ждать окончания всей передачи.
У такого режима есть компромисс: не каждый проигрыватель одинаково хорошо работает с незавершённым MPEG-TS, а итоговый контейнер может быть менее удобен для медиатеки, чем MP4 или MKV. Если нужен аккуратный архивный файл, стандартная схема с завершением загрузки и последующей упаковкой обычно предсказуемее.
--hls-prefer-native и --hls-prefer-ffmpeg выбирают механизм загрузки HLS. Смена механизма — полезный диагностический ход, когда один вариант спотыкается на конкретном манифесте. Но она не меняет правила доступа к источнику: если сегменты закрыты авторизацией или недоступны по региону, другой загрузчик сам по себе не предоставит право доступа.
Для HLS особенно важны --fragment-retries, политика недоступных сегментов и --keep-fragments. При длительной записи стоит заранее решить, важнее ли полностью остановиться при повреждении или получить максимально возможный файл с пропуском редкого сегмента.
Указание расположения FFmpeg
Если FFmpeg установлен, но не находится через PATH, youtube-dl позволяет указать его явно параметром --ffmpeg-location. Значением может быть путь непосредственно к исполняемому файлу либо каталог, в котором он расположен. Это удобно на переносных установках, сервере без прав на изменение глобального PATH или при использовании отдельной сборки FFmpeg для конкретного проекта.
youtube-dl --ffmpeg-location FFMPEG_PATH -f "bestvideo+bestaudio/best" VIDEO_URL
Путь с пробелами необходимо корректно заключать в кавычки по правилам текущей оболочки. Если задан каталог, в нём должны находиться нужные исполняемые компоненты. Для операций извлечения звука документация упоминает также ffprobe или совместимые инструменты.
Параметры --prefer-ffmpeg и --prefer-avconv определяют предпочтительный набор постпроцессоров, если доступны оба. По умолчанию youtube-dl предпочитает FFmpeg. В новых рабочих процессах нет причины переключаться на avconv без конкретной совместимости со старым окружением.
Когда команда запускается из планировщика, служебной учётной записи или контейнера, PATH часто отличается от интерактивного терминала. Явный --ffmpeg-location делает такой сценарий воспроизводимее и устраняет зависимость от того, какой профиль shell был загружен.
--postprocessor-args и тонкая настройка FFmpeg
--postprocessor-args передаёт дополнительные аргументы постпроцессору. Это продвинутый механизм для тех случаев, когда стандартных опций youtube-dl недостаточно: например, требуется специфический параметр FFmpeg при кодировании или упаковке. Он не предназначен для замены всех штатных ключей; выбор аудиоформата, качества, контейнера и субтитров проще задавать собственными параметрами youtube-dl.
Здесь особенно легко ошибиться с кавычками. Аргументы проходят через командную оболочку и затем передаются другой программе. Если внутри есть пробелы, знаки равенства, двоеточия или собственные кавычки FFmpeg, нужно учитывать два уровня разбора. Для постоянного сложного набора лучше проверить команду на одном файле и только потом переносить в конфигурацию.
Ошибочный параметр постпроцессора проявляется уже после успешной загрузки медиаданных. Поэтому в логе может быть 100% скачивания, а итоговая операция завершится ошибкой. Временные исходные файлы в таком случае могут остаться и пригодиться для ручного повторного запуска FFmpeg.
Если задача требует большого фильтр-графа, многодорожечного монтажа или точного управления кодерами, практичнее разделить этапы: youtube-dl получает исходные потоки и метаданные, а отдельный сценарий FFmpeg выполняет сложную обработку. Это упрощает диагностику и не связывает сетевую загрузку с тяжёлой перекодировкой.
Автоматическая коррекция контейнера: --fixup
Параметр --fixup определяет, как youtube-dl относится к известным техническим недостаткам готового файла. Политика never ничего не исправляет, warn только сообщает о проблеме, а detect_or_warn пытается исправить её доступными средствами и предупреждает, если это невозможно. Последний вариант является стандартным.
Под исправлением здесь понимаются известные технические несоответствия контейнера или потока, а не улучшение качества изображения. youtube-dl не восстанавливает потерянные кадры и не выполняет интеллектуальную реставрацию. Fixup относится к корректности файла для воспроизведения и обработки.
Если архив строится по принципу сохранения максимально исходных байтов, пользователь может предпочесть never и выполнять любые исправления копии отдельно. Для повседневного просмотра стандартная политика удобнее, потому что проблемный файл автоматически приводится к более пригодному виду, когда это возможно.
Наличие FFmpeg расширяет набор доступных исправлений. Если постпроцессор недоступен, программа может только предупредить. Поэтому сообщение fixup в логе следует читать вместе с информацией о найденных внешних инструментах.
Конвертация субтитров
--convert-subs преобразует загруженные субтитры в выбранный формат. В параметрах youtube-dl перечислены SRT, ASS, VTT и LRC. Это полезно, если источник отдаёт WebVTT, а редактору или плееру нужен SRT, либо если для музыкального текста требуется LRC.
youtube-dl --write-sub --convert-subs srt VIDEO_URL
Конвертация выполняется после получения дорожки и не создаёт субтитры там, где их нет. Сначала экстрактор должен обнаружить обычную или автоматическую дорожку. Если язык не найден, изменение целевого формата не поможет.
При сложном оформлении возможна потеря специфических возможностей исходного формата. ASS поддерживает стили и позиционирование, которых простой SRT не выражает в том же объёме. Поэтому для архивной копии иногда разумно хранить исходный файл и создавать конвертированную версию отдельно.
Если субтитры затем встраиваются в видео, нужно учитывать возможности контейнера и плеера. Встроенные субтитры не обязательно становятся изображением поверх кадров: обычно это отдельная дорожка внутри контейнера, которую можно включать и выключать.
Выполнение команды после загрузки через --exec
--exec запускает указанную команду после загрузки и постобработки. В шаблоне используется {} как место для имени готового файла. Это позволяет встроить youtube-dl в простой рабочий процесс без отдельного скрипта: например, переместить результат, передать его индексатору, запустить проверку или копирование на устройство.
youtube-dl --exec "POST_COMMAND {}" VIDEO_URL
К этому механизму нужно относиться как к выполнению обычной команды оболочки. Имя файла может содержать пробелы и специальные символы, поэтому экранирование должно быть корректным. Нельзя подставлять непроверенные фрагменты метаданных в произвольный shell-код так, чтобы они становились частью синтаксиса команды.
Если постобработка не завершилась, --exec не следует использовать как единственный журнал успешности. Для надёжной автоматизации лучше проверять код возврата процесса, наличие ожидаемого файла и вести отдельный лог. Archive-файл youtube-dl отмечает именно успешно загруженные элементы в рамках его логики, а внешняя команда может завершиться неудачно позже.
Для сложной цепочки из нескольких действий отдельный shell- или Python-скрипт читается лучше, чем длинный --exec. Но для одного понятного шага после каждого файла этот параметр очень удобен.
Время модификации и атрибут размера
По умолчанию youtube-dl может использовать HTTP-заголовок Last-Modified, чтобы установить время изменения готового файла. --no-mtime отключает такое поведение, и файловая система оставляет время, связанное с фактическим созданием или завершением загрузки. Это влияет только на метку файла, а не на дату публикации в метаданных.
Выбор зависит от модели архива. Если каталог сортируется по моменту скачивания, --no-mtime удобнее. Если важно приблизительно сохранить серверную временную метку ресурса, стандартное поведение может быть полезно. Для точной даты публикации всё равно лучше опираться на upload_date в JSON или шаблоне имени, потому что Last-Modified описывает HTTP-ресурс, а не обязательно дату публикации ролика.
--xattr-set-filesize записывает ожидаемый размер в расширенный атрибут ytdl.filesize. Такой атрибут используется только там, где файловая система и инструменты поддерживают xattr. При копировании на другой носитель он может исчезнуть.
Эти параметры обычно не нужны для обычного просмотра, но полезны в больших архивах, где файловые атрибуты участвуют в индексировании, резервном копировании и контроле целостности процесса.
Отображение прогресса в заголовке консоли
--console-title выводит прогресс в заголовке окна консоли. Это удобно при нескольких открытых терминалах: пользователь видит, какое окно ещё работает, не переключаясь внутрь. Для автоматического журнала этот параметр не важен и может быть отключён.
В CI, cron и системных службах графического заголовка обычно нет, поэтому полагаться на него как на мониторинг нельзя. Там полезнее --newline, обычный лог, код возврата и внешний сбор метрик.
Когда прогресс скрыт через --no-progress, загрузка не становится быстрее заметным образом: меняется только вывод. Такой режим предназначен для скриптов, где динамическая строка мешает анализу журнала.
Если требуется максимально чистый машинный вывод, лучше использовать специальные режимы JSON или --get-*, а не парсить человеческие строки прогресса. Формат журнала может содержать предупреждения и сообщения разных подсистем.
Аннотации и устаревающие типы сопутствующих данных
В наборе файловых опций присутствует --write-annotations, который сохраняет аннотации в XML там, где экстрактор и источник способны их предоставить. В современных видеосервисах такой тип данных встречается значительно реже, поэтому отсутствие файла после применения ключа не обязательно означает ошибку youtube-dl.
Этот пример хорошо показывает общее правило: наличие параметра не гарантирует наличие данных на каждом сайте. То же касается миниатюр разных размеров, автоматических субтитров, даты, числа просмотров и музыкальных полей. Экстрактор может вернуть только то, что доступно и поддерживается.
Для архивной системы стоит определять обязательный минимальный набор: например, ID, title, media и info.json. Все дополнительные файлы — описание, субтитры, миниатюры, аннотации — сохранять при наличии, не считая их отсутствие фатальным, если задача этого не требует.
Такой подход делает один сценарий устойчивее при работе с разными платформами: структура каталога сохраняется, а редкие типы сопутствующих данных не ломают всю очередь.
Работа с текстом справа налево и кодировками
Для терминалов, которые плохо отображают двунаправленный текст, youtube-dl предлагает --bidi-workaround. Он требует внешнюю утилиту bidiv или fribidi в PATH. Параметр относится к корректному отображению текста в консоли и именах, а не к содержимому видеопотока.
--encoding позволяет принудительно указать кодировку и помечен как экспериментальный. Применять его стоит только при реальной проблеме с отображением или обработкой текста. На современных системах UTF-8 обычно предпочтительнее ручного выбора наследуемой кодовой страницы.
Если проблема проявляется только в Windows-консоли, следует отличать неправильное отображение от повреждённого имени файла. Терминал может показать квадраты или неверные символы, хотя фактическая строка Unicode сохранена корректно. Проверка через файловый менеджер или JSON помогает понять, где именно возникает искажение.
--restrict-filenames — другой инструмент: он не исправляет кодировку, а намеренно упрощает имя до ограниченного набора символов. Использовать его только ради красивого отображения в терминале не обязательно.
Adobe Pass и учётные данные телевизионного провайдера
Для некоторых поддерживаемых источников youtube-dl содержит отдельную группу Adobe Pass. --ap-mso выбирает оператора телевизионного доступа, --ap-username и --ap-password передают учётные данные, а --ap-list-mso выводит список поддерживаемых операторов. Эти параметры не относятся к обычному логину YouTube и используются только там, где экстрактор задействует соответствующую схему авторизации.
Передавать такие данные нужно с теми же мерами предосторожности, что и обычный пароль. Не стоит хранить их в публичном сценарии, снимке экрана или журнале. Если пароль не указан явно, программа может запросить его интерактивно в поддерживаемом сценарии.
Наличие Adobe Pass-параметров не означает автоматический доступ к платному телеконтенту. Пользователь должен иметь действующие права через своего провайдера, а конкретный сайт должен поддерживаться экстрактором.
Если задача никак не связана с телевизионной авторизацией, эту группу опций можно полностью игнорировать. Она никак не улучшает обычную загрузку открытых роликов.
Экстракторы: как понять, поддерживается ли сайт
youtube-dl работает через набор экстракторов — модулей, которые знают, как получить медиаданные с конкретных сервисов или типов страниц. Команда --list-extractors выводит имена доступных экстракторов, а --extractor-descriptions дополняет список описаниями. Это точнее, чем судить только по названию программы: YouTube — один из источников, но архитектура рассчитана на множество сайтов.
youtube-dl --list-extractors
youtube-dl --extractor-descriptions
Наличие имени в списке говорит о том, что программа содержит соответствующий обработчик. Оно не гарантирует доступ к каждому ролику этого сайта: материал может быть удалён, закрыт, защищён подпиской, ограничен регионом или изменён сервисом так, что экстрактор временно перестал понимать страницу. Проверять конкретный адрес надёжнее обычной командой или симуляцией с verbose-выводом.
--force-generic-extractor принудительно использует общий экстрактор вместо специализированного. Это диагностическая и вспомогательная возможность для страниц, где медиа можно обнаружить стандартным способом. Generic extractor обычно не располагает всей сервисной логикой специализированного модуля, поэтому может получить меньше метаданных, не распознать плейлист или не пройти специфическую авторизацию.
Если специализированный экстрактор выдаёт ошибку, принудительный generic не следует считать универсальным обходом. Он полезен, когда на странице действительно присутствует прямой или стандартно встроенный поток. Для сервиса со сложной подписью или API специализированная логика всё равно необходима.
Поиск, неквалифицированные адреса и default-search
Параметр --default-search определяет, что делать со строкой, которая не выглядит как полноценный адрес. Можно задать префикс поискового экстрактора, режим автоматического предположения или требование считать такой ввод ошибкой. Эта возможность удобна в интерактивных оболочках, но в автоматических сценариях лучше передавать однозначные URL или идентификаторы.
Причина — воспроизводимость. Текстовый запрос может со временем дать другой результат, а явный адрес или ID привязан к конкретному ресурсу. Для архивирования, скриптов и публикационных задач лучше избегать неявного поиска и сохранять исходный идентификатор в JSON и имени файла.
Если youtube-dl неожиданно начинает искать введённую строку вместо того, чтобы сообщить об ошибке, стоит проверить --default-search в конфигурации. Наоборот, режим error полезен там, где любая опечатка должна останавливать процесс, а не превращаться в сетевой поиск.
Для массовой обработки пакетного файла особенно важно, чтобы каждая строка была однозначной. Комментарии начинаются с поддерживаемых символов, а сами адреса лучше не сопровождать лишним текстом, который generic-парсер может истолковать неожиданно.
Сложные форматные выражения: группировка и протокол
Селектор -f допускает группировку круглым скобками. Это позволяет сначала сформировать набор кандидатов, а потом применить общее условие. Например, можно взять MP4 или WebM, но только ниже определённой высоты. Группировка особенно полезна, когда одно и то же ограничение должно относиться сразу к нескольким ветвям выбора.
youtube-dl -f "(mp4,webm)[height<480]" VIDEO_URL
youtube-dl -f "(bestvideo+bestaudio/best)[protocol^=http]" VIDEO_URL
Строковые фильтры умеют проверять не только точное равенство, но и начало, окончание или вхождение строки согласно синтаксису, описанному для format selection. Это позволяет ограничить протокол, контейнер или кодек без знания числового ID. Однако слишком жёсткий фильтр легко оставляет список пустым, поэтому полезно добавлять fallback после слэша.
Выражение читается слева направо с учётом операторов: плюс требует совместить потоки, запятая просит несколько отдельных результатов, слэш задаёт альтернативу, квадратные скобки фильтруют кандидатов, круглые скобки группируют. Перед сохранением сложного правила в конфигурацию имеет смысл проверить его на нескольких разных роликах через -F.
Если команда предназначена для Windows Command Prompt или PowerShell, кавычки и специальные символы оболочки требуют отдельного внимания. Сам форматный синтаксис youtube-dl одинаков, но строка должна сначала корректно пройти через shell.
Цвет, отметка просмотра и служебное поведение
--no-color запрещает цветовые управляющие последовательности в выводе. Это полезно для перенаправления журнала в файл, парсинга логов и терминалов, которые плохо обрабатывают ANSI-коды. На саму загрузку параметр не влияет.
Для YouTube в наборе общих опций присутствуют --mark-watched и --no-mark-watched. Они управляют попыткой отметить ролик просмотренным при соответствующем контексте. Такая функция зависит от авторизации и конкретного экстрактора; для обычного анонимного скачивания она не нужна.
Служебные параметры --version и --help полезны при диагностике команд из чужой инструкции. Если параметр не распознаётся, сначала следует сверить встроенную справку именно той установки, которая запускается в терминале. Команда с тем же именем может приходить из другого пути или Python-окружения.
На системах с несколькими установками полезно также проверить фактический исполняемый файл средствами оболочки. Проблема на одном терминале ключ работает, на другом нет часто связана не с сайтом, а с разными PATH, виртуальными окружениями или алиасами.
Сравнение youtube-dl с аналогами
| Программа | Лучше подходит для | Главное ограничение |
|---|---|---|
| youtube-dl | Скриптов, точного выбора потоков, плейлистов, субтитров и сохранения метаданных через командную строку | Нет встроенного GUI; сложные операции требуют знания параметров и FFmpeg |
| yt-dlp | Пользователей, которым нужен совместимый по идее CLI-загрузчик с большим числом современных расширений и дополнительных параметров | Более широкий синтаксис и отличия в стандартном поведении требуют отдельного изучения |
| you-get | Простых командных загрузок медиа со страниц и работы из Python-окружения | Меньше возможностей тонкой постобработки и форматных выражений, чем у семейства youtube-dl |
| Lux | Кроссплатформенной загрузки видео из командной строки с лаконичным синтаксисом | Другая система поддерживаемых сайтов и параметров, поэтому команды youtube-dl не переносятся напрямую |
| 4K Video Downloader Plus | Ручной загрузки видео и плейлистов через графический интерфейс без составления CLI-команд | Меньше свободы для shell-автоматизации и собственных форматных выражений |
| Streamlink | Передачи сетевых трансляций и потоков напрямую в медиаплеер или файл | Основной акцент на потоковом воспроизведении, а не на универсальной архивации метаданных и плейлистов |
Практический выбор зависит от задачи. youtube-dl особенно удобен, если уже есть рабочие конфигурации и сценарии на его параметрах, нужны предсказуемые шаблоны имён, архив обработанных ID и JSON-метаданные. yt-dlp ближе всего по модели работы, но его нельзя считать просто другим именем той же программы: параметры и значения по умолчанию нужно сверять отдельно. Графический 4K Video Downloader Plus удобнее для ручных действий, но слабее вписывается в автоматические серверные цепочки. Streamlink лучше, когда цель — открыть поток в плеере, а не собрать каталог с описаниями и обложками.
Команды, которые полезно держать под рукой
| Задача | Команда |
|---|---|
| Обычная загрузка | youtube-dl VIDEO_URL |
| Показать форматы | youtube-dl -F VIDEO_URL |
| Выбрать формат | youtube-dl -f FORMAT VIDEO_URL |
| Лучшее видео + звук | youtube-dl -f "bestvideo+bestaudio/best" VIDEO_URL |
| Ограничить 720p | youtube-dl -f "bestvideo[height<=?720]+bestaudio/best[height<=?720]" VIDEO_URL |
| Извлечь MP3 | youtube-dl -x --audio-format mp3 VIDEO_URL |
| Список субтитров | youtube-dl --list-subs VIDEO_URL |
| Сохранить субтитры | youtube-dl --write-sub VIDEO_URL |
| Только метаданные JSON | youtube-dl -j VIDEO_URL |
| Прямой адрес потока | youtube-dl -g VIDEO_URL |
| Обработать файл ссылок | youtube-dl -a queue.txt |
| Пропускать загруженное ранее | youtube-dl --download-archive archive.txt PLAYLIST_URL |
| Диагностический вывод | youtube-dl -v VIDEO_URL |
| Не читать конфигурацию | youtube-dl --ignore-config VIDEO_URL |
Эта таблица полезна как отправная точка, но не заменяет --help. Форматные выражения особенно чувствительны к тому, какие поля реально возвращает источник. При сложной задаче лучше сначала получить -F и JSON, затем сформулировать правило.
Частые вопросы о youtube-dl
Можно ли пользоваться программой без FFmpeg?
Да, если источник отдаёт подходящий единый медиапоток и не требуется извлечение аудио, слияние, перекодирование или встраивание. Для максимального качества на сервисах с раздельными потоками FFmpeg часто необходим.
Почему скачался ролик без звука?
Скорее всего, через -f выбран формат video only. Нужно посмотреть -F и выбрать единый формат либо пару video+audio.
Почему формат 137 или другой номер не работает на каждом видео?
Коды форматов зависят от экстрактора и конкретного набора потоков. Для переносимых команд лучше использовать свойства и специальные селекторы.
Можно ли скачать только часть плейлиста?
Да. Для диапазона есть --playlist-start и --playlist-end, а для произвольных позиций — --playlist-items.
Можно ли сделать так, чтобы повторный запуск не качал старые ролики?
Да. --download-archive сохраняет идентификаторы успешно обработанных элементов и пропускает их в будущих запусках.
Как сохранить миниатюру без видео?
Можно сочетать --skip-download с --write-thumbnail. Для просмотра доступных вариантов используется --list-thumbnails.
Как узнать будущий файл, не скачивая его?
--get-filename выводит рассчитанное имя, а --simulate помогает проверить команду в целом.
Можно ли сохранить описание и метаданные?
Да. Для описания применяется --write-description, для структурированных сведений — --write-info-json.
Можно ли скачать несколько URL из текстового файла?
Да, через -a или --batch-file. Каждый адрес размещается на отдельной строке.
Почему прямая ссылка из -g перестала работать?
Такие URL нередко временные и могут быть привязаны к токену, IP или cookies. Их лучше получать непосредственно перед использованием.
Как понять, какие сайты поддерживаются?
Команда --list-extractors выводит экстракторы, доступные в конкретной установке. Но наличие экстрактора не гарантирует, что любой защищённый или изменившийся материал будет доступен.
Можно ли заставить программу работать только по IPv4?
Да, ключом -4. Для IPv6 существует -6.
Как уменьшить скорость загрузки?
Через -r/--limit-rate, например с суффиксами K или M для удобного задания размера в секунду.
Как не перезаписывать существующие файлы?
Используется -w/--no-overwrites. Для регулярно обновляемых источников лучше дополнительно применять archive-файл.
Почему в плейлисте один недоступный ролик останавливает очередь?
Добавьте -i/--ignore-errors, если нужно продолжать после отдельных ошибок. Для противоположной политики есть --abort-on-error.
Итоговая схема работы
Для ручной задачи достаточно трёх шагов: сначала запустить -F, затем выбрать формат через -f, после чего при необходимости добавить шаблон имени и постобработку. Для регулярной задачи к этому добавляются конфигурационный файл и --download-archive. Для автоматизации — JSON, тихий режим и стабильные идентификаторы в именах файлов.
Сильная сторона youtube-dl — не одна кнопка сохранить, а возможность точно описать правила: какие элементы брать, какое качество считать подходящим, как назвать файлы, где хранить плейлист, какие метаданные сохранить и что сделать после загрузки. Цена этой гибкости — необходимость понимать терминал, структуру потоков и внешние зависимости вроде FFmpeg.
При ошибках полезно идти от простого к сложному: проверить адрес в кавычках, выполнить команду без конфигурации, посмотреть -F, включить -v, убедиться в доступности FFmpeg и только затем менять сетевые параметры. Такой порядок обычно быстрее случайного перебора ключей и снижает риск скрыть реальную причину проблемы.