youtube-dl: télécharger les vidéos Youtube

Pour lire des vidéos Youtube, il existe une solution simple, aller sur youtube.com se taper la pub, les commentaires nauséabonds et les recommandations douteuses ou se la jouer ninja en téléchargeant directement la vidéo.

Le streaming, c'est pratique mais ça ne permet pas de lire en étant hors ligne et pas de possibilité d'archiver ni de partager des vidéos. C'est le cas pour tous les autres sites de streaming, mais ça tombe bien parce que youtube-dl gère de très nombreux sites (comme son nom ne l'indique pas).

C'est un couteau suisse, en ligne de commande, qui risque de rebuter quelques-uns mais qui est un incontournable. L'essayer c'est l'adopter en plus on va tout détailler pour que vous puissiez l'utiliser sans difficultés.

[sommaire ordre="ol" type="1"]
  • Installation
  • Utilisation
  • [somOl type="disc"]
  • Télécharger une vidéo
  • Télécharger une vidéo (méthode avancée)
  • Télécharger les sous-titre de la vidéo
  • Télécharger une playlist
  • Télécharger plusieurs vidéos
  • Définir le nom du fichier de sortie
  • Récupérer le lien de la vidéo
  • Divers
  • [/somOl]
  • Conclusion
  • Ressources
  • [/sommaire]

    Installation

    Je préfère installer le paquet youtube-dl depuis les dépôts Debian par fainéantise. Tant que ça marche, je ne m'aventure pas à installer la dernière version.

    Installer depuis les dépôts

    On installe avec notre gestionnaire de paquet préféré:

    [codeRoot]apt install youtube-dl[/codeRoot]

    Installer la dernière version

    La procédure d'installation simplifiée:

    [codeRoot]curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl chmod a+rx /usr/local/bin/youtube-dl[/codeRoot]

    mais je vous recommande de lire la documentation: http://rg3.github.io/youtube-dl/download.html

    Vérifier la version utilisée

    Pour voir quelle version vous utilisez:

    [codeUser]youtube-dl --version[/codeUser]

    Si vous rencontrez des difficultés, cela peut venir d'une version trop ancienne ou d'un site qui n'est pas/plus géré. Cette information vous sera utile à ce moment.

    Utilisation

    On décide de télécharger la vidéo: "Alladech - Shaïning - Les Kassos #41" https://www.youtube.com/watch?v=7iMr0DzAXaQ
    Si vous ne connaissez pas Les Kassos, il n'est pas trop tard.

    Télécharger une vidéo

    La solution la plus facile pour télécharger une vidéo:

    [codeUser]youtube-dl https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]

    Le problème avec cette commande, c'est qu'on ne choisit pas grand chose. Dans ce cas, j'ai téléchargé la vidéo en 1080p (c'est pas toujours utile) et si vous n'avez pas beaucoup de place ni de bande passante ça va être pénible.

    La solution, c'est de choisir quel format télécharger.

    Télécharger une vidéo (méthode avancée)

    D'abord, on va voir qu'elles sont les formats et les qualités disponibles:

    [codeUser]youtube-dl -F https://www.youtube.com/watch?v=7iMr0DzAXaQ [youtube] 7iMr0DzAXaQ: Downloading webpage [youtube] 7iMr0DzAXaQ: Downloading video info webpage [youtube] 7iMr0DzAXaQ: Extracting video information WARNING: unable to extract uploader nickname [youtube] 7iMr0DzAXaQ: Downloading MPD manifest [info] Available formats for 7iMr0DzAXaQ: format code extension resolution note 139 m4a audio only DASH audio 48k , m4a_dash container, mp4a.40.5@ 48k (22050Hz), 526.91KiB 249 webm audio only DASH audio 57k , opus @ 50k, 569.12KiB 250 webm audio only DASH audio 71k , opus @ 70k, 708.14KiB 171 webm audio only DASH audio 108k , vorbis@128k, 1.07MiB 251 webm audio only DASH audio 127k , opus @160k, 1.24MiB 140 m4a audio only DASH audio 128k , m4a_dash container, mp4a.40.2@128k (44100Hz), 1.37MiB 160 mp4 256x144 DASH video 47k , avc1.4d400c, 25fps, video only, 288.10KiB 278 webm 256x144 144p 81k , webm container, vp9, 25fps, video only, 640.82KiB 133 mp4 426x240 DASH video 98k , avc1.4d4015, 25fps, video only, 527.64KiB 242 webm 426x240 240p 154k , vp9, 25fps, video only, 999.95KiB 134 mp4 640x360 DASH video 206k , avc1.4d401e, 25fps, video only, 1.11MiB 243 webm 640x360 360p 285k , vp9, 25fps, video only, 1.82MiB 135 mp4 854x480 DASH video 370k , avc1.4d401e, 25fps, video only, 2.03MiB 244 webm 854x480 480p 477k , vp9, 25fps, video only, 3.06MiB 136 mp4 1280x720 DASH video 651k , avc1.4d401f, 25fps, video only, 3.91MiB 247 webm 1280x720 720p 1157k , vp9, 25fps, video only, 8.19MiB 137 mp4 1920x1080 DASH video 1258k , avc1.640028, 25fps, video only, 8.47MiB 248 webm 1920x1080 1080p 2373k , vp9, 25fps, video only, 21.62MiB 17 3gp 176x144 small , mp4v.20.3, mp4a.40.2@ 24k 36 3gp 320x180 small , mp4v.20.3, mp4a.40.2 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)[/codeUser]

    Cette commande ne télécharge rien.

    Télécharger une vidéo en choisissant son format

    Je décide maintenant de télécharger la vidéo dans un autre format, par exemple en .mp4 avec la résolution 640x360.

    [codeFile fichier=""]format code extension resolution note 18 mp4 640x360 medium , avc1.42001E, mp4a.40.2@ 96k[/codeFile]

    Il suffit de récupérer le code de la vidéo qui correspond et de lancer la commande:

    [codeUser]youtube-dl -f 18 https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]

    De la même manière, je peux aussi combiner le format audio et le format vidéo. Par exemple, si c'est un clip, on peut choisir une qualité audio élevée et une qualité vidéo faible.

    [codeUser]youtube-dl -f 160+140 https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]

    Télécharger les sous-titre de la vidéo

    On commence par lister les sous-titre disponible pour cette vidéo:

    [codeUser]youtube-dl --list-subs https://www.youtube.com/watch?v=7iMr0DzAXaQ ... Available subtitles for 7iMr0DzAXaQ: Language formats fr vtt, ttml be vtt, ttml it vtt, ttml es vtt, ttml en vtt, ttml ja vtt, ttml de vtt, ttml[/codeUser]

    Pour télécharger uniquement les sous-titre en français

    [codeUser]youtube-dl --write-sub --sub-lang fr --skip-download https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]
    
    

    On peut aussi récupérer les sous-titres dans plusieurs langues:

    [codeUser]youtube-dl --write-sub --sub-lang be,de,ja --skip-download https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]

    Pour télécharger la vidéo et intégrer les fichiers de sous-titre dans le fichier:

    [codeUser]youtube-dl -f 160+140 --write-sub --sub-lang fr --embed-subs https://www.youtube.com/watch?v=7iMr0DzAXaQ[/codeUser]

    Télécharger une playlist

    Je veux récupérer la saison 1 de Kassos, elle disponible sous forme de playlist ici: https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM

    Une solution simple consiste à utiliser uniquement le lien de la playlist comme on l'a fait pour une vidéo:

    [codeUser]youtube-dl https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM[/codeUser]

    Ici, on récupère toutes les vidéos de la playlist (22 vidéos au total).
    Dans le cas où je ne souhaite récupérer que les 16 épisodes (donc pas de teaser ni trailer):

    [codeUser]youtube-dl --playlist-start 1 --playlist-end 16 https://www.youtube.com/playlist?list=PLPkQoAsYuIp1HrM3LP3dkST_7YjIhvTIM[/codeUser]

    • --playlist-start : pour indiquer la première vidéo à télécharger
    • --playlist-end : pour indiquer la dernière vidéo à télécharger
    si on indique pas de numéro après --playlist-start ou --playlist-end, le téléchargement commencera par la première vidéo et se terminera à la dernière.

    Télécharger plusieurs vidéos

    Pour télécharger plusieurs vidéos (hors playlist), il est possible de faire ça grâce une seule commande.
    Dans cet exemple, on récupère un épisode de chaque saison.
    On commence par créer un fichier texte avec tous les liens des vidéos à télécharger:

    [codeFile fichier="liste.txt"]https://www.youtube.com/watch?v=43ehs06IxlA https://www.youtube.com/watch?v=pLVtpMqTUSI https://www.youtube.com/watch?v=FD3i31DGAMI[/codeFile]

    Ensuite on lance notre commande:

    [codeUser]youtube-dl -a liste.txt[/codeUser]

    C'est tout.

    Définir le nom du fichier de sortie

    Plutôt que de s’embêter à renommer les fichiers après le téléchargement, on peut indiquer dans la commande ce qui doit être mis comme nom de fichier. Ici, le titre de la vidéo et son extension:

    [codeUser]youtube-dl https://www.youtube.com/watch?v=7iMr0DzAXaQ -o "%(title)s.%(ext)s"[/codeUser]

    Pour les infos complémentaires lire la section "OUTPUT TEMPLATE" du man.

    Récupérer le lien de la vidéo

    Pour obtenir l'URL de la vidéo, et l'ouvrir en streaming dans VLC ou mplayer:

    [codeUser]youtube-dl -g -f 43 https://www.youtube.com/watch?v=Un2yBgIAxYs https://r8---sn-n4g-atok.googlevideo.com/videoplayback?ei=_oYlWtsglN1w0a6byAg&ms=au&ipbits=0&pl=23&mv=m&source=youtube&mt=1512408704&id=o-AG4rJwtEp9i5733-6z6v2NOL7b6haeaQd7QlLR--tzGg&mm=31&expire=1512430430&itag=43&sparams=clen%2Cdur%2Cei%2Cgir%2Cid%2Cinitcwndbps%2Cip%2Cipbits%2Citag%2Clmt%2Cmime%2Cmm%2Cmn%2Cms%2Cmv%2Cpl%2Cratebypass%2Crequiressl%2Csource%2Cexpire&mn=sn-n4g-atok&signature=A097A1E939EB0568D66B4C900906F6CA29D27CFF.3952EF1EA8D9E9F61FBC1AF2D10C00361B24EBF1&requiressl=yes&initcwndbps=1798750&ip=77.130.135.150&mime=video%2Fwebm&gir=yes&key=yt6&clen=62659982&ratebypass=yes&dur=0.000&lmt=1469203314069116[/codeUser]

    Divers

    Pour mieux comprendre les URLs sur Youtube. Dans l'URL on peut retrouver différente informations:

    https://www.youtube.com/watch?v=o6xHCmQOuXc&index=10&list=PLPkQoAsYuIp3FU9dPoa2WLHssuU9WuZAQ

    • v=o6xHCmQOuXc : identifiant de la vidéo
    • list=PLPkQoAsYuIp3FU9dPoa2WLHssuU9WuZAQ : identifiant de la playlist

    Conclusion

    On a utilisé youtube-dl sur YouTube mais il fonctionne sur de très nombreux sites . Je n'ai présenté que les fonctions de base alors qu'il existe de nombreuses fonctionnalités. En plus, il est possible de combiner les différentes options.
    Si vous avez des astuces sur youtube-dl ou un meilleur utilitaire, vous pouvez les partager en commentaire.

    Ressources

    [codeUser]man youtube-dl youtube-dl --help[/codeUser]
    By nIQnutn
    Vus : 4085
    Publié par nIQnutn : 73