Утилита yt-dlp - это очень хороший и мощный форк известной утилиты Youtube-dl (к сожалению перестала развиваться).
Умеет делать всё, что умела Youtube-dl. Прекрасно развивается, регулярно обновляется.
Помимо YouTube-а, умеет качать видео с различных видео-хостингов, мессенджеров, сайтов и пр. мест размещения видео-файлов, не токмо забугорных, но и с ресурсов разных стран, в том числе и Российских.
Ранее, в нашем Блоге уже была статья всеми уважаемого Создателя блога и автора множетсва полезных статей в нём - Владимира Долгирёва - Youtube-dl — загрузка роликов с YouTube в Linux .
Но проблема в том, что данная утилита уже несколько лет, как перестала развиваться, хотя и работает, но очень медленно скачивает.
Рассматриваемая в данной статье утилита yt-dlp, в отличии от Youtube-dl, успешно развивается, регулярно обновляется, исправляются баги (ошибки) и, что весьма достойно разрабов, добавляются и без того многочисленные функции, а также список ресурсов, с коими данная утилита может взаимодействовать и, что весьма впечатляет, скачивает очень быстро, в отличии от множества других, похожих программм/утилит.
Итак, приступим к Установке.
Есть 4 (чертыре) способа установки данной утилиты.
1. Стандартный, из официальных репозиториев Ubuntu (Canonical) - самый простой, но версия пакета всегда не самая свежая
- устанавливается из Магазина Ubuntu по поиску yt-dlp, либо командой в Терминале (Ctrl+Alt+T):
sudo apt install yt-dlp -y
Для дальнейшего использования утилиты может потребоваться Перезагрузка системы...
2. Консольно-терминальный - простой
- в нём 3 (три) варианта:
- с помощью утилиты curl
- с помощью утилиты wget
- с помощью утилиты aria2c
- curl - открываем Терминал (Ctrl+Alt+T) и по очереди вводим следующие команды/коды и жмём после ввода каждой на Enter:
sudo apt install curl ffmpeg ffmpeg-doc libdvdcss2 libportaudio2 sndiod python-mutagen-doc python-pyxattr-doc libfribidi-bin bidiv -ysudo dpkg-reconfigure libdvd-pkgsudo curl -L https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -o /usr/local/bin/yt-dlpsudo chmod a+rx /usr/local/bin/yt-dlp
wget - открываем Терминал (Ctrl+Alt+T) и по очереди вводим следующие команды/коды и жмём после ввода каждой на Enter:sudo wget https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp -O /usr/local/bin/yt-dlpsudo chmod a+rx /usr/local/bin/yt-dlp
aria2c - открываем Терминал (Ctrl+Alt+T) и по очереди вводим следующие команды/коды и жмём после ввода каждой на Enter:sudo apt install aria2c ffmpeg ffmpeg-doc libdvdcss2 libportaudio2 sndiod python-mutagen-doc python-pyxattr-doc libfribidi-bin bidiv -ysudo dpkg-reconfigure libdvd-pkgsudo aria2c https://github.com/yt-dlp/yt-dlp/releases/latest/download/yt-dlp --dir /usr/local/bin -o yt-dlpsudo chmod a+rx /usr/local/bin/yt-dlp
Обновление утилиты при этом варианте, во всех 3-х способах осуществляется вводом и выполнением команды:yt-dlp -U
3. Консольно-терминальный (с помощью PIP (менеджер пакетов Python)) - чуть посложнее
- в нём тоже 3 (три) варианта: - стандартный (подразумевается, что все зависимости для yt-dlp удовлетворены и уже предустановлены)
- минимальный (для использования без опций и установки зависимостей)
- GIT (установка с GIT-репозитория, с master-ветки (с текующими правками))
- (после установки любым из этих 3-х вариантов, для дальнейшего использования утилиты требуется Перезагрузка системы)
Стандартный - открываем Терминал (Ctrl+Alt+T) и по очереди вводим следующие команды/коды и жмём после ввода каждой на Enter:
- установка дополнительных пакетов/зависимоестей, необходимих для полноценной работы утилитыsudo apt install -y python3-pip ffmpeg ffmpeg-doc libdvdcss2 libportaudio2 sndiod python-mutagen-doc python-pyxattr-doc libfribidi-bin bidiv- установка утилитыpython3 -m pip install -U yt-dlp
Минимальный - открываем Терминал (Ctrl+Alt+T), вводим следующую команду/код и жмём после ввода на Enter:python3 -m pip install --no-deps -U yt-dlp
GIT - открываем Терминал (Ctrl+Alt+T) и по очереди вводим следующие команды/коды и жмём после ввода каждой на Enter:
- установка дополнительных пакетов/зависимоестей, необходимих для полноценной работы утилитыsudo apt install -y python3-pip ffmpeg ffmpeg-doc libdvdcss2 libportaudio2 sndiod python-mutagen-doc python-pyxattr-doc libfribidi-bin bidiv- установка утилитыpython3 -m pip install --force-reinstall https://github.com/yt-dlp/yt-dlp/archive/master.tar.gz
Обновление утилиты при этом варианте, во всех 3-х способах осуществляется вновь вводом и выполнением команды на установку (- установка утилиты)
4. Сборка (Компиляция) - самый сложный
- его мы рассматривать не будем. т.к. этот способ слишком сложен для обычного пользователя
Использование утилиты
Утилита yt-dlp умеет работать (скачивать видео, стримы, части видео, кодировать, конвертировать и мн. мн. другое...) со многими видео-хостингами, стриминг-площадками, социальными сетями, просто сайтами и пр., а в связке с утилитой FFmpeg (данная утилита есть в командах/кодах установки) ещё и делать нарезку/части видео...
Получить подробную справку по применению разного рода опций (префиксов) работы с утилитой можно, выполнив команду:yt-dlp --helpСписок опций:Или на GitHub-е проекта данной утилиты, по ссылке на раздел General Options:
General Options
Посмотреть список сервисов, откуда можно скачивать видео и пр., можно, выполнив команду:yt-dlp --list-extractorsСписок сервисов:(на самом деле, утилита может работать и со множеством сервисов, не указанных в её списке...)
Самый простой способ скачать видео.
При таком способе скачивания, видео скачивается по умолчанию в Домашний каталог (Домашняя папка):
/home/user, где user - это ваше имя пользователя в системе
и таким, каким оно залито на ресурс.
Т.е., с доступными наивысшим качеством и наилучшей аудио-дорожкой, в том формате (mp4, VOV, avi, agg и пр...), в каком оно залито, а также с полным, оригинальным именем и номером файла (здесь 16840961_456258552).
Например с ВКонтакте:
(получить ссылку на скачивание можно, запустив само видео, потом ПКМ на него и ЛКМ на Скопировать ссылку на видео)yt-dlp https://vk.com/video-16840961_456258552
То же самое, но только с указанием папки/каталога, куда мы хотим скачать видео:
(здесь папка Видео в Домашней папке)yt-dlp -P Видео https://vk.com/video-16840961_456258552
Скачать видео с различными опциями/префиксами/параметрами (выше, в спойлере Список опций).
Например, давайте скачаем это же видео, но с опциями:
-f или --format (format - формат видео) - что принудительно устанавливает видео в формат лучшего качества префиксом b (best - лучшее)
--merge-output-format mp4 - что принудительно конвертирует конечный файл видео в формат префиксом mp4
-o Видео/'%(title)s.%(ext)s' - что принудительно указывает папку (здесь папка Видео в Домашней папке), в которую мы хотим скачать виедо и перфикс формирования названия и конечного расширения видео (здесь получится имя_файла.mp4).
И заметьте, здесь, для принудительного указания папки, применяется префикс -o, а не -P, как в первом, самом простом способе скачивания, т.к. мы принудительно формируем имя и расширение конечного файла.
Т.е. префкис -P применяется только в случае отсутствия принудительного формирования имени и расширения конечного файла.yt-dlp -f b --merge-output-format mp4 -o Видео/'%(title)s.%(ext)s' https://vk.com/video-16840961_456258552
То же самое, но с худшим качеством, c опцией -f и префиксом w - что принудительно устанавливает видео в формат худшего качества w (worst - худшее):yt-dlp -f w --merge-output-format mp4 -o Видео/'%(title)s.%(ext)s' https://vk.com/video-16840961_456258552
Очень часто, при скачивании видео, особенно с ВКонтакте, в виду того, что формат исходного файла определяется, как url480:[info] -5158073_456266686: Downloading 1 format(s): url480
Конечный файл, даже не смотря на то, что в коде, в --merge-output-format прописан формат mp4, определяется, как в формате .unknown_video:[download] Destination: Видео/имя_файла.unknown_video
И, естественно, при добавлении куда-либо такого видео, ни один сервис, куда вы захотите выложить его, просто не примет его, т.к. у файла просто нет, как такового, известного сервисам расширения.
Исправляется это, как ни странно, банальным переименованием расширения файла!
Т.е. вместо .unknown_video прописываете .mp4!
Делается это так:
- ПКМ на файл и в выпавшем контекстном меню ЛКМ на Переименовать... и после замены расширения файла, ЛКМ жмёте на кнопку Переименовать либо на клавиатуре на Enter
или
- засвечиваете мышкой файл: Ctrl+ЛКМ и жмёте на клавишу F2 и после замены расширения файла, ЛКМ жмёте на кнопку Переименовать либо на клавиатуре на Enter
Также можно скачать видео, поигравшись с параметрами опции -f и префиксов b или bv (best - лучшее качество видео)/w или wv (worst - худшее качество видео) и ba (best audio - лучшее качество аудио-дорожки)/wa (worst audio - худшее качество аудио-дорожки), добавив к нему параметры, например:
- разрешения видео [height=360] (с разрешением 360)
- аудио-кодек ba[ext=m4a] (аудио-кодек mp4a.40.2)
Почему именно с такими параметрами?
Чтобы вы видели возомжности утилиты yt-dlp, чтобы понимали алгоритм применения тех или иных опций/префиксов/параметров.
А перед скачиванием, можно посмотреть доступные форматы (качество) видео и аудио, дабы удостовериться в правильности выбора нами форматов/кодеков, выполнив команду, например, вот, этого видео с YouTube с опцией -F или --list-formats:
(опция -F или --list-formats - это список доступных форматов для скачивания форматов/кодеков данного видео-файла.
Получить сслыку на видео с YouTube, можно, нажав под видео на кнопку Поделится и в выпавшем меню нажав на Копировать)yt-dlp -F https://youtu.be/zMA8pCYms2k
И в результе выполнения этой команды, получаем, вот, такую таблицу-вывод с полной инофрмацией о доступных для скачивания форматах/кодеках видео/аудио данного видео-файла:
(Обратите внимание!!! Доступные форматы для скачивания полноценного видео в выводе Терминала отмечены в таблице в колонке ABR абревиатурой Ok и чем больше цифра разрешения в таблице в колонке RESOLUSION, например в данном случае у этого файла самое высокое качество/разрешение 720 в строке: 1280х720, тем больше соответственно размер файла, что актуально учитывать, если в дальнейшем вы собираетесь заливать куда-либо этот файл. Поэтому, заранее определитесь, в каком разрешение вы собираетесь скачать данный файл, например у этого файла есть ещё 2 варианта разрешения 360 и 144 и, соответсвтенно, размер файла, чем меньше эта цифра, тем меньше размером будет и файл и хуже качество отображения)
А теперь, после ознакомления со списком/таблицей доступных для скачивания форматов, всё же давайте скачаем это видео с опциями/префиксами/параметрами, как мы и хотели:yt-dlp -f b[height=360]ba[ext=m4a] --merge-output-format mp4 -o Видео/'%(title)s.%(ext)s' https://youtu.be/zMA8pCYms2kилиyt-dlp -f b[height=360]+ba[ext=m4a] --merge-output-format mp4 -o Видео/'%(title)s.%(ext)s' https://youtu.be/zMA8pCYms2k
В результате, в папке Видео, мы обнаружим файл имя_файла.mp4 с качеством в 360p (разрешение в пикселях) и с аудио-дорожкой в формате m4a (MPEG-4 Audio Layer)
Скачать часть видео.
Скачать часть видео можно в связке (содружестве) с утилитой FFmpeg.
Получить подробную справку по опциям/префиксам/параметрам этой утилиты можно, выполнив команду:FFmpeg --helpСписок опций:А можно ещё октрыть её мануал (подробная инструкция) командой:man ffmpeg
Итак, давайте скачаем часть того же видео с YouTube, например с начала и до 2-й минуты, выполнив команду:
(для удобства и, чтобы не выкидывало ошибку, что такое видео уже скачано и существует, добавим в секцию -o Видео/'%(title)s.%(ext)s', после первого s. абревиатуру p1., что будет означать часть 1 и т.д. с каждой частью: p2., p3., p4. и тогда имена частей файла будут иметь, вот, такой вид: имя_файла.p1.mp4, имя_файла.p2.mp4, имя_файла.p3.mp4 и т.д...)yt-dlp -f b[height=360] --merge-output-format mp4 -o Видео/'%(title)s.p1.%(ext)s' --downloader ffmpeg --downloader-args '-ss 00:00:00.00 -to 00:02:00.00' https://youtu.be/zMA8pCYms2k
Или, давайте скачаем часть видео не с самого начала, а с начала 1-й минуты и до 3-х минут командой:yt-dlp -f b[height=360] --merge-output-format mp4 -o Видео/'%(title)s.p2.%(ext)s' --downloader ffmpeg --downloader-args '-ss 00:01:00.00 -to 00:03:00.00' https://youtu.be/zMA8pCYms2k
А теперь давайте скачаем оставшуюся часть видео cо 2-й минуты и до конца командой:yt-dlp -f b[height=720] --merge-output-format mp4 -o Видео/'%(title)s.p3.%(ext)s' --downloader ffmpeg --downloader-args '-ss 00:02:00.00 -c copy' https://youtu.be/zMA8pCYms2k
Вот, в приципе и все основные, простые хитрости скачивания.
Вы легко можете, воспользовавшись любым онлайн-переводчиком, найти в Справке и Манулах данных утилит, либо просто воспользовавшись поиском в любой Поисковой системе, как сделать то или иное действие с видео.
Страница данной утилиты на GitHub-е:
GitHub - yt-dlp
Всем Удачи и приятного пользования.
В качестве бонуса...
Неоторые сревисы ограничивают (лимитируют) размер загружаемого видео на свой ресурс, в частности WhatsApp, где с недавних пор можно залить в чат или группу видео размером не более 16Мб.
Единственный, доступный метод выйти из положения, сжать видео.
И поможет нам в этом, опять же утилита FFmpeg.
Сделать это можно с опцией -crf (Constant Rate Factor).
В FFmpeg. настройки CRF варьируются от 0 до 51, где 0 - без потерь, а 51 - потрясающе низкого качества.
По умолчанию установлено значение 23, и вам нужно найти "точку отсчета" для вашего конкретного видео с размером файла и качеством видео, поэкспериментировав с этим значением.
Например, давайте сожмём всё тоже самое видео с YouTube-а, скачаное выше, но в рарешении 720p и конечным рамером в 61.47Мб, установив для эксперимента в опции CRF значение -crf 27, выполним команду:ffmpeg -i Видео/Лёд\ слёзы\ льёт\ -\ Владимир\ Кузьмин\ \(Live\)\ 2003.mp4 -c:v libx264 -preset slow -crf 27 -c:a copy Видео/test.mp4
Теперь давайте проверим размер конечного файла test.mp4:ls -lh Видео/test.mp4
Размер получился 39Мб:-rw-rw-r-- 1 user user 39M июн 5 15:34 Видео/test.mp4
Всё ещё многовато...
Ещё раз сожмём файл, но уже со значением -crf 38:ffmpeg -i Видео/Лёд\ слёзы\ льёт\ -\ Владимир\ Кузьмин\ \(Live\)\ 2003.mp4 -c:v libx264 -preset slow -crf 38 -c:a copy Видео/test.mp4
Снова проверяем размер конечного файла test.mp4:ls -lh Видео/test.mp4
И видим, что конечный размер файла получился 15Мб:-rw-rw-r-- 1 user user 15M июн 5 15:34 Видео/test.mp4
То, что надо!
Теперь смело можно заливать это видео в тот же WhatsApp...
Обратите внимание!!!
Этой командой видео перекодируется, а аудио просто копируется.
Что при этом нужно учитывать:
1. Если размер все еще слишком велик, а качество видео остается приемлемым, попробуйте менять -crf ХХ, постепенно увеличивая его целое число, пока не найдете приемлемый компромисс между качеством видео и размером файла.
2. Если качество видео слишком низкое, вы можете попробовать уменьшать -crf ХХ, постепенно уменьшая его целое число, пока не найдете приемлемый компромисс между качеством видео и размером файла.
В общем, экспериментируйте до достижения нужного результата...
P.S. Если у вас появились вопросы или мнения по данной статье, обсудить их можно на нашем форуме: