Загрузите все из видео YouTube, используя youtube-dl

16

Я хочу скачать все (субтитры, карточки, теги, аннотации, миниатюры и т. Д. (И, конечно, видео с аудио)) из видео YouTube (например, этого ).

Я использую youtube-dlи, с огромным количеством переключателей, я не могу найти что-то, что соответствует моим потребностям. Я также хочу скачать видео / аудио в максимально возможном качестве без потери качества. Несмотря на то, что это не YouTube, я также хотел скачать некоторые из моих курсов удем, которые я купил, чтобы я мог смотреть их, пока я нахожусь в длительной поездке.

Я ffmpegустановил, и я слышал, что это нужно для загрузки без потерь с YouTube, но я не уверен, как с этим связать youtube-dl.

Это мой первый раз youtube-dl, поэтому любая помощь приветствуется.

leetbacoon
источник

Ответы:

14

Соответствующие опции вам нужны:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

Скопируйте это в ваш конфигурационный файл (либо, /etc/youtube-dl.confлибо ~/.config/youtube-dl/config).

Используя эту конфигурацию, я скачал это видео и youtube-dlнаписал следующие файлы:

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

Я не могу опубликовать mediainfoвывод здесь, потому что он превышает ограничение количества символов, но вы можете увидеть его в github .


Я также хочу скачать видео / аудио в максимально возможном качестве без потери качества.

youtube-dlзагружает видео с максимально возможным качеством по умолчанию, но вы можете использовать это поведение, используя --format bestvideo+bestaudio/best.


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

Пожалуйста, прочитайте статью. Могу ли я скачать курс на свой компьютер? :

По умолчанию полные курсы нельзя загрузить с компьютера. Мы делаем это из соображений пиратства.

Обратите внимание, что вы всегда можете сохранить курсы для просмотра в автономном режиме в мобильном приложении Udemy . Для получения информации о том, как загрузить видео лекции на мобильное устройство iOS, пожалуйста, нажмите здесь . Чтобы узнать, как загрузить видео для просмотра в автономном режиме на устройстве Android, нажмите здесь .


Я ffmpegустановил, и я слышал, что это нужно для загрузки без потерь с YouTube, но я не уверен, как с этим связать youtube-dl.

youtube-dlиспользует avconvпо умолчанию, но --prefer-ffmpegпозволяет использовать ffmpegвместо этого. В любом случае, эта опция не нужна для " загрузки без потерь ". В приведенном мной примере youtube-dlиспользуется только ffmpegдля объединения всех загруженных форматов в один файл MKV.

nxnev
источник
Будет ли это включать информацию с YouTube в видео? Я не хочу этого точно, я просто хочу, чтобы он загрузил его, но хранит все это в отдельных файлах, вроде как это выглядит :)
leetbacoon
И является ли .mkv контейнером по умолчанию для видео без потерь youtube-dl?
Leetbacoon
Ох, а как ты скачал видео? youtube-dl [youtube-link]?
Leetbacoon
1
@ leetbacoon, я вижу. Я добавлю сообщение об ошибке.
nxnev
1
@leetbacoon Когда я писал этот ответ, все было наоборот, я youtube-dlне смог бы загрузить определенные видео, если бы не было --youtube-skip-dash-manifestопции. Только что отредактировал этот вариант, спасибо, что сказали мне.
nxnev
6

Чтобы просто скачать видео, вы можете использовать это:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

Чтобы выбрать качество видео, вы должны сначала использовать опцию -F для просмотра списка доступных форматов.

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

И это вывод для вашего видео:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

Вот несколько полезных опций для субтитров:

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

И для миниатюр:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

Вы также можете найти больше информации о качестве видео здесь

Мойтаба Зали
источник
4
Что вы надеетесь достичь с помощью ручного выбора формата? youtube-dlпо умолчанию использует лучшие доступные видео и аудио форматы. Если вы хотите переопределить другой параметр в файле конфигурации, вы можете использовать его -f bestvideo+bestaudio/best(который совпадает со значением по умолчанию) или игнорировать файл конфигурации ( --ignore-config).
Дэвид Фёрстер,
Не цитируйте меня об этом, но я думал, что прочитал ранее, что для получения видео без потерь с аудио, вы просто используетеyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
И просто интересно, почему копия 1080p считается лучшей, если доступно 1440p? И почему отображается 2160p? Этот вариант не появляется на моем конце (он ограничен 1440p)
leetbacoon
3

@leetbacoon увидеть комментарий комментарий в самом низу. (низкая репутация все еще плачу)

Примечание: я буду использовать более длинные имена переключателей, чтобы избежать путаницы. Многие из используемых переключателей имеют более короткие версии. См. Документы: Опции .

Примечание: - для наглядности \используется для отображения переключателей отдельно; все \можно опустить; при использовании \убедитесь, что после него нет пробела \.


