Unduh semuanya dari video YouTube menggunakan youtube-dl

16

Saya ingin mengunduh semuanya (subtitle, kartu, tag, anotasi, thumbnail, dll. (Dan tentu saja video dengan audio)) dari video YouTube (misalnya, yang ini ).

Saya menggunakan youtube-dldan, dengan jumlah sakelar yang sangat banyak untuk digunakan, saya sepertinya tidak dapat menemukan apa pun yang sesuai dengan kebutuhan saya. Saya juga ingin mengunduh video / audio dengan kualitas setinggi mungkin, tanpa kehilangan kualitas. Meskipun itu bukan YouTube, saya juga ingin mengunduh beberapa kursus udemy yang telah saya beli sehingga saya dapat menontonnya saat sedang dalam perjalanan jauh.

Saya telah ffmpegmenginstal, dan saya mendengar bahwa Anda memerlukan ini untuk unduhan lossless dari YouTube, tetapi saya tidak yakin bagaimana cara menghubungkannya youtube-dl.

Ini adalah pertama kalinya saya menggunakan youtube-dl, jadi bantuan apa pun dihargai.

leetbacoon
sumber

Jawaban:

14

Opsi yang relevan yang Anda butuhkan:

# 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

Salin itu ke file konfigurasi Anda (baik /etc/youtube-dl.confatau ~/.config/youtube-dl/config).

Dengan menggunakan konfigurasi itu, saya mengunduh video ini dan youtube-dlmenulis file-file berikut:

$ 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

Saya tidak dapat memposting mediainfooutput di sini karena melebihi batas karakter, tetapi Anda dapat melihatnya di github .


Saya juga ingin mengunduh video / audio dengan kualitas setinggi mungkin, tanpa kehilangan kualitas.

youtube-dlmengunduh video dengan kualitas setinggi mungkin secara default, tetapi Anda dapat memaksakan perilaku ini menggunakan --format bestvideo+bestaudio/best.


Meskipun itu bukan YouTube, saya juga ingin mengunduh beberapa kursus udemy yang telah saya beli sehingga saya dapat menontonnya saat sedang dalam perjalanan jauh.

Silakan baca artikel Bisakah Saya Mengunduh Kursus ke Komputer saya? :

Secara default, kursus yang lengkap tidak dapat diunduh dari komputer. Kami melakukan ini karena khawatir akan pembajakan.

Harap dicatat bahwa Anda selalu dapat menyimpan kursus untuk dilihat secara offline di aplikasi seluler Udemy . Untuk informasi tentang cara mengunduh video ceramah ke perangkat seluler iOS Anda, silakan klik di sini . Untuk langkah-langkah tentang cara mengunduh video untuk dilihat secara offline di perangkat Android, klik di sini .


Saya telah ffmpegmenginstal, dan saya mendengar bahwa Anda memerlukan ini untuk unduhan lossless dari YouTube, tetapi saya tidak yakin bagaimana cara menghubungkannya youtube-dl.

youtube-dlgunakan avconvsecara default, tetapi --prefer-ffmpegbiarkan Anda menggunakannya ffmpeg. Bagaimanapun, opsi ini tidak diperlukan untuk " unduhan lossless ". Dalam contoh yang saya berikan, youtube-dlhanya digunakan ffmpeguntuk menggabungkan semua format yang diunduh menjadi satu file mkv.

nxnev
sumber
Apakah ini akan menanamkan informasi dari YouTube ke dalam video? Saya tidak benar-benar menginginkannya, saya hanya ingin mengunduhnya, tetapi menyimpan semua itu dalam file yang terpisah, seperti apa yang terlihat :)
leetbacoon
Dan apakah .mkv wadah default untuk video lossless gunakan youtube-dl?
leetbacoon
Oh, dan bagaimana Anda mengunduh video? youtube-dl [youtube-link]?
leetbacoon
1
@leetbacoon saya mengerti. Saya akan menambahkan laporan bug.
nxnev
1
@leetbacoon Kembali ketika saya menulis jawaban ini, itu kebalikannya, youtube-dltidak akan bisa mengunduh video tertentu jika --youtube-skip-dash-manifestopsi tidak ada. Baru saja mengedit opsi itu, terima kasih telah memberi tahu saya.
nxnev
6

