Téléchargez tout à partir d'une vidéo YouTube en utilisant youtube-dl

16

Je veux tout télécharger (sous-titres, cartes, tags, annotations, miniatures, etc. (et évidemment la vidéo avec audio)) à partir d'une vidéo YouTube (par exemple, celle-ci ).

J'utilise youtube-dlet, avec la quantité écrasante de commutateurs à utiliser, je n'arrive pas à trouver quoi que ce soit pour répondre à mes besoins. Je souhaite également télécharger la vidéo / audio dans la meilleure qualité possible, sans perte de qualité. Même si ce n'est pas YouTube, je voulais également télécharger certains de mes cours udemy que j'ai achetés afin de pouvoir les regarder pendant un long voyage.

j'ai ffmpeg installé et j'ai entendu dire que vous en avez besoin pour les téléchargements sans perte de YouTube, mais je ne sais pas comment le lier youtube-dl.

C'est ma première utilisation youtube-dl, donc toute aide est appréciée.

leetbacoon
la source

Réponses:

14

Les options pertinentes dont vous avez besoin:

# 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

Copiez cela dans votre fichier de configuration (soit /etc/youtube-dl.confou ~/.config/youtube-dl/config).

En utilisant cette configuration, j'ai téléchargé cette vidéo et youtube-dlécrit les fichiers suivants:

$ 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

Je ne peux pas poster mediainfola sortie ici car elle dépasse la limite de caractères, mais vous pouvez la voir dans github .


Je souhaite également télécharger la vidéo / audio dans la meilleure qualité possible, sans perte de qualité.

youtube-dltélécharge les vidéos avec la meilleure qualité possible par défaut, mais vous pouvez forcer ce comportement à l'aide de --format bestvideo+bestaudio/best.


Même si ce n'est pas YouTube, je voulais également télécharger certains de mes cours udemy que j'ai achetés afin de pouvoir les regarder pendant un long voyage.

Veuillez lire l'article Puis-je télécharger un cours sur mon ordinateur? :

Par défaut, les cours complets ne sont pas téléchargeables depuis un ordinateur. Nous le faisons par souci de piraterie.

Veuillez noter que vous pouvez toujours enregistrer des cours pour les consulter hors ligne sur l' application mobile Udemy . Pour plus d'informations sur la façon de télécharger des conférences vidéo sur votre appareil mobile iOS, veuillez cliquer ici . Pour savoir comment télécharger des vidéos pour les visionner hors ligne sur un appareil Android, cliquez ici .


J'aiffmpeg installé et j'ai entendu dire que vous en avez besoin pour les téléchargements sans perte de YouTube, mais je ne sais pas comment le lier youtube-dl.

youtube-dlutilise avconvpar défaut, mais --prefer-ffmpeglaissez-le utiliser à la ffmpegplace. Quoi qu'il en soit, cette option n'est pas nécessaire pour les " téléchargements sans perte ". Dans l'exemple que j'ai fourni, youtube-dlutilisé uniquement ffmpegpour fusionner tous les formats téléchargés dans un seul fichier mkv.

nxnev
la source
Cela va-t-il intégrer les informations de YouTube dans la vidéo? Je ne veux pas exactement ça, je veux juste le télécharger, mais gardez tout cela dans des fichiers séparés, un peu comme à quoi ça ressemble :)
leetbacoon
Et .mkv est-il le conteneur par défaut pour les vidéos sans perte youtube-dl?
leetbacoon le
Oh, et comment avez-vous téléchargé la vidéo? youtube-dl [youtube-link]?
leetbacoon
1
@leetbacoon je vois. J'ajouterai un rapport de bug.
nxnev
1
@leetbacoon Retour quand j'ai écrit cette réponse, c'était le contraire, youtube-dln'aurait pas pu télécharger certaines vidéos si l' --youtube-skip-dash-manifestoption n'était pas présente. Je viens de modifier cette option, merci de me l'avoir dit.
nxnev
6

Pour télécharger simplement la vidéo, vous pouvez utiliser ceci:

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

Pour sélectionner la qualité vidéo, vous devez d'abord utiliser l'option -F pour répertorier les formats disponibles.

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

Et voici la sortie de votre vidéo:

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

Voici quelques options utiles pour les sous-titres:

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

Et pour les vignettes:

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

