Scarica tutto da un video di YouTube usando youtube-dl


16

Voglio scaricare tutto (sottotitoli, schede, tag, annotazioni, miniature, ecc. (E ovviamente il video con audio)) da un video di YouTube (ad esempio, questo ).

Sto usando youtube-dle, con l'enorme quantità di interruttori da utilizzare, non riesco a trovare nulla adatto alle mie esigenze. Voglio anche scaricare il video / audio nella massima qualità possibile, senza perdita di qualità. Anche se non è YouTube, volevo anche scaricare alcuni dei miei corsi udemy che ho acquistato in modo da poterli guardare mentre sono in viaggio.

Ho ffmpeginstallato e ho sentito che hai bisogno di questo per i download senza perdita di dati da YouTube, ma non sono sicuro di come collegarlo youtube-dl.

Questa è la prima volta che utilizzo youtube-dl, quindi ogni aiuto è apprezzato.

Risposte:


14

Le opzioni pertinenti di cui hai bisogno:

# 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

Copialo nel tuo file di configurazione (o /etc/youtube-dl.confo ~/.config/youtube-dl/config).

Usando quella configurazione, ho scaricato questo video e ho youtube-dlscritto i seguenti file:

$ 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

Non posso pubblicare mediainfol'output qui perché supera il limite di caratteri, ma puoi vederlo in github .


Voglio anche scaricare il video / audio nella massima qualità possibile, senza perdita di qualità.

youtube-dlscarica video con la massima qualità possibile per impostazione predefinita, ma puoi forzare questo comportamento utilizzando --format bestvideo+bestaudio/best.


Anche se non è YouTube, volevo anche scaricare alcuni dei miei corsi udemy che ho acquistato in modo da poterli guardare mentre sono in viaggio.

Leggi l'articolo Posso scaricare un corso sul mio computer? :

Per impostazione predefinita, i corsi completi non sono scaricabili da un computer. Lo facciamo per motivi di pirateria.

Ricorda che puoi sempre salvare i corsi per la visualizzazione offline sull'app mobile Udemy . Per informazioni su come scaricare lezioni video sul tuo dispositivo mobile iOS, fai clic qui . Per i passaggi su come scaricare video per la visualizzazione offline su un dispositivo Android, fare clic qui .


Ho ffmpeginstallato e ho sentito che hai bisogno di questo per i download senza perdita di dati da YouTube, ma non sono sicuro di come collegarlo youtube-dl.

youtube-dlutilizza avconvper impostazione predefinita, ma --prefer-ffmpegconsente ffmpeginvece di utilizzare . Comunque, questa opzione non è necessaria per i " download senza perdita di dati ". Nell'esempio che ho fornito, youtube-dlusato solo ffmpegper unire tutti i formati scaricati in un singolo file mkv.


Ciò incorporerà le informazioni di YouTube nel video? Non lo voglio esattamente, voglio solo scaricarlo, ma tienilo tutto in file separati, un po 'come sembra :)
leetbacoon

Ed è .mkv il contenitore predefinito per i video senza perdita di dati youtube-dl?
leetbacoon,

Oh, e come hai scaricato il video? youtube-dl [youtube-link]?
leetbacoon,

1
@leetbacoon vedo. Aggiungerò una segnalazione di bug.
nxnev,

1
@leetbacoon Quando ho scritto questa risposta era il contrario, youtube-dlnon avrei potuto scaricare alcuni video se l' --youtube-skip-dash-manifestopzione non fosse presente. Ho appena modificato quell'opzione, grazie per avermelo detto.
nxnev,

6

Per scaricare semplicemente il video, puoi usare questo:

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

Per selezionare la qualità video, è necessario innanzitutto utilizzare l'opzione -F per elencare i formati disponibili.

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

E questo è l'output per il tuo video:

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

Ecco alcune utili opzioni per i sottotitoli:

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

E per le anteprime:

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

Puoi anche trovare ulteriori informazioni sulla qualità del video qui


4
Cosa speri di ottenere con la selezione manuale del formato? youtube-dlutilizza i migliori formati audio e video disponibili per impostazione predefinita. Se si desidera sovrascrivere un'impostazione diversa nel file di configurazione, è possibile utilizzare -f bestvideo+bestaudio/best(che è uguale all'impostazione predefinita) o ignorare il file di configurazione ( --ignore-config).
David Foerster,

Non citarmi su questo, ma pensavo di aver letto prima che per ottenere video senza perdita di dati con audio, basta usareyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon

E mi chiedo, perché una copia a 1080p è considerata la migliore se è disponibile 1440p? E perché viene visualizzato 2160p?
Quell'opzione

3

@leetbacoon vedi la risposta ai commenti in fondo. (basso rappresentante ancora sry)

Nota: userò i nomi degli switch più lunghi per evitare confusione. Molti degli switch utilizzati hanno versioni più brevi. Vedi Documenti: Opzioni .

Nota: - per comodità visiva \viene utilizzato per visualizzare gli interruttori separatamente; tutto \può essere omesso; se si utilizza \assicurarsi che non ci sia spazio dopo \.


