Скачивать только в формате mp4 с помощью youtube-dl

Вопрос или проблема

Как я могу использовать download-dl для загрузки видео только через плейлист URL в формате mp4 вместо формата .mkv или .webm?

Я использую эту команду для загрузки видео: youtube-dl -itcv --yes-playlist https://www.youtube.com/playlist?list=....

Результатом этой команды являются видео с расширением .mp4, .mkv или .webm

Пример (источник):

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' url

Обновление

Используя yt-dlp (хорошая ветка youtube-dl). Руководство по установке.

yt-dlp -f "best[ext=mp4]" URL
Оригинальный ответ

Чтобы вывести список доступных форматов, введите:

youtube-dl -F url

Затем можно выбрать скачивание определенного формата, введя номер кода формата (в примере ниже 11):

youtube-dl -f 11 url 

Пример с webupd8

youtube-dl -F http://www.youtube.com/watch?v=3JZ_D3ELwOQ

выходной пример:

[youtube] Установка языка
[youtube] 3JZ_D3ELwOQ: Загрузка веб-страницы
[youtube] 3JZ_D3ELwOQ: Загрузка информации о видео
[youtube] 3JZ_D3ELwOQ: Извлечение информации о видео
[info] Доступные форматы для 3JZ_D3ELwOQ:
Код формата расширение разрешение  примечание 
171         webm      только аудио  DASH webm audio , audio@ 48k (худший)
140         m4a       только аудио  DASH audio , audio@128k
160         mp4       192p        DASH video 
133         mp4       240p        DASH video 
134         mp4       360p        DASH video 
135         mp4       480p        DASH video 
136         mp4       720p        DASH video 
137         mp4       1080p       DASH video 
17          3gp       176x144     
36          3gp       320x240     
5           flv       400x240     
43          webm      640x360     
18          mp4       640x360     
22          mp4       1280x720    (наилучший)

Вы можете выбрать лучший и ввести

youtube-dl -f 22 http://www.youtube.com/watch?v=3JZ_D3ELwOQ

Чтобы получить лучшее качество видео (1080p DASH – формат “137”) и лучшее качество звука (DASH audio – формат “140”), вы должны использовать следующую команду:

youtube-dl -f 137+140 http://www.youtube.com/watch?v=3JZ_D3ELwOQ

РЕДАКТИРОВАНИЕ

Вы можете получить больше опций здесь

Выбор видео:

--playlist-start NUMBER          Начало воспроизведения видео плейлиста (по умолчанию 1)
--playlist-end NUMBER            Конец воспроизведения видео плейлиста (по умолчанию последний)
--playlist-items ITEM_SPEC       Элементы видеоплейлиста для загрузки. Укажите
                             индексы видео в плейлисте,
                             разделенные запятыми, например: "--playlist-items
                             1,2,5,8", если вы хотите скачать видео
                             с индексами 1, 2, 5, 8 в плейлисте. Вы можете
                             указать диапазон: "--playlist-items
                             1-3,7,10-13", это загрузит видео
                             с индексами 1, 2, 3, 7, 10, 11, 12 и 13.
--match-title REGEX              Загрузить только заголовки, соответствующие регулярным выражениям или
                             подстрокам
--reject-title REGEX             Пропустить загрузку для заголовков, соответствующих регулярным выражениям или
                             подстрокам
--max-downloads NUMBER           Прекратить после загрузки NUMBER файлов
--min-filesize SIZE              Не загружать видео меньше
                             SIZE (например, 50k или 44.6m)
--max-filesize SIZE              Не загружать видео больше, чем SIZE
                             (например, 50k или 44.6m)
--date DATE                      Загрузить только видео, загруженные в эту дату
--datebefore DATE                Загрузить только видео, загруженные в эту или более раннюю дату
                             (включительно)
--dateafter DATE                 Загрузить только видео, загруженные в эту или более позднюю дату
                             (включительно)
--min-views COUNT                Не загружать видео с количеством просмотров менее
                             COUNT