Vous pouvez également trouver plus d'informations sur la qualité de la vidéo ici

Mojtaba Zali
la source
4
Qu'espérez-vous réaliser avec la sélection manuelle du format? youtube-dlutilise les meilleurs formats vidéo et audio disponibles par défaut. Si vous souhaitez remplacer un paramètre différent dans le fichier de configuration, vous pouvez utiliser -f bestvideo+bestaudio/best(qui est identique à la valeur par défaut) ou ignorer le fichier de configuration ( --ignore-config).
David Foerster
Ne me citez pas à ce sujet, mais je pensais avoir lu plus tôt que pour obtenir une vidéo sans perte avec audio, vous utilisez simplementyoutube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon
Et je me demande simplement pourquoi une copie 1080p est considérée comme la meilleure si 1440p est disponible? Et pourquoi le 2160p s'affiche-t-il? Cette option n'apparaît pas de mon côté (elle plafonne à 1440p)
leetbacoon
3

@leetbacoon voir la réponse au commentaire tout en bas. (basse répétition encore sry)

Remarque: j'utiliserai les noms de commutateur plus longs pour éviter toute confusion. De nombreux commutateurs utilisés ont des versions plus courtes. Voir Docs: Options .

Remarque: - pour plus de commodité visuelle \est utilisé pour afficher les commutateurs séparément; tout \peut être omis; si vous utilisez, \assurez-vous qu'il n'y a pas de caractère espace après \.


Synopsis: Une commande ytdl pour télécharger un seul fichier vidéo de la plus haute qualité vidéo et audio disponible. Enregistre la vidéo dans son propre répertoire (spécifié par vous). Télécharge toutes les métadonnées disponibles, les écrit dans des formats de fichiers respectifs et les enregistre dans le même répertoire. Ajoute des métadonnées vidéo au fichier de sortie vidéo.

Remplacez par le vôtre:

  • remplacer /archive/videos/TED_Archive/dans les commutateurs--download-archive et --outputpar un chemin de répertoire de votre choix.
  • exemple de chemin de stockage / archive / vidéos
  • exemple de lien vidéo: https://www.youtube.com/watch?v=0bFs6ZiynSU
  • exemple de répertoire de canaux / 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' ;

Remarque: joignez tous les arguments avec ' 'pour la sécurité de l'analyse.