Sinossi: un comando ytdl per scaricare un singolo file video con la massima qualità audio e video disponibile. Salva il video nella sua directory (specificata da te). Scarica tutti i metadati disponibili, scrive ciascuno nei rispettivi formati di file e salva nella stessa directory. Aggiunge metadati video al file di output video.

Sostituisci con il tuo:

  • sostituire /archive/videos/TED_Archive/negli switch --download-archivee --outputcon un percorso di directory a scelta.
  • esempio percorso di archiviazione / archivio / video
  • collegamento video di esempio: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • directory canale di esempio / 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' ;

Nota: racchiudere tutti gli argomenti con ' 'per l'analisi della sicurezza.

Spiegazione degli switch consigliati:

  • --limit-rate '0.25M'viene utilizzato per limitare la velocità massima di download disponibile di ogni istanza di youtube-dl in B / s (byte al secondo).
    Argomenti: qualsiasi numero intero positivo con suffisso unitario maiuscolo.
    Suffissi unitari: K per Kilobyte; M per Megabyte; Non è chiaro se Gigabyte è supportato.
    Aggiunta:
    1. evitare il blocco della connessione Internet.
    2. utile quando si gestiscono le velocità di download di più istanze ytdl simultanee.
    Ommission:
    1. intasare internet; impossibile navigare, ritardando la riproduzione del video di YouTube.
    2. scaricherà il video il più velocemente possibile.
    Nota: è possibile eseguire più istanze youtube-dl contemporaneamente.

  • --retries '5'viene utilizzato per riprovare automaticamente il download di un video in caso di errore. Utile quando si scarica una playlist o un intero canale (che è, in termini di Youtube, anche una playlist (di quel canale specifico)).
    Valori: scegli un numero intero positivo. L'impostazione predefinita è 10. Max è infinite(inserisci come stringa letterale).

  • --continue
    Argomenti: nessuno
    Aggiunta:
    1. forzerà la ripresa del downalod di file parziali
    Nota: ytdl scarica i video in blocchi; i blocchi vengono conservati se ytdl termina inaspettatamente durante il download.
    Ommission:
    1. Per impostazione predefinita, ytdl riprenderà i download, se possibile.

  • --no-overwrites
    Argomenti: nessuno
    Addition: saranno non sovrascrittura esistente file di metadati con gli stessi nomi.
    Ommission: sovrascriverà i file di metadati esistenti con gli stessi nomi, ma non il file video.

    • --call-home utilizzato per contattare il server ytdl per il debug.

      "Se il tuo server ha più IP o sospetti la censura, aggiungere --call-home potrebbe essere una buona idea per ottenere più diagnostica." - Documenti: bug , recuperati 20180408,

  • --write-info-json
    Argomenti: nessuno
    Formato di output: json;
    Contenuto delle informazioni: numero di visualizzazioni, Mi piace, data di caricamento, informazioni sulla qualità audio e video, ecc. (Ma non descrizione del testo del video (pubblicato sotto il video dall'autore del caricamento (layout di YouTube 2018)))
    Aggiunta: scrive i metadati del video in un .info.jsonfile separato . Salvato nella stessa cartella del file video.
    Ommissione: non influisce sulla --add-metadatascrittura dei metadati video nel file di output video.

  • --write-description
    Argomenti: nessuno
    Formato di output: testo normale;
    Aggiunta: scrive il testo pubblicato dall'autore del caricamento video nella sezione di descrizione di un video (sotto il video (layout di YouTube 2018)) in un Write .descriptionfile separato . Salvato nella stessa cartella del file video.

  • --write-thumbnailscrive l'anteprima della massima risoluzione disponibile (chiamata maxresdefault.jpgda YouTube) sul .jpgfile. Rinominato in base al modello specificato con --output. Salvato nella stessa directory del file video.
    Argomenti: nessuno
    Formato di output: solo JPEG;
    Nota: utilizzare youtube-dl --list-thumbnails '<video_url>'per esaminare le miniature disponibili di un video specifico (non funziona sui collegamenti alle playlist); Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsscrive annotazioni video su .annotations.xmlfile. Rinominato in base al modello specificato con --output. Salvato nella stessa directory del file video.
    Argomenti: nessuno
    Formato di output: .xml;

  • --all-subsscrive tutti i sottotitoli disponibili personalizzati creati per un video ai loro rispettivi file (es .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Argomenti: nessuno
    Formato di visualizzazione: default .vtt; può specificare altri formati con --sub-format
    Messaggi di errore: se non ci sono sottotitoli disponibili, un messaggio di AVVISO verrà stampato in formato stdout:WARNING: video doesn't have subtitles

Comando utile:

Nota: utilizzare youtube-dl --list-subs '<video_url>'per esaminare le miniature disponibili di un video specifico (non funziona sui collegamenti alle playlist);
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Argomenti: String: formato estensione ass, srt o miglior
    formato di output: predefinito .vtt; o in base alle specifiche
    Aggiunta: scrive i sottotitoli nel formato file specificato (es .:) .srt. Salvato nella stessa cartella del file video.
    Ommissione: i sottotitoli verranno scritti come .vtt
    Messaggi di errore: se non ci sono sottotitoli disponibili, un messaggio INFO verrà stampato su stdout - formato: [ffmpeg] There aren't any subtitles to convert
    Nota: la conversione verrà eseguita come fase di post-elaborazione sul .vttfile dopo il download. Se l'esecuzione di ytdl viene interrotta in modo imprevisto, alcuni file di sottotitoli potrebbero non essere convertiti (in questo caso eseguire nuovamente il comando).

  • --add-metadata
    Argomenti: nessuno
    Comportamento: scrive i metadati nel file di output video.
    Nota: non richiede un .info.jsongenerato da--write-info-json

  • --embed-subs
    Argomenti: nessuno
    Comportamento:
    1. scrive i sottotitoli nel file di output video;
    2. solo per video mp4, webm e mkv
    Messaggi di errore: se non ci sono sottotitoli disponibili, un messaggio INFO verrà stampato in formato stdout: [ffmpeg] There aren't any subtitles to embed
    Nota: non richiede un .vttgenerato da --write-sub, --write-auto-subo--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Comportamento: viene utilizzato per creare un file di testo contenente collegamenti a video precedentemente scaricati. Consente di saltare questi video durante il download di un intero canale. Non necessario quando si scaricano solo video singoli.
    Argomenti: String: composito del percorso dell'archivio video, directory denominata dopo il canale. Il nome del file è costituito dal nome del canale con .ytdlarchiveestensione del file. (potrebbe anche essere .txt; ma il formato univoco consente una facile differenziazione)
    Formato di output: testo semplice; un videoID per riga
    Aggiunta:
    1. ytdl legge questo file, ignora e salta tutti i video elencati con il loro ID video, anche se non ancora scaricato.
    2. aggiunge automaticamente l'ID video dell'ultimo video scaricato a questo file
    Ommission: se esistono file video e metadati, ytdl li scaricherà di nuovo.

  • --format ''
    Argomenti: stringa consigliata: bestvideo+bestaudio/bestper garantire la massima combinazione di qualità audio e video.
    Aggiunta: pieno controllo della qualità video e della qualità audio e delle loro combinazioni, nonché qualità di fallback
    Ommissione: impostazione predefinita youtube-dl will guess it for you by default- Documenti
    Nota: vedere Documenti: Esempi di selezione del formato

  • --merge-output-format '<video_format>'
    Argomenti: formato file video. (es .: mp4, mkv, 3gp, ecc.)
    Aggiunta: può specificare il formato del file video
    Ommission: Predefinito youtube-dl will guess it for you by default- Documenti
    Nota: Vedi Documenti: Selezione formato

Comando utile:

Nota: utilizzare youtube-dl --list-formats '<video_url>'per esaminare le qualità e i formati audio e video disponibili di un video specifico (non funziona sui collegamenti alle playlist);
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Argomenti:
    1. formato file video. (es .: mp4, mkv, 3gp, ecc.);
    2. Consigliato: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    aggiunta: influenza la convenzione di denominazione dei file per i file video e tutti i file di metadati
    Ommissione: per impostazione predefinita, il titolo del video sarà il nome del file. Modello predefinito: %(id)s.%(ext)sverrà generato es . testvideo.mkv
    : Nota: non dimenticare il %prefisso e il ssuffisso (esistono anche altri suffissi.); Te _tra elementi del modello è solo un separatore e può essere qualsiasi altro carattere. es . %(upload_date)s-%(id)s
    : Nota: consultare Documenti: modello di output

  • '<video_url>'
    Argomenti: String: url a video specifico
    Messaggio di errore:
    1. Se nessun url video inviato, ytdl non verrà eseguito e verrà visualizzata la guida.
    2. Se l'URL del video non valido inviato, il messaggio ERRORE verrà stampato su stdout - formato:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Consigli per lo stoccaggio:

  1. crea una miscdirectory nel tuo archivio video e archivia tutti i singoli video.

  2. quando scarichi uno o più video da un canale crea una directory dedicata per quel canale. In questo caso, il nome del canale è TED Archivee il nome della directory sarà TED_Archive. (Sostituisco preventivamente tutti i caratteri dello spazio con caratteri di sottolineatura per facilitare la navigazione nella directory e le azioni di I / O dei file quando utilizzo gli script bash (o python)).


In risposta al tuo commento @leetbacoon

E mi chiedo, perché una copia a 1080p è considerata la migliore se è disponibile 1440p? E perché viene visualizzato 2160p? Quell'opzione non appare dalla mia parte (si attesta a 1440p) - leetbacoon

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

Penso che quando selezioni giusto beste specifichi un formato di output, YouTube invia il formato che ritiene sia la migliore combinazione video + audio per quel formato. Questo potrebbe essere soggetto ad alcune decisioni di bilanciamento interno di YouTube (speculazione).


Nella mia esperienza di utilizzo, ho dovuto specificare specificatamente bestvideo+bestaudioper ottenere rispettivamente la MASSIMA qualità disponibile di video e audio e poi combinarli in un contenitore .mkv.


Uso /bestcome argomento di fallback solo per essere sicuro.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.