--max-views COUNT                Не загружать видео с количеством просмотров более
                             COUNT
--match-filter FILTER            Общий фильтр видео (экспериментальный).
                             Укажите любой ключ (см. справку для -o для списка
                             доступных ключей), чтобы сопоставить, если ключ
                             присутствует, !key для проверки отсутствия ключа.
                             ключ > NUMBER (например, "comment_count >
                             12", также работает с >=, <, <=, !=, =), чтобы
                             сравнить с числом, и & для требования
                             нескольких совпадений. Значения, которые неизвестны, не включаются, если вы не
                             добавите вопросительный знак (?) после оператора,
                             например, чтобы соответствовать только видео, которые получили
                             более 100 лайков и менее 50 дизлайков (или возможность
                             дизлайков недоступна на данном сервисе), но и
                             имеют описание, используйте --match-filter "like_count > 100 &
                             dislike_count <? 50 & description" .
--no-playlist                    Загрузить только видео, если URL-адрес ссылается
                             на видео и плейлист.
--yes-playlist                   Загрузить плейлист, если URL-адрес ссылается на
                             видео и плейлист.
--age-limit YEARS                Загрузить только видео, подходящие для данного
                             возраста
--download-archive FILE          Загрузить только видео, не указанные в
                             файле архива. Запишите идентификаторы всех
                             загруженных видео в него.
--include-ads                    Загрузить также рекламные материалы
                             (экспериментальный)

Согласно этому комментарию от glenn-slayden, формат mp4 с наивысшим качеством видео можно получить следующим образом:

Я понимаю, что это обсуждение немного устарело, но, по-моему, ситуация несколько изменилась. Для моей цели:

  • в первую очередь всегда выбирайте самое лучшее качество видео вне зависимости от формата;
  • но затем никогда не позволяйте одному лишь аудио формату приводить к тому, что вы потеряете mp4.

Ранее я использовал bestvideo+bestaudio/best, но я нахожу, что следующий вариант работает намного лучше для сокращения mkv (видимо, устраняет webm), но при этом гарантирует наивысшее качество видео (не используйте опцию --merge-output-format, когда используете это):

--format bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best 

Обратите внимание, что в первом термине фильтр ext указан для аудио, но не для видео, что не упоминалось в обсуждении выше. Если это кажется противоречивым моим заявленным целям, то, возможно, это потому, что, если мы пытаемся гарантировать, что видеоформат – mp4, зачем устанавливать ограничение только для аудио?

Ключевым является то, что каждый запасной термин (разделенный слэшами) потерпит неудачу, если любая часть его требования не будет выполнена, и переходит к следующему термину. При использовании bestvideo+bestaudio, многие случаи получения контейнера, отличного от mp4, возникают только из-за того, что это формат выбора однозначно настаивает на bestaudio, что может означать смешанный формат. Это потому, что команда bestvideo+bestaudio слишком настойчива, и вы вынуждены перейти из mp4.

Но что, если вы больше заботитесь о получении контейнера mp4, чем о качестве звука? Настойчиво требуя аудио формата m4a сначала, но затем уступая только в этом аспекте при повторной установке bestvideo (посредством выбора формата, указанного выше), вы по сути выражаете гибкое предпочтение формату mp4 по сравнению с другими контейнерами; вы действительно хотите mp4, если это возможно, но не ценой снижения качества видео.

Как я уже сказал, вы, возможно, всё же получите некоторые mkv, но их количество будет значительно уменьшено, и они будут использоваться только тогда, когда требуется предоставить (предположительно) более качественное видео. И пока с этим конфигурацией я не видел ни одного webm, потому что что-то вроде 248+140 в итоге оказывается mkv.

В последнем случае добавление --merge-output-format mp4 преобразует в mp4, если это необходимо. Таким образом, полная команда выглядит следующим образом:

youtube-dl --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4

Вы можете использовать youtube-dl -f mp4 <url>.

Я не уверен, правильно ли это делать, только то, что это работает и дает файл mp4 с наивысшим качеством как аудио, так и видео для формата mp4.

Этот файл немного отличается от файла, полученного с -f <the best options>, хотя потоки, похоже, одинаковы. Я попробовал оба на видео: -f mp4, затем -f 137+140 (вручную выбрав лучшее аудио и видео). ffprobe сообщает следующее о файле, полученном с -f mp4:

Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isommp42
    creation_time   : 2019-06-23T18:39:33.000000Z
    Duration: 00:00:56.01, start: 0.000000, bitrate: 906 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 775 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
Metadata:
      creation_time   : 2019-06-23T18:39:33.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 06/23/2019.
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
Metadata:
      creation_time   : 2019-06-23T18:39:33.000000Z
      handler_name    : ISO Media file produced by Google Inc. Created on: 06/23/2019.

И это о файле, полученном с -f 137+140:

  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.9.100
  Duration: 00:00:56.05, start: 0.000000, bitrate: 909 kb/s
    Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720 [SAR 1:1 DAR 16:9], 775 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 127 kb/s (default)
    Metadata:
      handler_name    : SoundHandler

Таким образом, видеопотоки и аудиопотоки выглядят идентичными, но другой мультиплексор (если я правильно использую этот термин) был использован для сборки их в итоговый файл.

Вместо того чтобы использовать это для загрузки файла формата .mkv:

youtube-dl 'https://www.youtube.com/watch?v=GwIzYX5t5l4'

просто используйте это для загрузки файла формата .mp4:

youtube-dl 'https://www.youtube.com/watch?v=GwIzYX5t5l4' --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4

Самый простой вариант – использовать yt-dlp -S "ext".

Это позволит скачать лучшее видео (и лучший звук) в лучшем расширении. А yt-dlp считает .mp4 как лучшее расширение/формат.

Согласно их README:

# Загрузить лучшее видео с лучшим расширением
# (Для видео: mp4 > mov > webm > flv. Для аудио: m4a > aac > mp3 ...)
$ yt-dlp -S "ext"

И если .mp4 когда-либо недоступен для видео, он все равно будет загружен, просто в другом формате.

.

Ответ или решение

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

Теория

youtube-dl и yt-dlp — это мощные инструменты командной строки, которые помогают загружать видео и аудио с множества сайтов, в первую очередь с YouTube. Они поддерживают загрузку в различных форматах файлов, таких как MP4, MKV и WEBM, и позволяют пользователю контролировать выбор формата, качество видео и аудио, а также другие параметры.

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

Пример

Рассмотрим пример команды, которая загружает плейлист с YouTube и обеспечивает, чтобы итоговый файл был в формате MP4:

youtube-dl -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' --yes-playlist URL

В этой команде -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/mp4' используется для указания первичного выбора формата. Этот параметр означает:

  • bestvideo[ext=mp4] — выбрать лучшее доступное качество видео, имеющее расширение mp4.
  • bestaudio[ext=m4a] — выбрать лучшее доступное качество аудио, имеющее расширение m4a.
  • /mp4 — если ни одно из предыдущих условий не удовлетворяется, воспользоваться всем доступным в формате mp4.

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

yt-dlp -f "best[ext=mp4]" URL

Эта команда загрузит наилучший доступный формат, имеющий расширение mp4, при этом yt-dlp автоматически подберет лучший вариант.

Применение

При загрузке целого плейлиста с помощью youtube-dl или yt-dlp, пользователь может столкнуться с ситуацией, когда видео доступно в формате MKV или WEBM, а не в MP4. Для избежания этого можно использовать указанные выше параметры, которые усиливают контроль на выбором формата.

Более того, yt-dlp предлагает удобную систему сортировки форматов, где можно использовать следующую команду:

yt-dlp -S "ext" URL

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

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

Во избежание потери качества и обеспечения наилучшего видео можно использовать команду для слияния видео и аудио:

yt-dlp --format "bestvideo+bestaudio[ext=m4a]/bestvideo+bestaudio/best" --merge-output-format mp4 URL

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

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

Оцените материал
Добавить комментарий

Капча загружается...