Вопрос или проблема
Как я могу использовать 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 является стандартом.