Explication des commutateurs recommandés:

  • --limit-rate '0.25M'est utilisé pour limiter la vitesse de téléchargement maximale disponible de chaque instance youtube-dl en B / s (octets par seconde).
    Arguments: tout entier positif avec un suffixe d'unité en majuscule.
    Suffixes d'unité: K pour Kilobyte; M pour Megabyte; Ne sait pas si Gigabyte est pris en charge.
    Addition:
    1. éviter le blocage de la connexion Internet.
    2. utile lors de la gestion des vitesses de téléchargement de plusieurs instances ytdl simultanées.
    Ommission:
    1. obstrue Internet; impossible de naviguer, lecture vidéo YouTube en retard.
    2. téléchargera la vidéo le plus rapidement possible.
    Remarque: Vous pouvez exécuter plusieurs instances youtube-dl simultanément.

  • --retries '5'est utilisé pour réessayer automatiquement le téléchargement d'une vidéo en cas d'échec. Utile lors du téléchargement d'une playlist ou d'une chaîne entière (qui est, en termes Youtube, également une playlist (de cette chaîne spécifique)).
    Valeurs: choisissez un entier positif. La valeur par défaut est 10. Max est infinite(entrez comme chaîne littérale).

  • --continue
    Arguments: aucun
    Addition:
    1. forcera la reprise du downalod des fichiers partiels
    Remarque: ytdl télécharge les vidéos en morceaux; les morceaux sont conservés si ytdl se termine de façon inattendue pendant le téléchargement.
    Ommission:
    1. Par défaut, ytdl reprendra les téléchargements, si possible.

  • --no-overwrites
    Arguments: aucun
    Addition: ne pas écraser les fichiers existants métadonnées avec des noms identiques.
    Ommission: remplacera les fichiers de métadonnées existants avec les mêmes noms, mais pas le fichier vidéo.

    • --call-home utilisé pour contacter le serveur ytdl pour le débogage.

      "Si votre serveur possède plusieurs IP ou si vous suspectez une censure, l'ajout de --call-home peut être une bonne idée pour obtenir plus de diagnostics." - Docs: Bugs , récupéré 20180408,

  • --write-info-json
    Arguments: aucun
    Format de sortie: json;
    Contenu de l'information: nombre de vues, likes, date de téléchargement, informations sur la qualité vidéo et audio, etc. (mais pas la description textuelle de la vidéo (publiée sous la vidéo par le téléchargeur (mise en page YouTube 2018))))
    Addition: écrit les métadonnées vidéo dans un .info.jsonfichier séparé . Enregistré dans le même dossier que le fichier vidéo.
    Ommission: n'affecte pas --add-metadataqui écrira toujours les métadonnées vidéo dans le fichier de sortie vidéo.

  • --write-description
    Arguments: aucun
    Format de sortie: texte brut;
    Ajout: écrit le texte publié par le téléchargeur de vidéos dans la section de description d'une vidéo (sous la vidéo (mise en page YouTube 2018)) dans un Write .descriptionfichier séparé . Enregistré dans le même dossier que le fichier vidéo.

  • --write-thumbnailécrit la miniature la plus haute résolution disponible (appelée maxresdefault.jpgpar youtube) dans un .jpgfichier. Renommé selon le modèle spécifié avec --output. Enregistré dans le même répertoire que le fichier vidéo.
    Arguments: aucun
    Format de sortie: uniquement JPEG;
    Remarque: Utilisez youtube-dl --list-thumbnails '<video_url>'pour rechercher les miniatures disponibles d'une vidéo spécifique (ne fonctionne pas sur les liens de playlist); Ex.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotationsécrit des annotations vidéo dans un .annotations.xmlfichier. Renommé selon le modèle spécifié avec --output. Enregistré dans le même répertoire que le fichier vidéo.
    Arguments: aucun
    Format de sortie: .xml;

  • --all-subsécrit toutes les sous - titres disponibles sur mesure créé pour une vidéo à leurs fichiers respectifs (ex .: subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    Arguments: aucun
    Format de sortie: défaut .vtt; peut spécifier d'autres formats avec des --sub-format
    messages d'erreur: S'il n'y a pas de sous-titres disponibles, un message AVERTISSEMENT sera imprimé au format stdout:WARNING: video doesn't have subtitles

Commande utile:

Remarque: Utilisez youtube-dl --list-subs '<video_url>'pour rechercher les miniatures disponibles d'une vidéo spécifique (ne fonctionne pas sur les liens de playlist);
Ex.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    Arguments: chaîne: format extension ass, srt ou meilleur
    format de sortie: par défaut .vtt; ou selon la spécification
    Addition: écrit les sous-titres dans le format de fichier spécifié (ex. .srt). Enregistré dans le même dossier que le fichier vidéo.
    Ommission: les sous-titres seront écrits sous forme de .vtt
    messages d'erreur: s'il n'y a pas de sous-titres disponibles, un message INFO sera imprimé au format stdout: [ffmpeg] There aren't any subtitles to convert
    Remarque: la conversion sera exécutée comme une étape de post-traitement sur le .vttfichier après le téléchargement. Si l'exécution de ytdl se termine de manière inattendue, certains fichiers de sous-titres risquent de ne pas être convertis (dans ce cas, exécutez à nouveau la commande).

  • --add-metadata
    Arguments: aucun
    Comportement: écrit les métadonnées dans le fichier de sortie vidéo.
    Remarque: ne nécessite pas un .info.jsongénéré par--write-info-json

  • --embed-subs
    Arguments: aucun
    Comportement:
    1. écrit les sous-titres dans le fichier de sortie vidéo;
    2. uniquement pour mp4, WebM et vidéos mkv
    Messages d' erreur: S'il n'y a pas des sous - titres disponibles un message INFO sera imprimé à stdout - Format: [ffmpeg] There aren't any subtitles to embed
    Remarque: ne nécessite pas un .vttproduit par --write-sub, --write-auto-subou--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Comportement: permet de créer un fichier texte contenant des liens de vidéos téléchargées précédemment. Permet de sauter ces vidéos lors du téléchargement d'une chaîne entière. Pas nécessaire lors du téléchargement de vidéos individuelles uniquement.
    Arguments: String: composite du chemin d'accès à votre archive vidéo, répertoire nommé d'après le canal. Le nom de fichier se compose du nom du canal avec l' .ytdlarchiveextension de fichier. (pourrait également être .txt; mais le format unique permet une différenciation facile)
    Format de sortie: texte brut; un ID vidéo par ligne
    Addition:
    1. ytdl lit ce fichier, ignore et ignore toutes les vidéos répertoriées avec leur ID vidéo, même si elles n'ont pas encore été téléchargées.
    2. ajoute automatiquement l'ID vidéo de la dernière vidéo téléchargée à ce fichier
    Ommission: si un fichier vidéo et des fichiers de métadonnées existent, ytdl les téléchargera à nouveau.

  • --format ''
    Arguments: Chaîne recommandée: bestvideo+bestaudio/bestpour garantir la meilleure combinaison de qualité vidéo et audio.
    Addition: contrôle total sur la qualité vidéo et la qualité audio et leurs combinaisons, ainsi que sur les qualités de repli
    Ommission: Par défaut youtube-dl will guess it for you by default- Docs
    Remarque: Voir Docs: Exemples de sélection de format

  • --merge-output-format '<video_format>'
    Arguments: format de fichier vidéo. (ex.: mp4, mkv, 3gp, etc.)
    Addition: peut spécifier le format de fichier vidéo
    Ommission: Par défaut youtube-dl will guess it for you by default- Docs
    Remarque: Voir Docs: Sélection du format

Commande utile:

Remarque: Utilisez cette option youtube-dl --list-formats '<video_url>'pour rechercher les qualités et formats vidéo et audio disponibles d'une vidéo spécifique (ne fonctionne pas sur les liens de playlist);
Ex.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    Arguments:
    1. format de fichier vidéo. (ex.: mp4, mkv, 3gp, etc.);
    2. Recommandé: %(upload_date)s_%(id)s_%(title)s.%(ext)s
    Addition: influence la convention de dénomination des fichiers pour les fichiers vidéo et tous les fichiers de métadonnées
    Ommission: Par défaut, le titre de la vidéo sera le nom du fichier. Modèle par défaut: %(id)s.%(ext)saffichera ex.: testvideo.mkv
    Remarque: N'oubliez pas le %préfixe et le ssuffixe (d'autres suffixes existent également.); Les _éléments du modèle ne sont qu'un séparateur et peuvent être n'importe quel autre caractère. ex.: %(upload_date)s-%(id)s
    Remarque: voir la documentation: modèle de sortie

  • '<video_url>'
    Arguments: Chaîne: URL vers une vidéo spécifique
    Message d'erreur:
    1. Si aucune URL vidéo soumise, ytdl ne s'exécutera pas et n'affichera pas d'aide.
    2. Si une URL vidéo non valide soumise, le message ERREUR sera imprimé sur stdout - format:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


