logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 05-11-2016 16:38:08

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

forcer youtube-dl à télécharger une vidéo streamée

L'astuce n'est pas nouvelle, beaucoup la connaisse et l'utilise probablement... Il est possible de télécharger des vidéos en streaming avec youtube-dl! Youtube-dl est bien pratique pour télécharger des des vidéos/clips/audio/etc sur youtube.com, dailymotion.com, vimeo.com,... et sur un tas d'autres sites. Mais il arrive parfois que youtube-dl n'arrive pas à télécharger directement la vidéo encapsulée dans une page web. Prenons un exemple:

Admettons que nous voulions télécharger le documentaire "Avant le déluge" réalisé par notre très cher Léonardo DiCaprio (documentaire que je conseille très fortement de visionner) et qui est accessible (temporairement?) à cette adresse: http://www.natgeotv.com/fr/programmes/n … e-deluge-1

Vous ne pourrez - normalement - pas la télécharger avec youtube-dl avec un simple:

youtube-dl http://www.natgeotv.com/fr/programmes/natgeo/avant-le-deluge/videos/before-the-flood-france-avant-le-deluge-1



La vidéo est streamée, elle est découpée par segments de 10 sec et envoyées par un serveur.

Voici l'astuce que j'ai trouvée par hasard (maintenant vous allez peut-être me dire "bin oui, c'est connu et logique, évidemment!" :-D).

Tout d'abord, il faut:
- installer youtube-dl et ffmpeg si ce n'est pas déjà fait (apparemment on pourrait utiliser avconv à la place de ffmpeg mais je n'ai pas testé avec celui-là).

Pour installer youtube-dl, suivre les instructions sur la page officielle: https://rg3.github.io/youtube-dl/download.html
Et pour installer ffmpeg:

sudo apt-get update
sudo apt-get install ffmpeg



Ensuite:
- télécharger la liste m3u8 contenant la liste des segments. Pour ce faire, avant de démarrer la vidéo en streaming dans le navigateur, clic droit sur la page et cliquer "Examiner l'élément" (sous Firefox) ou "Inspecter" (sous Google Chrome/Chromium). Aller sur l'onglet Network ou Réseau.
- Démarrer la vidéo
- Chercher après un fichier contenant l'extension .m3u8 (du style master.m3u8) et cliquer droit dessus et choisir "copy link adress" ou "copier l'URL"
- Dans le terminal taper: youtube-dl + l'adresse url du fichier m3u8, cela donne quelques chose comme ci-dessous:

youtube-dl http://sireclipsngcfr-vh.akamaihd.net/i/mpx/FIC_SIRE_Natgeo/243/776/DONT_PUBLISH_Before_the_flood_France~~124363~~~fr~mux~20161102~1_6362477329,6_mp4_video_1920x0_4000000_primary_audio_eng_6,5_mp4_video_1280x0_2432000_primary_audio_eng_5,4_mp4_video_1280x0_1800000_primary_audio_eng_4,3_mp4_video_960x0_1200000_primary_audio_eng_3,2_mp4_video_640x0_568000_primary_audio_eng_2,1_mp4_video_480x0_400000_primary_audio_eng_1,.mp4.csmil/master.m3u8?__b__=1200


 
En résumé, le fichier .m3u8 contient les url pointant vers les segments de fichiers vidéo. Youtube-dl télécharge les segments via le fichier .m3u8 et utilise ffmpeg pour les concaténer. L'opération est sans doute plus longue et plus compliquée que si on utilisait une extension sous firefox mais j'aime éviter d'installer trop d'extensions.


A noter qu'il est également possible de se passer de youtube-dl et de télécharger les segments avec un gestionnaire de téléchargement tel que DownThemAll (module/extension sous firefox) en lui faisant prendre le fichier .m3u8 sous format .txt et ensuite de les fusionner manuellement avec ffmpeg. La ligne de code à rentrer dans le terminal serait du style:

ffmpeg -f concat -i mylist.txt -c copy -bsf:a aac_adtstoasc monfilm.mp4



Où mylist.txt serait le fichier d'entrée .m3u8 modifié et monfilm est le fichier en sortie (en choisissant l'extension adpatée évidemment) // Dans mon cas, le format audio étant en aac, j'ai été obligé de rajouter l'option "-bsf:a aac_adtstoasc" qu'il me proposait sinon ça ne fonctionnait pas (mais je ne sais pas ce qu'elle produit exactement).


