Завантажте все з відео YouTube за допомогою youtube-dl


16

Я хочу завантажити все (субтитри, картки, теги, анотації, ескізи тощо) (і, очевидно, відео з аудіо / звуком)) з відео YouTube (наприклад, цього ).

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

Я ffmpegвстановив, і чув, що вам це потрібно для завантаження без втрат з YouTube, але я не знаю, як це пов’язати youtube-dl.

Це я вперше використовую youtube-dl, тому будь-яка допомога вдячна.

Відповіді:


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, які я придбав, щоб я міг їх переглядати, поки їду в довгу подорож.

Прочитайте статтю Чи можу я завантажити курс на свій комп’ютер? :

За замовчуванням повні курси не можна завантажити з комп'ютера. Ми робимо це з побоювань щодо піратства.

Зверніть увагу, що ви завжди можете зберегти курси для перегляду в режимі офлайн на мобільному додатку Udemy . Щоб дізнатися, як завантажити відео-лекції на мобільний пристрій iOS, натисніть тут . Щоб дізнатися, як завантажити відео для перегляду в режимі офлайн на пристрої Android, натисніть тут .


Я ffmpegвстановив, і чув, що вам це потрібно для завантаження без втрат з YouTube, але я не знаю, як це пов’язати youtube-dl.

youtube-dlвикористовує avconvза замовчуванням, але --prefer-ffmpegнехай ви використовуєте ffmpegзамість цього. У будь-якому випадку ця опція не потрібна для " завантажень без втрат ". У наведеному нами прикладі youtube-dlвикористовується лише ffmpegдля об'єднання всіх завантажених форматів у єдиний mkv-файл.


Чи вбудує це інформацію з 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? Цей варіант не з’являється в моєму кінці (він
обмежується

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 в B / s (байти в секунду).
    Аргументи: будь-яке додатне ціле число з великим літерним суфіксом.
    Суфікси одиниць: K для кілобайт; М для Мегабайт; Незрозуміло, чи підтримується гігабайт.
    Доповнення:
    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файл. Збережено в тій же папці, що і відеофайл.
    Ommission: не впливає на те, --add-metadataякі ще будуть записувати метадані відео у вихідний файл відео.

  • --write-description
    Аргументи: немає
    Формат виводу: звичайний текст;
    Додавання: текст, розміщений завантажувачем відео, записує в окремий Write .descriptionфайл відео (під відео (макет youtube 2018)) у окремий файл. Збережено в тій же папці, що і відеофайл.

  • --write-thumbnailпише мініатюру найвищої роздільної здатності, доступну (викликається maxresdefault.jpgютубом) для .jpgфайлу. Перейменовано за шаблоном, вказаним на --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
    повідомленнями про помилки: Якщо немає субтитрів, повідомлення ПЕРЕДАЧА буде надруковано у формат stdout: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'
    Аргументи: Рядок: розширення формату Ass, srt або кращий
    формат виводу: Типово .vtt; або відповідно до специфікації
    Доповнення: записує субтитри у визначений формат файлу (напр .:) .srt. Збережено в тій же папці, що і відеофайл.
    Оммісія: субтитри будуть записані у вигляді .vtt
    повідомлень про помилки: Якщо немає субтитрів, повідомлення INFO буде надруковано у форматі stdout: [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 буде надруковано у stdout - формат: [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'
    Поведінка: використовується для створення текстового файлу, що містить посилання попередньо завантажених відео. Дозволяє пропускати ці відео при завантаженні цілого каналу. Не потрібно лише для завантаження одного відео.
    Аргументи: Рядок: складений шлях до вашого відеоархіву, каталог ім'ям каналу. Назва файлу складається з назви каналу з .ytdlarchiveрозширенням файлу. (також може бути .txt; але унікальний формат дозволяє легко розмежувати)
    Формат виводу: звичайний текст; один відеоідентифікатор на рядок
    Додавання:
    1. ytdl читає цей файл, ігнорує та пропускає всі відео, перелічені із ним у своєму відеоідентифікаторі, навіть якщо ще не завантажено.
    2. автоматично додає videoID останнього завантаженого відео до цього файлу
    Ommission: якщо існують файли відеофайлів та метаданих, ytdl завантажить їх знову.

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

  • --merge-output-format '<video_format>'
    Аргументи: формат відеофайлу. (напр .: mp4, mkv, 3gp тощо)
    Додавання: можна вказати формат
    відеофайлу Ommission: За замовчуванням 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-адреса відео Помилка буде надруковано в stdout - формат: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як резервний аргумент просто для впевненості.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.