Wiki

Outils pour utilisateurs

Outils du site


freebox_et_vlc

Utilisation de VLC en intermédiaire avec le Freebox Network Recorder

Cette page ne décrit pas l'utilisation du network recorder de mythtv, mais plutôt ses possibilités annexes. Pour l'utilisation du network recorder repportez vous à la page concernant l'IPTV

Cette solution permet d'utiliser mythtv avec tout flux provenant de VLC, grâce au magnétoscope virtuel codé initialement pour la freebox (freebox network recorder)

Il faut faire en sorte de positionner VLC en intermédiaire entre la freebox et mythtv. Ceci va fournir un parfait exemple pour l'utilisation du freebox network recorder avec une source externe.

Demarrer un serveur VLC de video à la demande.

Nous utilisons pour ça son interface telnet.

#!/bin/sh
nohup vlc -vvv --color -I telnet --telnet-password toto --rtsp-host 0.0.0.0:5554 > /dev/null 2>&1 & pause=2
sleep 1
 
(
	echo 'toto'
	sleep $pause
	echo 'new 201 vod input rtsp://mafreebox.freebox.fr/freeboxtv/stream?id=201 mux mp2t enabled'
	sleep $pause
	echo 'new 202 vod input rtsp://mafreebox.freebox.fr/freeboxtv/stream?id=202 mux mp2t enabled'
	sleep $pause
	echo 'new 203 vod input rtsp://mafreebox.freebox.fr/freeboxtv/stream?id=203 mux mp2t enabled'
	sleep $pause
	echo 'new 419 vod input rtsp://mafreebox.freebox.fr/freeboxtv/stream?id=419 mux mp2t enabled'
	sleep $pause
	echo 'quit'
) | telnet localhost 4212

Détail : Le script précédent démarre VLC en arrière plan, avec l'interface telnet active, ainsi qu'un serveur RTSP ouvert sur le port 5554 (RTSP est le protocole servant à la VOD). Ensuite nous envoyons des commandes à VLC par l'intermédiaire d'une connexion à l'interface telnet :

  • d'abord le mot de passe pour débuter la session,

puis

  • des flux que VLC pourra mettre à disposition de ses clients (le client en question est Mythtv). Dans l'exemple les flux en question sont identifiés par un numéro (on peut mettre un nom si on veut), juste après la commande “new”. Il est bien sur possible de remplacer la chaine après le paramètre “input” afin de déclarer les sources extérieures que l'on veut. Ici les sources déclarés sont des chaines de freetv servies par la freebox. (201 = france2, 202 = france3, 205=france5, 419=gulli). Cela n'a pas trop d'intérêt puisque normalement elles peuvent être utilisé directement par le freebox network recorder, mais c'est juste un exemple.

(Pour avoir le détail des correspondances numéros/chaines, il vous faudra récupérer la playlist distribuée par la freebox avec la commande wget http://mafreebox.freebox.fr/freeboxtv/playlist.m3u)

Les “pauses” dans le script sont nécessaires, en effet j'ai constaté que si on bombardait vlc de commandes, celui ci coupait son interface telnet… Sur un vieux PC il est peut être nécessaire encore d'augmenter la valeur de la pause. Pour vérifier que les commandes ont bien été passés, vous pouvez vous connecter à l'interface avec telnet localhost 4212 Rentrez le mot de passe 'toto'. Puis tapper 'show 419' pour vérifier par exemple si le flux de la chaine gulli est bien défini.

Test

On peut, une fois notre serveur VOD démarré, utiliser une autre instance de VLC en tant que client afin de faire des tests. Pour cela on démarre l'interface graphique de VLC et on ouvre le flux réseau suivant : rtsp://localhost:5554/202 Normalement France3 s'affiche, si notre serveur est bien configuré et lancé.

Playlist

Une fois le serveur lancé, il faut créer une playlist que mythtv pourra utiliser pour trouver tous ces flux. Voici un exemple :

#EXTM3U
#EXTINF:0,2 - france2
rtsp://localhost:5554/201
#EXTINF:0,3 - france3
rtsp://localhost:5554/202
#EXTINF:0,5 - france5
rtsp://localhost:5554/203
#EXTINF:0,18 - gulli
rtsp://localhost:5554/419

Cette playlist décrit les flux qui ont définis dans l'interface VLC tout à l'heure. localhost = la machine en cours. En effet, c'est sur la machine locale que le serveur VLC tourne. 5554 représente le port du serveur RTSP que l'on a défini. Le numéro qui reste est l'identifiant d'un flux.

A cause d'une limitation du freebox network recorder, il faut que cette liste soit disponible pour mythtv par http. Pour cela, installer apache2 et mettez ce fichier à la racine de votre serveur web (souvent /var/www) EDIT : sur les versions récentes, cette limitation n'est plus. On peut ainsi indiquer une URI locale à la machine /home/user/.mythtv/playlistcustom.m3u par exemple).