Recommandations de stockage:

  1. créer un miscrépertoire dans vos archives vidéo et y stocker toutes les vidéos individuelles.

  2. lorsque vous téléchargez une ou plusieurs vidéos d'une chaîne, créez un répertoire dédié pour cette chaîne. Dans ce cas, le nom du canal est TED Archiveet le nom du répertoire sera TED_Archive. (Je remplace de manière préventive tous les caractères d'espace par des traits de soulignement pour faciliter la navigation dans les répertoires et les actions d'E / S de fichiers lors de l'utilisation de scripts bash (ou python)).


Répondre à votre commentaire @leetbacoon

Et je me demande simplement pourquoi une copie 1080p est considérée comme la meilleure si 1440p est disponible? Et pourquoi le 2160p s'affiche-t-il? Cette option n'apparaît pas de mon côté (elle plafonne à 1440p) - Leetbacoon

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

Je pense que lorsque vous sélectionnez juste bestet que vous spécifiez un format de sortie, YouTube envoie le format qu'il pense être le meilleur combo vidéo + audio pour ce format. Cela peut être soumis à certaines décisions d'équilibrage internes à YouTube (spéculation).


Dans mon expérience d'utilisation, j'ai dû spécifier spécifiquement bestvideo+bestaudiopour obtenir la meilleure qualité disponible de vidéo et audio respectivement, puis les combiner dans un conteneur .mkv.


J'utilise /bestcomme argument de secours juste pour être sûr.


Rêver de Cortana
la source