Untuk hanya mengunduh video, Anda dapat menggunakan ini:

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

Untuk memilih kualitas video, Anda harus terlebih dahulu menggunakan opsi -F untuk membuat daftar format yang tersedia.

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

Dan ini adalah output untuk video Anda:

[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)

Berikut adalah beberapa opsi yang berguna untuk terjemahan:

   --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

Dan untuk thumbnail:

   --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

Anda juga dapat menemukan informasi lebih lanjut tentang kualitas video di sini

Mojtaba Zali
sumber
4
Apa yang ingin Anda capai dengan pemilihan format manual? youtube-dlmenggunakan format video dan audio terbaik yang tersedia secara default. Jika Anda ingin menimpa pengaturan berbeda dalam file konfigurasi, Anda dapat menggunakan -f bestvideo+bestaudio/best(yang sama dengan default) atau mengabaikan file konfigurasi ( --ignore-config).
David Foerster
Jangan mengutip saya tentang ini, tapi saya pikir saya baca sebelumnya bahwa untuk mendapatkan video lossless w / audio, Anda hanya menggunakanyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
Dan hanya ingin tahu, mengapa salinan 1080p dianggap yang terbaik jika 1440p tersedia? Dan mengapa 2160p ditampilkan? Opsi itu tidak muncul di ujung saya (ini tutup pada 1440p)
leetbacoon
3

@leetbacoon lihat tanggapan komentar di bagian paling bawah. (rep rendah masih sry)

Catatan: Saya akan menggunakan nama sakelar yang lebih panjang untuk menghindari kebingungan. Banyak sakelar yang digunakan memiliki versi yang lebih pendek. Lihat Documents: Opsi .

Catatan: - untuk kenyamanan visual \digunakan untuk menampilkan sakelar secara terpisah; semua \bisa dihilangkan; jika menggunakan \pastikan tidak ada karakter spasi setelahnya \.


Sinopsis: Perintah ytdl untuk mengunduh satu file video dengan kualitas video dan audio tertinggi yang tersedia. Menyimpan video ke direktori sendiri (ditentukan oleh Anda). Unduh semua metadata yang tersedia, tulis masing-masing ke format file masing-masing dan simpan di direktori yang sama. Menambahkan metadata video ke file output video.

Pengganti dengan Anda sendiri:

  • ganti /archive/videos/TED_Archive/di switch --download-archivedan --outputdengan jalur direktori pilihan Anda.
  • contoh jalur penyimpanan / arsip / video
  • contoh tautan video: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • contoh direktori saluran / 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' ;

Catatan: Lampirkan semua argumen dengan ' 'untuk keamanan parsing.

Penjelasan sakelar yang disarankan:

  • --limit-rate '0.25M'digunakan untuk membatasi kecepatan unduh maksimum yang tersedia untuk setiap instance youtube-dl dalam B / s (byte per detik).
    Argumen: bilangan bulat positif apa pun dengan akhiran satuan huruf besar.
    Sufiks Unit: K untuk Kilobyte; M untuk Megabyte; Tidak jelas apakah Gigabyte didukung.
    Tambahan:
    1. hindari penyumbatan koneksi internet.
    2. membantu ketika mengelola kecepatan unduhan beberapa contoh ytdl bersamaan.
    Ommission:
    1. menyumbat internet; tidak dapat menelusuri, memperlambat pemutaran video youtube.
    2. akan mengunduh video secepat mungkin.
    Catatan: Anda dapat menjalankan beberapa instance youtube-dl secara bersamaan.

  • --retries '5'digunakan untuk mencoba kembali unduhan video secara otomatis jika gagal. Berguna saat mengunduh daftar putar atau seluruh saluran (yang, dalam istilah Youtube, juga daftar putar (dari saluran tertentu)).
    Nilai: Pilih bilangan bulat positif. Defaultnya adalah 10. Maks adalah infinite(masukkan sebagai string literal).

  • --continue
    Argumen: tidak ada
    Penambahan:
    1. akan memaksa melanjutkan downalod file parsial
    Catatan: ytdl mengunduh video dalam potongan; potongan dipertahankan jika ytdl tiba-tiba berakhir saat mengunduh.
    Ommission:
    1. Secara default ytdl akan melanjutkan unduhan, jika memungkinkan.

  • --no-overwrites
    Argumen: tidak ada
    Penambahan: tidak akan menimpa file metadata yang ada dengan nama yang sama.
    Ommission: akan menimpa file metadata yang ada dengan nama yang sama, tetapi bukan file video.

    • --call-home digunakan untuk menghubungi server ytdl untuk debugging.

      "Jika server Anda memiliki beberapa IP atau Anda mencurigai sensor, menambahkan --call-home mungkin ide yang bagus untuk mendapatkan lebih banyak diagnostik." - Documents: Bug , diambil 20180408,

  • --write-info-json
    Argumen: tidak ada
    Format Output: json;
    Konten Informasi: jumlah tayangan, suka, tanggal unggah, informasi kualitas video dan audio, dll. (Tetapi bukan deskripsi teks video (diposting di bawah video oleh pengunggah (tata letak youtube 2018)))
    Penambahan: menulis metadata video ke dalam .info.jsonfile terpisah . Disimpan dalam folder yang sama dengan file video.
    Ommission: tidak mempengaruhi --add-metadatayang masih akan menulis metadata video ke file output video.

  • --write-description
    Argumen: tidak ada
    Format Output: teks biasa;
    Tambahan: menulis teks yang diposting oleh pengunggah video di bagian deskripsi video (di bawah video (tata letak youtube 2018)) ke dalam Write .descriptionfile terpisah . Disimpan dalam folder yang sama dengan file video.

  • --write-thumbnailmenulis thumbnail resolusi tertinggi yang tersedia (disebut maxresdefault.jpgoleh youtube) ke .jpgfile. Mengganti nama sesuai dengan templat yang ditentukan dengan --output. Disimpan dalam direktori yang sama dengan file video.
    Argumen: tidak ada
    Format Output: hanya JPEG;
    Catatan: Gunakan youtube-dl --list-thumbnails '<video_url>'untuk menyelidiki thumbnail yang tersedia dari video tertentu (tidak berfungsi pada tautan daftar putar); Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsmenulis anotasi video ke .annotations.xmlfile. Mengganti nama sesuai dengan templat yang ditentukan dengan --output. Disimpan dalam direktori yang sama dengan file video.
    Argumen: tidak ada
    Format Output: .xml;

  • --all-subsmenulis semua kustom dibuat sub judul tersedia untuk video ke file mereka masing-masing (ex .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Argumen: none
    Format Output: default .vtt; dapat menentukan format lain dengan --sub-format
    Pesan Kesalahan: Jika tidak ada terjemahan, pesan PERINGATAN akan dicetak ke stdout - format:WARNING: video doesn't have subtitles

Perintah yang Berguna:

Catatan: Gunakan youtube-dl --list-subs '<video_url>'untuk menyelidiki thumbnail yang tersedia dari video tertentu (tidak berfungsi pada tautan daftar putar);
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argumen: String: format ekstensi ass, srt atau
    Format Output terbaik : Default .vtt; atau sesuai dengan Spesifikasi
    tambahan: menulis subtitle ke format file yang ditentukan (mis .:) .srt. Disimpan dalam folder yang sama dengan file video.
    Ommission: subtitle akan ditulis sebagai .vtt
    Pesan Kesalahan: Jika tidak ada subtitle yang tersedia, pesan INFO akan dicetak ke stdout - format: [ffmpeg] There aren't any subtitles to convert
    Catatan: konversi akan dieksekusi sebagai langkah pasca-pemrosesan pada .vttfile setelah diunduh. Jika eksekusi ytdl dihentikan secara tak terduga beberapa file subtitle mungkin tidak dikonversi (dalam hal ini jalankan perintah lagi).

  • --add-metadata
    Argumen: tidak ada
    Perilaku: menulis metadata ke file output video.
    Catatan: tidak memerlukan yang .info.jsondihasilkan oleh--write-info-json

  • --embed-subs
    Argumen: tidak ada
    Perilaku:
    1. menulis subtitle ke file output video;
    2. hanya untuk video mp4, webm, dan mkv.
    Pesan Kesalahan: Jika tidak ada terjemahan, pesan INFO akan dicetak ke stdout - format: [ffmpeg] There aren't any subtitles to embed
    Catatan: tidak memerlukan yang .vttdihasilkan oleh --write-sub, --write-auto-subatau--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Perilaku: digunakan untuk membuat file teks yang berisi tautan dari video yang sebelumnya diunduh. Mengizinkan untuk melewatkan video ini saat mengunduh seluruh saluran. Tidak perlu saat mengunduh satu video saja.
    Argumen: String: gabungan jalur ke arsip video Anda, direktori dinamai saluran. Nama file terdiri dari nama saluran dengan .ytdlarchiveekstensi file. (bisa juga .txt; tetapi format unik memungkinkan diferensiasi yang mudah)
    Format Output: teks biasa; satu videoID per baris
    Penambahan:
    1. ytdl membaca file ini, mengabaikan dan melewatkan semua video yang terdaftar dengan videoID mereka di dalamnya, bahkan jika belum diunduh.
    2. secara otomatis menambahkan videoID dari video yang terakhir diunduh ke file ini
    Ommission: jika file video dan file metadata ada, ytdl akan mengunduhnya lagi.

  • --format ''
    Argumen: Recommended String: bestvideo+bestaudio/bestuntuk memastikan kombinasi kualitas video dan audio tertinggi.
    Tambahan: kontrol penuh atas kualitas video dan kualitas audio dan kombinasinya, serta kualitas fallback
    Ommission: Default youtube-dl will guess it for you by default- Documents
    Catatan: Lihat Documents: Contoh Pemilihan Format

  • --merge-output-format '<video_format>'
    Argumen: format file video. (mis .: mp4, mkv, 3gp, dll.)
    Penambahan: dapat menentukan format file video
    Ommission: Default youtube-dl will guess it for you by default- Documents
    Catatan: Lihat Documents: Pilihan Format

Perintah yang Berguna:

Catatan: Gunakan youtube-dl --list-formats '<video_url>'untuk menyelidiki kualitas video dan audio yang tersedia dan format video tertentu (tidak berfungsi pada tautan daftar putar);
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argumen:
    1. format file video. (mis .: mp4, mkv, 3gp, dll.);
    2. Disarankan: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Penambahan: memengaruhi konvensi penamaan file untuk file video dan semua file metadata
    Ommission: Secara default judul video akan menjadi nama file. Template default: %(id)s.%(ext)sakan menampilkan ex .: testvideo.mkv
    Catatan: Jangan lupa %awalan dan ssufiks (suffes lain juga ada.); Engkau _antara elemen template hanya pemisah dan bisa berupa karakter lain. ex .: %(upload_date)s-%(id)s
    Catatan: Lihat Documents: Output Template

  • '<video_url>'
    Argumen: String: url ke video tertentu
    Pesan Kesalahan:
    1. Jika tidak ada url video yang dikirimkan, ytdl tidak akan menjalankan dan menampilkan bantuan.
    2. Jika url video tidak valid yang dikirim pesan ERROR akan dicetak ke stdout - format:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Rekomendasi Penyimpanan:

  1. buat miscdirektori di arsip video Anda dan simpan semua video di sana.

  2. ketika Anda mengunduh satu atau lebih video dari saluran, buat direktori khusus untuk saluran itu. Dalam hal ini, nama salurannya TED Archivedan nama direktori akan seperti itu TED_Archive. (Saya terlebih dahulu mengganti semua karakter spasi dengan garis bawah untuk navigasi direktori yang lebih mudah dan tindakan I / O file saat menggunakan skrip bash (atau python)).


Menanggapi komentar Anda @leetbacoon

Dan hanya ingin tahu, mengapa salinan 1080p dianggap yang terbaik jika 1440p tersedia? Dan mengapa 2160p ditampilkan? Pilihan itu tidak muncul di ujung saya (ini tutup pada 1440p) - leetbacoon

Dari Documents
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

Saya pikir ketika Anda memilih adil bestdan Anda menentukan format output youtube mengirimkan format yang dianggapnya adalah kombo video + audio terbaik untuk format itu. Ini mungkin tunduk pada beberapa keputusan penyeimbangan internal youtube (spekulasi).


Dalam pengalaman penggunaan saya, saya harus secara khusus menentukan bestvideo+bestaudiountuk mendapatkan kualitas TERTINGGI dari video dan audio masing-masing dan kemudian menggabungkannya dalam wadah .mkv.


Saya menggunakan /bestargumen fallback hanya untuk memastikan.


Memimpikan Cortana
sumber