Сводка: команда ytdl для загрузки одного видеофайла с самым высоким качеством видео и аудио. Сохраняет видео в свой собственный каталог (указанный вами). Загружает все доступные метаданные, записывает каждый в соответствующие форматы файлов и сохраняет в том же каталоге. Добавляет метаданные видео в файл вывода видео.

Замените своим:

  • замените /archive/videos/TED_Archive/в коммутаторах --download-archiveи --outputна путь каталога по вашему выбору.
  • пример пути хранения / архив / видео
  • пример ссылки на видео: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • Пример каталога канала / TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

Примечание: приложите все аргументы ' 'для анализа безопасности.

Объяснение рекомендуемых переключателей:

  • --limit-rate '0.25M'используется для ограничения доступной максимальной скорости загрузки каждого экземпляра youtube-dl в б / с (байт в секунду).
    Аргументы: любое положительное целое число с суффиксом с заглавной буквы.
    Суффиксы юнитов: K для килобайт; М для мегабайта; Неясно, поддерживается ли Gigabyte.
    Дополнение:
    1. Избегайте блокировки интернет-соединения.
    2. полезно при управлении скоростью загрузки нескольких параллельных экземпляров ytdl.
    Пропуск:
    1. Засоряет интернет; невозможно просматривать, запаздывание воспроизведения видео YouTube.
    2. загрузит видео как можно быстрее.
    Примечание: вы можете запускать несколько экземпляров youtube-dl одновременно.

  • --retries '5'используется для автоматической повторной загрузки видео в случае сбоя. Полезно при загрузке списка воспроизведения или всего канала (который, с точки зрения Youtube, также является списком воспроизведения (данного канала)).
    Значения: выберите любое положительное целое число. По умолчанию это 10. Макс есть infinite(введите как буквальную строку).

  • --continue
    Аргументы: нет.
    Добавление:
    1. принудительно возобновит загрузку частичных файлов.
    Примечание: ytdl загружает видео порциями; чанки сохраняются, если ytdl неожиданно завершает работу во время загрузки.
    Пропуск:
    1. По умолчанию ytdl возобновит загрузку, если это возможно.

  • --no-overwrites
    Аргументы: ни одно
    дополнение: будет не перезаписывать существующие файлы метаданных с одинаковыми именами.
    Ommission: перезапишет существующие файлы метаданных с такими же именами, но не видеофайл.

    • --call-home используется для связи с сервером ytdl для отладки.

      «Если ваш сервер имеет несколько IP-адресов или вы подозреваете цензуру, добавление --call-home может быть хорошей идеей для получения дополнительной диагностики». - Документы: ошибки , полученные 20180408,

  • --write-info-json
    Аргументы: нет
    Формат вывода: json;
    Информационное содержимое: количество просмотров, лайки, дата загрузки, информация о качестве видео и аудио и т. Д. (Но не текстовое описание видео (размещено под видео пользователем, добавившим видео (макет YouTube 2018)))
    Добавление: записывает метаданные видео в отдельный .info.jsonфайл. Сохранено в той же папке, что и видеофайл.
    Пропуск: не влияет на то, --add-metadataкто все еще будет записывать метаданные видео в файл вывода видео.

  • --write-description
    Аргументы: нет
    Формат вывода: простой текст;
    Дополнение: записывает текст, размещенный загрузчиком видео в разделе описания видео (под видео (макет YouTube 2018)) в отдельный Write .descriptionфайл. Сохранено в той же папке, что и видеофайл.

  • --write-thumbnailзаписывает maxresdefault.jpgв .jpgфайл доступное миниатюру с самым высоким разрешением ( вызывается YouTube) . Переименован в соответствии с шаблоном, указанным с --output. Сохранено в том же каталоге, что и видеофайл.
    Аргументы: нет
    Формат вывода: только JPEG;
    Примечание. Используйте youtube-dl --list-thumbnails '<video_url>'для изучения доступных миниатюр определенного видео (не работает со ссылками на плейлист); Напр .:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsзаписывает видео аннотации в .annotations.xmlфайл. Переименован в соответствии с шаблоном, указанным с --output. Сохранено в том же каталоге, что и видеофайл.
    Аргументы: нет
    Формат вывода: .xml;

  • --all-subsзаписывает все пользовательские созданы доступные субтитры для видео их соответствующих файлов (напр .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Аргументы: ни один
    выход Формат: по умолчанию .vtt; Можно указать другие форматы с помощью --sub-format
    сообщений об ошибках: если субтитры не доступны, в стандартный вывод выводится сообщение ПРЕДУПРЕЖДЕНИЕ:WARNING: video doesn't have subtitles

Полезная команда:

Примечание. Используйте youtube-dl --list-subs '<video_url>'для изучения доступных миниатюр определенного видео (не работает со ссылками на плейлист);
Напр .:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Аргументы: String: расширение формата ass, srt или best
    Формат вывода: по умолчанию .vtt; или согласно спецификации
    Дополнение: записывает субтитры в указанный формат файла (например:) .srt. Сохранено в той же папке, что и видеофайл.
    Пропуск: субтитры будут записаны как .vtt
    сообщения об ошибках: если субтитры отсутствуют, сообщение INFO будет напечатано в стандартный формат вывода: [ffmpeg] There aren't any subtitles to convert
    Примечание: преобразование будет выполнено как этап .vttпоследующей обработки файла после загрузки. Если выполнение ytdl неожиданно прервано, некоторые файлы субтитров могут не быть преобразованы (в этом случае снова выполните команду).

  • --add-metadata
    Аргументы: нет
    Поведение: записывает метаданные в файл вывода видео.
    Примечание: не требует .info.jsonсгенерированного--write-info-json

  • --embed-subs
    Аргументы: нет.
    Поведение:
    1. записывает субтитры в файл вывода видео;
    2. только для MP4, WebM и MKV видео
    сообщения об ошибках: Если нет субтитров доступны INFO сообщение будет выведены на стандартный вывод - формат: [ffmpeg] There aren't any subtitles to embed
    Примечание: не требует .vttпорождено --write-sub, --write-auto-subили--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Поведение: используется для создания текстового файла, содержащего ссылки на ранее загруженные видео. Позволяет пропускать эти видео при загрузке всего канала. Не требуется при загрузке только одного видео.
    Аргументы: String: составной путь к вашему видеоархиву, каталог с именем канала. Имя файла состоит из имени канала с .ytdlarchiveрасширением файла. (также может быть .txt; но уникальный формат позволяет легко различать)
    Формат вывода: простой текст; один videoID на строку
    Добавление:
    1. ytdl читает этот файл, игнорирует и пропускает все видео, перечисленные с их videoID, даже если они еще не загружены.
    2. автоматически добавляет videoID последнего загруженного видео в этот файл
    Ommission: если видеофайл и файлы метаданных существуют, ytdl загрузит их снова.

  • --format ''
    Аргументы: Рекомендуемая строка: bestvideo+bestaudio/bestдля обеспечения наилучшего качества видео и аудио.
    Дополнение: полный контроль над качеством видео и звука и их комбинациями, а также запасными качествами.
    Пропуск: По умолчанию youtube-dl will guess it for you by default- Документы
    Примечание. См. Документы: Примеры выбора формата

  • --merge-output-format '<video_format>'
    Аргументы: формат видео файла. (напр .: mp4, mkv, 3gp и т. д.)
    Дополнение: можно указать формат видеофайла.
    Пропуск: по умолчанию youtube-dl will guess it for you by default- документы
    Примечание: см. документы: выбор формата

Полезная команда:

Примечание. Используйте youtube-dl --list-formats '<video_url>'для изучения доступных видео и аудио качеств и форматов конкретного видео (не работает со ссылками на плейлист);
Напр .:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Аргументы:
    1. формат видео файла. (напр .: mp4, mkv, 3gp и т. д.);
    2. Рекомендуется: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Дополнение: влияет на соглашение об именах файлов для видеофайлов и всех файлов метаданных.
    Пропуск: по умолчанию заголовком видео будет имя файла. Шаблон по умолчанию: %(id)s.%(ext)sвыдаст пример: testvideo.mkv
    Примечание: не забудьте %префикс и sсуффикс (существуют и другие суффиксы); Тебе _между элементами шаблона является просто разделитель и может быть любой другой символ. Пример: %(upload_date)s-%(id)s
    Примечание: см. Документы: Шаблон вывода

  • '<video_url>'
    Аргументы: Строка: URL-адрес конкретного видео
    Сообщение об ошибке:
    1. Если URL-адрес видео не отправлен, ytdl не будет выполняться и отображать справку.
    2. Если введен неверный URL-адрес видео, сообщение об ошибке будет напечатано в стандартный вывод:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Рекомендации по хранению:

  1. создайте miscкаталог в вашем видеоархиве и сохраните там все отдельные видео.

  2. когда вы загружаете одно или несколько видео из канала, создайте специальный каталог для этого канала. В этом случае имя канала будет, TED Archiveа имя каталога будет TED_Archive. (Я предварительно заменяю все пробелы символами подчеркивания, чтобы упростить навигацию по каталогам и действия с файлами ввода-вывода при использовании сценариев bash (или python)).


Отвечая на ваш комментарий @leetbacoon

И просто интересно, почему копия 1080p считается лучшей, если доступно 1440p? И почему отображается 2160p? Этот вариант не появляется на моем конце (он ограничен 1440p) - leetbacoon

Из документов
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

Я думаю, что когда вы выбираете просто, bestи вы указываете выходной формат, YouTube отправляет формат, который он считает лучшим видео + аудио комбо для этого формата. Это может быть предметом некоторых внутренних решений балансировки YouTube (спекуляции).


В моем опыте использования мне пришлось специально указать, bestvideo+bestaudioчтобы получить наивысшее качество видео и аудио, соответственно, а затем объединить их в контейнере .mkv.


Я использую /bestв качестве запасного аргумента просто чтобы быть уверенным.


Мечтая о Кортане
источник