Debian - KDE / Openbox / Windows10

Hors ligne

#2 07-12-2016 08:52:51

jps
Membre
Distrib. : Debian 9
Noyau : 4.9
(G)UI : Xfce
Inscription : 04-12-2016

Re : forcer youtube-dl à télécharger une vidéo streamée

Salut il y a peut-etre plus simple en allant sur le site www.telechargerunevideo.com/fr/

Dernière modification par jps (07-12-2016 08:53:46)

Hors ligne

#3 07-12-2016 09:38:00

Anonyme-8
Invité

Re : forcer youtube-dl à télécharger une vidéo streamée

je n ai jamais été confronté a cette situation mais l'astuce est intéressante et devrait marcher sur d'autres sites

#4 07-12-2016 11:00:56

Anonyme
Invité

Re : forcer youtube-dl à télécharger une vidéo streamée

Bonjour,

j'ai pas tout compris. smile
Parfois, sur certaines vidéos, j'ai eu plein de fragments. J'ai laissé faire et tout c'est fait automatiquement.
Mais je passe par le script :

wget https://yt-dl.org/downloads/latest/youtube-dl
https://quidsup.net/scripts/?p=ytdl

Edit à toto :
Mis la commande wget en balise Commande user.

Dernière modification par Anonyme (07-12-2016 11:03:59)

#5 07-12-2016 12:08:53

Antidentity
Membre
Distrib. : See signature
Noyau : Linux amd64
(G)UI : KDE / Openbox
Inscription : 03-08-2016

Re : forcer youtube-dl à télécharger une vidéo streamée

Anonyme a écrit :

Bonjour,

j'ai pas tout compris. smile
Parfois, sur certaines vidéos, j'ai eu plein de fragments. J'ai laissé faire et tout c'est fait automatiquement.
Mais je passe par le script :

wget https://yt-dl.org/downloads/latest/youtube-dl
https://quidsup.net/scripts/?p=ytdl



Tu veux dire que tu as eu pleins de fragments qui se sont copiés dans ton répertoire? A noter que je n'ai pas encore testé avec énormément de vidéos. Peut-être qu'en fonction de la configuration du serveur/autorisations+liens, le résultat diffère.

Par contre, ton script pourrait être intéressant. Je testerai le script si youtube-dl ne fait pas de mise à jour pour corriger le souci sur youtube.com smile



jps a écrit :

Salut il y a peut-etre plus simple en allant sur le site www.telechargerunevideo.com/fr/


Merci pour le lien. Comme je le disais plus haut, il y a effectivement des solutions plus rapides (en nombre de clics) telles que des extensions/modules au navigateur, programmes externes, sites comme celui que tu proposes, etc. C'est bien d'accumuler les choix, comme ça si une façon de faire ne fonctionne pas, on essaie une autre solution.
Je connaissais des sites semblables à telechargerunevideo.com qui proposent de télécharger la vidéo. Ca peut être pratique pour les petites vidéos mais ça l'est moins pour celles plus "pesantes". Par contre, chez moi, ton site fait freezer mon firefox avant même d'avoir pu y accéder.

Dernière modification par Antidentity (07-12-2016 12:19:05)


Debian - KDE / Openbox / Windows10

Hors ligne

#6 07-12-2016 13:27:58

Anonyme
Invité

Re : forcer youtube-dl à télécharger une vidéo streamée

Antidentity a écrit :


Tu veux dire que tu as eu pleins de fragments qui se sont copiés dans ton répertoire?



Oui mais rarement. Mais à la fin du download, il y a assemblage, multiplexage et suppression des fragments.
Je n'ai pas de lien sur une vidéo fragmentée pour vérifier à 100% mes dires. smile

Antidentity a écrit :


Par contre, ton script pourrait être intéressant. Je testerai le script si youtube-dl ne fait pas de mise à jour pour corriger le souci sur youtube.com



Tu peux y aller, c'est fonctionnel.
Attention, pour ceux qui utilise avconv, bien éditer le script et mettre avconv à la place de ffmpeg wink

Pied de page des forums