Configuration mythtv

Maintenant, il faut configurer mythtv. Dans mythtv-setup, il faut rajouter une carte de capture de type “freebox network recorder”. Au lieu de l'URL de la playlist de la freebox (http://mafreebox.freebox.blablabla), on utilise l'URL de notre playlist (http://localhost/playlist.m3u par exemple) que l'on a placé sur notre serveur web. On crée ensuite une source vidéo propre à notre serveur. On fait le lien entre la source vidéo et la carte de capture. Dans cette étape on peut effectuer un import automatique de chaine grâce au bouton à cet effet. Mythtv va alors récupérer notre playlist sur le serveur web local pour importer ensuite les chaines qu'il contient. Un petit passage dans l'éditeur de chaine pour vérifier qu'il n'y a pas de conflit avec les numéros de chaine, et c'est prêt.

Utilisation

Il faut que le serveur vlc soit démarrer pour que mythtv puisse se verrouiller sur les chaines, grâce au premier script de ce tuto. Il est possible d'automatiser son démarrage. Une fois que le serveur est démarré, on peut aller dans la section tv de mythtv pour voir les chaines distribuées gracieusement par notre serveur. Le verrouillage est souvent long !! La plupart du temps le message classique “impossible de verrouiller, vous auriez déjà du avoir une image blablabla” apparait. Il suffit de cliquer sur ok et d'attendre un peu plus longtemps et la chaine finira par se verrouiller. Pour réduire la gêne, on peut il me semble augmenter le temps avant que le message d'erreur ne s'affiche (voir la conf de mythtv)

Complément pour les flux vidéo bas débit

Cette fonctionnalité a été désactivée par Free en février 2011.

Le fournisseur d'acces Free.fr fourni, pour les connexions adsl non dégrouppé, mais à 2 mega, une adresse de flux vidéo. Cela n'a rien à voir avec un vrai flux, il n'y a que quelques chaines, et l'image de base fait 400×300, mais c'est déjà pas mal! L'adresse est de la forme:

http://tv.freebox.fr/stream_france2

Maintenant, le problème est d'y avoir acces alors que ce n'est a priori, pas du type rtsp. La solution: le même script que ci dessus, mais légèrement modifié:

vlcVOP.sh
#!/bin/sh
nohup vlc -vvv --color -I telnet --rtsp-host 0.0.0.0:5554 > /dev/null 2>&1 & pause=2
sleep 1
 
(
	sleep $pause
	echo 'new F2  vod input http://tv.freebox.fr/stream_france2 mux mp2t enabled'
	sleep $pause
	echo 'new F3  vod input http://tv.freebox.fr/stream_france3 mux mp2t enabled'
	sleep $pause
	echo 'new F4  vod input http://tv.freebox.fr/stream_france4 mux mp2t enabled'
	sleep $pause
	echo 'new F5  vod input http://tv.freebox.fr/stream_france5 mux mp2t enabled'
	sleep $pause
	echo 'new D8 vod input http://tv.freebox.fr/stream_direct8 mux mp2t enabled'
	sleep $pause
	echo 'new NT1 vod input http://tv.freebox.fr/stream_nt1 mux mp2t enabled'
	sleep $pause
	echo 'new NRJ12 vod input http://tv.freebox.fr/stream_nrj12 mux mp2t enabled'
	sleep $pause
	echo 'new LCP vod input http://tv.freebox.fr/stream_lcp mux mp2t enabled'
	sleep $pause
	echo 'new BFMTV vod input http://tv.freebox.fr/stream_bfmtv mux mp2t enabled'
	sleep $pause
	echo 'new TV5 vod input http://tv.freebox.fr/stream_tv5 mux mp2t enabled'
	sleep $pause
	echo 'new FO vod input http://tv.freebox.fr/stream_franceo mux mp2t enabled'
	sleep $pause
	echo 'new F24 vod input mms://live.france24.com/france24_fr.wsx mux mp2t enabled'
	sleep $pause
	echo 'new ALJ vod input http://tv.freebox.fr/stream_aljazeera mux mp2t enabled'
) | telnet localhost 4212

Une fois ceci exécuté, il faut suivre le tuto ci dessus pour y avoir acces. Exemple, pour france2: #EXTINF:0,2 - france2 rtsp:localhost:5554/F2

freebox_et_vlc.txt · Dernière modification: 07/12/2014 par snouf