Мне понадобилось скачать видео с YouTube обычным файлом на компьютер. Для этой задачи я выбрал yt-dlp: установил необходимые программы через WinGet и запустил скачивание из PowerShell.
Что я использую
Для скачивания мне понадобились три компонента:
- yt-dlp — программа, которая получает информацию о ролике и скачивает доступные видео- и аудиопотоки.
- FFmpeg — объединяет отдельно скачанные видео и звук в один файл.
- Deno — среда выполнения JavaScript, которую yt-dlp использует для задач, связанных с обработкой YouTube.
Зачем нужен FFmpeg? YouTube может отдавать видео высокого качества и звуковую дорожку отдельно. Поэтому скачать изображение — ещё не вся задача: затем нужно соединить его со звуком. Этим и занимается FFmpeg.
Deno я отдельно не запускаю. Если программа установлена и доступна для поиска, yt-dlp использует её автоматически: поддержка Deno включена по умолчанию. В официальном yt-dlp.exe необходимые скрипты yt-dlp-ejs уже включены в сборку.
Подробнее об этих зависимостях: FAQ yt-dlp и документация по JavaScript-окружению.
1. Открываю PowerShell и проверяю WinGet
Все команды ниже я выполняю в PowerShell.
Для начала проверяю, доступен ли пакетный менеджер WinGet:
Код:
winget --version
Если команда выводит номер версии, можно переходить к установке.
Если Windows не находит сам winget, сначала нужно установить или обновить компонент «Установщик приложений» / App Installer. WinGet поставляется в его составе. Порядок установки описан в документации Microsoft.
2. Устанавливаю yt-dlp, FFmpeg и Deno
Я использовал следующий набор команд:
Код:
winget install --id yt-dlp.yt-dlp -e
winget install --id yt-dlp.FFmpeg -e
winget install --id DenoLand.Deno -e
Параметр
--id задаёт идентификатор пакета, а -e требует точного совпадения. Это позволяет указать нужную программу без неоднозначного поиска по названию.При первом запуске у меня появился запрос на принятие условий источника Microsoft Store. После ознакомления и согласия с условиями я ввёл
Y и нажал Enter.В моём случае первая команда сама установила обе зависимости — Deno и FFmpeg. Поэтому следующие две команды сообщили, что пакеты уже установлены, а доступных обновлений нет.
Это не означало, что установка сорвалась. Просто необходимые компоненты уже были установлены вместе с yt-dlp.
Если в выводе первой команды видно, что Deno и FFmpeg успешно установлены, отдельно повторять их установку не требуется.
Описание параметров установки есть в документации WinGet.
3. Перезапускаю PowerShell после установки
Если работа ведётся через Windows Terminal, для проверки я бы полностью закрыл приложение и запустил его снова через меню «Пуск», а не ограничивался новой вкладкой.
Устройство переменных среды и окружения процесса описано в документации PowerShell.
4. Проверяю, что программы доступны
В новом окне PowerShell выполняю:
Код:
yt-dlp --version
ffmpeg -version
deno --version
Каждая команда должна вывести информацию о соответствующей программе, а не сообщение «имя не распознано».
Номера версий могут отличаться от тех, которые были у меня при установке. Я не закрепляю конкретные версии в командах: для повторения инструкции важнее, чтобы все три программы находились и запускались.
Если нужно посмотреть, откуда именно они запускаются, использую:
Код:
Get-Command yt-dlp, ffmpeg, deno -ErrorAction Continue | Select-Object Name, Source
Так можно увидеть пути к найденным исполняемым файлам.
5. Скачиваю видео в MP4 со звуком
После установки и перезапуска PowerShell использую такую команду:
Код:
yt-dlp --ignore-config --no-playlist -t mp4 -P "$env:USERPROFILE\Downloads" "https://www.youtube.com/watch?v=4A-rWsPOPW0"
В конце указана ссылка на нужное видео. Для другого ролика заменяю только её.
Разберу основные параметры.
--ignore-config — не загружает сохранённые настройки yt-dlp. Так поведение команды не зависит от старого конфигурационного файла.
--no-playlist — при ссылке на ролик, входящий в плейлист, скачивает выбранное видео, а не весь список.
-t mp4 — использует готовый пресет для сохранения результата в MP4.
-P "$env:USERPROFILE\Downloads" — задаёт каталог для скачивания.
Ссылку оставляю в кавычках. Это особенно важно, если в ней есть дополнительные параметры и символ
&: без кавычек оболочка может интерпретировать его как часть команды.Описание параметров доступно в документации yt-dlp, а пояснение про кавычки — в FAQ проекта.
6. Нахожу готовый файл
В приведённой команде каталог задаётся относительно профиля текущего пользователя:
Код:
$env:USERPROFILE\Downloads
Для моей учётной записи Admin это:
Код:
C:\Users\Admin\Downloads
Открыть этот каталог из PowerShell можно командой:
Код:
explorer.exe "$env:USERPROFILE\Downloads"
Важный момент: команда явно указывает папку Downloads внутри профиля. Если системная папка «Загрузки» была перенесена на другой диск, я указываю её фактический путь в параметре
-P.Например, для сохранения в D:\Video команда будет такой:
Код:
yt-dlp --ignore-config --no-playlist -t mp4 -P "D:\Video" "https://www.youtube.com/watch?v=4A-rWsPOPW0"
Если загрузка идёт в несколько этапов, не закрываю окно после первых 100%. Сначала могут скачиваться отдельные дорожки, после чего FFmpeg объединяет их. Дожидаюсь завершения всей команды и проверяю, нет ли сообщения об ошибке.
Что важно понимать про MP4 и качество
Я использую
-t mp4 как удобный вариант для получения MP4-файла.Этот пресет предпочитает видеокодек H.264 и аудиокодек AAC, но не гарантирует, что именно такие дорожки доступны у каждого ролика. Он также не выполняет принудительное перекодирование в H.264/AAC.
Поэтому я не рассматриваю эту команду как обещание «скачать любое видео обязательно в 4K и обязательно с заданными кодеками». Результат зависит от доступных форматов и правил их выбора.
Само объединение совместимых дорожек в контейнер не равно перекодированию: это разные операции.
Точный состав пресета можно посмотреть в разделе Preset Aliases.
Как обновить PATH без закрытия PowerShell
В моём случае хватило обычного перезапуска оболочки. Но есть и другой вариант — перечитать PATH прямо в текущем окне:
Код:
$env:Path = [System.Environment]::GetEnvironmentVariable("Path", "Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path", "User")
Эта команда собирает PATH из системных и пользовательских настроек и присваивает его текущему сеансу PowerShell. Сохранённые настройки Windows она не переписывает.
При этом временные изменения PATH, сделанные только в этом окне ранее, будут заменены. Поэтому после обычной установки я предпочитаю более простой вариант: закрыть оболочку и открыть её заново.
После обновления PATH можно повторить проверку:
Код:
yt-dlp --version
Как я обновляю установленные программы
Поскольку установку я выполнял через WinGet, для обновления использую его же:
Код:
winget upgrade --id yt-dlp.yt-dlp -e
winget upgrade --id yt-dlp.FFmpeg -e
winget upgrade --id DenoLand.Deno -e
Эти команды проверяют обновления конкретных пакетов, а не всех программ на компьютере.
Сообщение об отсутствии доступных обновлений означает, что WinGet не нашёл более новой подходящей версии в настроенных источниках. Это не обязательно означает, что в самом проекте на GitHub не существует более свежего выпуска.
Если yt-dlp раньше работал, а затем перестал скачивать видео, проверка обновлений — один из первых шагов. Но она не заменяет чтение самой ошибки: проблема с доступом к ролику или сетевым соединением не равна проблеме PATH.
Порядок обновления описан в инструкции yt-dlp и документации WinGet.
Итог
Весь рабочий порядок у меня свёлся к трём действиям: установить программы, перезапустить PowerShell и выполнить команду скачивания.