Comment enregistrer une vidéo streamée ? avec VLC bien sûr !
Ma petite fille de 2 ans est une fan de "Trotro". Ses vidéos sur le net sont très présentes et ce avec un nombre de lectures qu'envieraient de grandes stars, mais certaines durent presqu'1H. Donc je souhaitais enregistrer le flux, pour pouvoir le distiller ensuite à petite doses. J'ai testé plusieurs solutions (et pas seulement sur des flux de "Trotro"), et il s'avère que la solution (gratuite) avec VLC passe quasiment tout le temps.
Avertissement
Avant toute chose je vais aller de mon petit couplet d'honnête citoyen : la copie de tout film est interdite. Pour les films "commerciaux" je vous renvoie à l'avertissement de ma page Comment ripper/copier un DVD ? avec VLC bien sûr !
Pour ce qui est des vidéos streamées, c'est à dire celles que vous envoient par flux (stream) des sites comme "Youtube" ou autre "Dailymotion" et qui sont destinées à être vues en temps réel, l'interdiction est également de mise. A noter que dans cette catégorie de vidéos streamées nous avons aussi les webTVs, les VOD (Vidéo On Demand) et les TVReplays.
Cette interdiction est rappelée par exemple pour Youtube dans ses Conditions d'utilisation chapitre "5 - Restrictions générales d'utilisation" dont plus particulièrement la clause "M - vous vous abstiendrez de copier, reproduire, distribuer, transmettre, diffuser, afficher, vendre, concéder des licences ou autrement exploiter tout Contenu pour tout autre usage sans l’accord préalable écrit de YouTube ou des concédants de licences respectifs du Contenu."
Voilà vous êtes prévenus.
Nota
Cet article a été rédigé sur la base de VLC 2.0.1 sous W7, et a été testé avec VLC 1.1.4 sous Linux Mint 10 (1). Les différences notables sont indiquées.
1 - J'avais essayé sous Debian Squeeze, cependant l'installation de la libdvdcss, qui permet de lire certains cryptages de DVD, est alors obligatoire. Comme elle ne fait pas partie des dépôts Debian, j'ai ajouté au fichier /etc/apt/sources.list un nouveau dépôt de deb-multimedia.org. Mais je n'ai jamais réussi à rendre VLC pleinement opérationnel. Par contre cette version ancienne de VLC sous Linux Mint 10 a bien fonctionné et ce du premier coup.
Allons-y !
Comme indiqué en préambule, pour des questions pratiques, je souhaitais enregistrer une vidéo diffusée en streaming sur Youtube, en l’occurrence un 'Trotro' d'une durée d'une heure. Comme souvent plusieurs solutions sont possibles :
- avec Firefox et ses extensions : Flash and video download, Easy YouTube Video Downloader, etc. etc. Mais cet aspect fera l'objet d'un autre article.
- avec VLC bien sûr !
Dans la mesure de ce que j'ai pu testé, j'élargirai à d'autres sources de diffusion en streaming.
Il existe un descriptif, mais en anglais sur wiki.videolan.org/Documentation:Streaming_HowTo_New, sa lecture m'a appris certains détails mais tout n'est pas forcément bien actualisé.
1 - Enregistrer un flux vidéo en provenance de Youtube ou Dailymotion via l'interface graphique (GUI), solution simple mais lente et qui ne marche pas toujours.
Intuitivement on peut penser que si VLC est capable de lire une vidéo diffusée en streaming, il n'y a aucune raison que l'on ne puisse pas récupérer les données qu'il a traitées. Et nous aurions raison.
En effet VLC propose une fonction d'enregistrement. Pour l'activer il faut se rendre dans "Vue" et cliquer sur "Contrôles avancés". Une 2ième ligne apparaît alors au-dessus de la ligne habituelle (lecture, play list, etc.) avec notamment un bouton d'enregistrement (carré gris avec un un rond rouge si présence d'un flux).
A partir de là, rien de plus simple :
- vous récupérez l'adresse URL de votre flux :
- sous Youtube, clic droit sur la vidéo que vous regardez, vous avez un menu qui s'affiche vous cliquez sur le premier "Copier l'URL de la vidéo"
- sous Dailymotion vous copiez simplement l'adresse que vous donne votre navigateur lors du visionnage de votre vidéo
- pour d'autres sites, je vous laisse chercher (mais attention pour certains c'est loin d'être évident voire impossible)
- vous ouvrez VLC si ce n'est déjà fait, puis dans Menu : Media > Ouvrir un flux réseau (Ctrl+n) > Coller l'adresse à l'emplacement "Entrer une URL réseau"; puis en bas cliquer sur "Lire"
- si tout se passe bien, le film se lance et vous cliquez de suite sur le bouton d'enregistrement
dont le fond vire alors au gris-bleu. Une fois le film terminé (hé oui,
il faut attendre la fin du film, c'est l'inconvénient), vous retrouverez
alors votre film sous le répertoire Vidéo (sous W7 comme sous Debian)
sous un nom de type "vlc-record-aaaa-mm-dd-hhhmmmsss-xxx.yyy".
A noter :
- Avec VLC 1.1.4 sous Linux Mint 10, je réussis à visionner la vidéo de Dailymotion mais pas celle de Youtube.
- pendant que votre film tourne sous VLC, il est intéressant et surtout utile de regarder quels sont les codecs utilisés par la version originale. Pour cela dans Menu : Outils > Informations sur les codecs (Ctrl+j)
Pour exemple nous avons :
Les codecs de ma vidéo sous Youtube, ici du .webm Les codecs de ma vidéo sous Dailymotion ici du .mp4 à priori - l'extension du fichier est mise automatiquement par VLC. J'ai eu un .mp4 pour le fichier de Dailymotion (normal) et un .avi pour le fichier de Youtube (?). Mais l'enregistrement en .avi n'a pris que le flux vidéo. Est-ce que l'audio en .ogg (Vorbis) était incompatible avec cette extension ? Il est vrai qu'au regard des codecs utilisés une extension en .webm aurait été mieux appropriée.
2 - Enregistrer/Transcoder un flux vidéo en provenance de Youtube ou Dailymotion via l'interface graphique (GUI), solution un peu plus complexe, mais puissante.
Cette fois conformément à ce que j'ai compris, cf. le tableau de compatibilité mux et formats Vidéo/Audio , l'enregistrement du flux brut par cette méthode n'est à priori pas possible, même si pour le format de la vidéo sur Dailymotion cette impossibilité me laisse perplexe (en tout cas je n'y suis pas arrivé, si quelqu'un a trouvé comment faire je suis preneur). Par contre, contrairement à l'enregistrement direct évoqué au paragraphe précédent, le choix du profil d'enregistrement au plus près du profil de la vidéo diffusée, permet d'enregistrer n'importe quel flux. Je ne préconise pas en effet de transcoder de manière radicale un flux streamé. Il est préférable de l'enregistrer dans un premier temps puis de voir quel est le transcodage le plus efficace pour vos besoins (car n'oubliez pas que tout transcodage vous fait perdre de la qualité)
Voici comment procéder:
Le début est identique au paragraphe précédent :
- vous récupérez l'adresse URL de votre flux :
- sous Youtube, clic droit sur la vidéo que vous regardez, vous avez un menu qui s'affiche vous cliquez sur le premier "Copier l'URL de la vidéo"
- sous Dailymotion vous copiez simplement l'adresse que vous donne votre navigateur lors du visionnage de votre vidéo
- pour d'autres sites, je vous laisse chercher (mais attention pour certains c'est loin d'être évident voire impossible)
- vous ouvrez VLC si ce n'est déjà fait, puis dans Menu : Media > Ouvrir un flux réseau (Ctrl+n) > Coller l'adresse à l'emplacement "Entrer une URL réseau"; puis en bas cliquer sur "Lire"
- normalement si tout se passe bien, le film se lance. Et là, pendant que votre film tourne sous VLC, je vous conseille vivement de voir quels sont les codecs utilisés par la version
diffusée. Pour cela dans Menu : Outils > Informations sur les codecs (Ctrl+j) Cf. les copies d'écran du paragraphe précédent.
- Maintenant vous savez quel profil utiliser pour enregistrer votre film. Vous ouvrez VLC si ce n'est déjà fait, puis dans Menu : Media > Convertir/Enregistrer (ou Ctrl + R) > Onglet Réseau > Coller l'adresse à l'emplacement "Entrer une URL réseau"; puis en bas cliquer sur "Convertir/Sauvegarder" > Définir le fichier de destination avec ici une extension compatible avec le profil; ne pas cocher "Afficher le flux de sortie"; déterminer le profil voulu, c.a.d les codecs; configurer (bouton à gauche de la croix rouge) le profil de telle manière qu'il "Conserve la taille originale de la piste vidéo > Démarrer.
Les dernières fenêtres ressemblent à ceci
- Vidéo source Trotro sur Youtube et VLC 2.0.1 sous W7 :
- Vidéo source Trotro sur Dailymotion et VLC 2.0.1 sous W7 :
Pour mon profil FLV voici la configuration Vidéo. | Pour mon profil FLV voici la configuration Audio. |
---|---|
- Vidéo source Trotro sur Dailymotion et VLC 1.1.4 sous Linux Mint 10 : Heu, ben là cela n'a pas marché ! Problème de version, de codecs installés ou du testeur c.a.d moi-même :-). Pour rappel je ne parle pas de Youtube puisque je n'arrive pas à lire la vidéo.
A noter :
- Vous
mettez le fichier de destination où vous voulez avec le nom que vous
voulez, mais son extension doit être compatible avec les profil/codecs
utilisés, sinon vous risquez de râler, en effet le transcodage ne
marchera pas mais VLC ne vous le dira pas ! (Soit il vous affiche la vidéo alors que vous ne l'avez pas demandée, soit il ne lance rien du tout)
- Nous
n'affichons pas la sortie ce qui permet d'alléger un peu le travail du
processeur qui, ici, ne l'oublions pas fait du transcodage (enfin je crois !)
- Malgré l'existence de la case à cocher, comme évoqué supra je n'ai jamais réussi à avoir un enregistrement du flux brut même pour le flux de Dailymotion qui à priori était compatible.
3 - Enregistrer/transcoder un flux vidéo avec VLC en ligne de commande
Il existe un descriptif, mais en anglais sur http://wiki.videolan.org/Rip_DVD , même propre à un flux DVD, sa lecture m'a appris certains détails mais tout n'est pas forcément bien actualisé.
Pour ma part, la commande qui permet cette fois l'enregistrement du flux brut est :
- sous W7 - Invite de commandes (en une seule ligne) :
## Pour Youtube > "c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "<URL de votre flux>" --sout "#standard{access=file,mux=webm,dst=trotro_out.webm}" vlc://quit ## Pour Dailymotion > "c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "<URL de votre flux>" --sout "#standard{access=file,mux=flv,dst=trotro_out.flv}" vlc://quit
- sous Linux - Terminal (en une seule ligne) :
## Pour Youtube cela devrait être (car pour ma version de test je n'arrive déjà pas à le lire) $ vlc "<URL de votre flux>" --sout "#standard{access=file,mux=webm,dst=trotro_out.webm}" vlc://quit ## Pour Dailymotion $ vlc "<URL de votre flux>" --sout "#standard{access=file,mux=MP4,dst=trotro_out.flv}" vlc://quitA noter :
- sous Windows, le chemin, nécessairement, complet de vlc.exe peut être différent pour vous .
- N'oubliez pas les " " qui entourent notamment l'adresse de votre flux. Dans certains cas (présence d'espace ou de caractères spéciaux) cela vous évitera de vous poser des questions.
- #standard : J'avoue ne pas encore avoir bien compris la différence entre ces options #standard, #transcode et #duplicate. A priori le premier permet le streaming sur le réseau ou un encodage dans un nouveau fichier, le second permet de changer à la volée le débit de sortie, le codec audio et/ou vidéo, et enfin le 3ième permet de créer un nouveau flux de sortie pouvant être traité de manière différente.
- dst =
fichier de destination, vous mettez le nom que vous souhaitez mais vous
lui mettez obligatoirement l'extension qui va bien. Vous noterez que pour VLC 1.1.4 sous Linux Mint 10, mux=flv n'a pas été accepté, d'où mux=MP4.
- vlc://quit permet l'arrêt de l'enregistrement lorsque la vidéo est terminée.
Vous conviendrez avec moi qu'écrire tout cela en ligne de commandes sans pouvoir faire des copier/coller peut être rébarbatif. Aussi je vous ai écrit à titre d'illustration, les fichiers texte qui vont bien que vous pourrez lancer dans un terminal.
- Sous Windows, je vous propose un fichier exécutable (.bat)
Pour cela ouvrir le bloc-notes et copier les lignes suivantes (Attention toutefois, ce court programme ne comporte que 4 lignes , les 2 RC supplémentaires ne sont là que pour des soucis de présentation. Il vous faut donc les enlever, laisser cependant un espace avant --sout) :
@echo off "c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://www.youtube.com/watch?v=vfPMT8Ohex4&feature=player_detailpage" --sout "#standard{access=file,mux=webm,dst=trotro_out.webm}" vlc://quit "c:\Program Files (x86)\VideoLAN\VLC\vlc.exe" "http://dai.ly/a9n7gK" --sout "#standard{access=file,mux=flv,dst=trotro_out.flv}" vlc://quit exit
-
Encore une fois l'emplacement de vlc.exe peut être différent pour vous. Les URL ne sont que des exemples (et ils correspondent à 2 Trotro !). Vous enregistrez le tout sous un nom quelconque comme 'Enregistrement_flux_vlc'. Maintenant il s'agit de modifier l'extension .txt de votre fichier nouvellement créé en .bat (il faut pour cela rendre visible les extensions, mais si vous en êtes là je suppose que vous savez faire).
Voilà c'est terminé. Vous double-cliquez sur votre .bat le premier enregistrement (Youtube) se lance, le second (Dailymotion) partira lorsque le premier sera terminé. Les vidéos se trouvent sous le répertoire où vous avez placé votre .bat, donc ce n'est pas idiot de mettre le .bat sous le dossier 'Vidéos' ;-) - Sous Linux, je vous propose un fichier à lire par la commande 'exec' (plus simple que d'écrire un fichier en bash)
Avec votre éditeur de texte favori (vim, emacs, gedit, ...), vous écrivez dans un fichier (nommé par exemple cmde_DM.txt) :
vlc "http://dai.ly/a9n7gK" --sout "#standard{access=file,mux=MP4,dst=trotro_out.flv}" vlc://quit
Puis dans une console, vous écrivez la commande suivante :
exec < cmde_DM.txt
et l'enregistrement commence, simple non ? Vous pouvez même éviter l'affichage de l'interface VLC en appelant 'cvlc' au lieu de 'vlc'
Rappel :
La ligne de commande offre des possibilités innombrables. Pour la maîtriser, le mieux est d'en comprendre la syntaxe. Le document La ligne de commande sous VLC 0.8.5 (cf. paragraphe "3 - En savoir plus" de la page "VLC - Généralités") est, je trouve, une très bonne entrée en matière.
4 - Quid des flux TV de votre FAI ?
Ce paragraphe reste à préciser/compléter, et ce d'autant plus que je n'ai pas l'offre TV avec mon accès Internet.
4.1 - Freebox TV
J'ai eu l'occasion de me connecter en Wi-Fi à une Freebox, et l'accès au bouquet TV s'effectue sans aucune difficulté, ni réglage particulier. Que ce soit sur la 2.0.1 ou sous la 1.1.4, il suffit d'aller dans Menu : Vue > Liste de lecture (Ctrl+l) > Internet --> Freebox, et il ne vous reste plus qu'à choisir votre chaîne parmi les plus de 500 chaînes et stations radios proposées (Nota : le groupe M6 n'a pas accepté d'intégrer ses chaînes dans le bouquet TV de Free donc pas de M6, W9, ...)
Et voici la preuve en image :
Avec Freebox, 2 personnes ou plus (si votre débit vous le permet) peuvent regarder leur programme TV favori en même temps , ici à gauche France 5 dans une Machine Virtuelle sous Linux Mint 10 et à droite NT1 sur l'ordinateur hôte sous W7. Pour que cela fonctionne, il faut que le plan d'adressage soit le même pour les différents ordinateurs, c.a.d que l'adresse IP de vos machines soient données par la Freebox.
Sur les forums on trouve des questions relatives à une impossibilité de connexion de 2 machines différentes, du fait de la présence d'un routeur. J'avoue ne pas bien comprendre l'intérêt pour un particulier d'être derrière un routeur, mais si tel est le cas je suppose que la personne sait ce qu'elle fait et qu'elle saura configurer correctement son routeur et sa Freebox pour que cela fonctionne car cela sort largement du cadre de ce site. Cependant ce site http://www.matherys.com/reglages-vlc-et-free-tv-multiposte/ un peu ancien donne la voie à suivre.
Pour mémoire, sur les anciennes versions de VLC qui n'ont dans leur liste de lecture accès à Freebox directement, on peut aussi ouvrir (avec VLC bien sûr) ce lien http://mafreebox.freebox.fr/freeboxtv/playlist.m3u pour retrouver les différentes chaînes proposées dans la liste de lecture.
4.2 - Livebox
A venir, dès que j'en aurai une sous la main.
4.3 - Autres box
A venir ... peut-être, mais je ne suis pas sûr que tous proposent ce même service de diffusion multi poste que Free.
- Numéricable : Non, on a accès à un bouquet TV mais d'un seul poste.
5 - Pour en savoir plus :
- une page en français leshirondellesdunet.com/vlc qui m'a permis de dégrossir certaines choses
- une autre (ancienne 2009) http://another-teacher.net/spip.php?article298
- toujours une ancienne page, mais cela peut être utile pour les possesseurs d'anciennes versions http://www.redisdead.org/blog/?post/2005/10/08/126-le-saviez-vous-vlc-fait-aussi-encodeur-video
- celle-ci http://www.xanetiz.com/vlc-lecteur-incontournable.html décrit comment diffuser en streaming