Streaming avec VLC et VLM
Suite des articles sur VideoLAN, nous allons aujourd’hui nous pencher sur l’interface VLM du client VideoLAN. Cette interface permet de créer un serveur pouvant lancer des streaming audio et video soit à la demande, soit en fonction d’une plage horaire.
Voici un schéma fonctionnel du système:

En entrée, on peut donc avoir:
- n’importe quel fichier audio/video lisible par VLC
- un flux audio/video venant d’une Webcam ou mieux d’une carte d’acquisition video
En sortie, VLC va générer un streaming IP pouvant se baser sur les protocoles suivants:
- HTTP (c’est du TCP, donc adapté pour des streaming de basses qualités sur des réseaux sans qualité de service. ex: Internet)
- MMSH (MMS sur HTTP, même remarque que pour le HTTP. Le principal avantage (le seul ?) de ce protocole est qu’il peut être lu par des clients Windows Media Player)
- UDP (permet un diffusion simple et sans overhead d’un streaming. Par contre, il n’y aucun contrôle… en cas de problème sur le réseau, les clients recevrons une vidéo dégradée ou plus de vidéo du tout)
- RTP (c’est un bon compromis. bassée sur UDP il permet d’avoir des statistiques sur le flux. Les prochaines versions de VideoLAN devraient inclure la prise en compte du protocole RTCP permettant de modifier dynamiquement le flux en fonction des contraintes du réseau)
Il est bien sûr possible et conseiller d’encoder ou de ré-encoder l’entrée selon vos besoins (MPEG-1, MPEG-2, MPEG-4, H.264…).
Lancement de VLC avec l’interface VLM
L’interface VLM peut être administrée par ligne de commande (Telnet) ou interface Web. Nous allons étudier dans ce billet la première solution, beaucoup plus souple et simple que la seconde.
La première chose à faire est de lancer VLC avec l’interface Telnet:
# vlc –intf telnet
VLC media player 0.8.6c Janus
[00000287] main interface: creating VLM
[00000287] telnet interface: using the VLM interface plugin…
[00000287] telnet interface: telnet interface started on interface 4212
Comme on peut le voir, le serveur se lance en écoute sur le port TCP/4212
Administration de VLM via telnet
Nous allons donc ouvrir une session telnet sur le port 4212 (on part sur le principe ou l’on administre la machine en local, si ce n’est pas le cas, il faudra que vous remplaciez l’adresse 127.0.0.1 par l’adresse IP de votre machine).
# telnet localhost 4212
telnet 127.0.0.1 4212
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is ‘^]’.
Password: admin
Welcome, Master>
Nous voilà donc dans le shell de VLM. La liste des commandes disponibles peut être affichée grâce à la commande help.
Reste à voir command créer un streaming (media dans la nomenclature VLC).
Création d’un streaming à partir d’un fichier DivX
Dans ce premier exemple nous allons créer un streaming à partir d’un fichier source Divx. Ce streaming sera démarré sur action de l’administrateur (c’est à dire vous…).
Nous allons donc procéder à la création du media que nous allons nommer mondivx.
> new mondivx broadcast enabled
> setup mondivx input “Star_Wars_3.avi”
> setup mondivx output #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.0.100:1234}}
La première ligne permet de créer et d’activer le media mondivx.La seconde configure la source (ici notre fichier DivX).La troisième configure le streaming. Vous pouvez faire un copier/coller de ceux qui est affiché par VideoLAN. Dans mon exemple, je diffuse en UDP vers l’adresse 192.168.0.100 (port UDP/1234).
La commande suivant permet de visualiser la liste des médias créés.
> showshow media : ( 1 broadcast – 0 vod ) mondivx type : broadcast enabled : yes instances schedule
On voit donc que le serveur VLM à 1 média de type broadcast qui se nomme mondivx.
Pour afficher le détail du média, on utilise la commande:
> show mondivxshow fileunicast type : broadcast enabled : yes loop : no inputs Star_Wars_3.avi output : #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.29.157:1234}} options instances
Lancement du streaming
C’est très simple:
> control mondivx play
Pour visualiser le streaming, il suffit d’ouvrir VideoLAN (sur la machine 192.168.0.100) et de choisir “Ouvrir un flux réseau” , UDP port 1234.
Pour l’arrêter:
> control mondivx play
Création d’une streaming à partir d’une carte d’acquisition vidéo
Si vous disposé d’une carte d’acquisition vidéo ou d’une WebCam (reconnue par v4l), il suffit de configurer un nouveau media (dans mon cas mon device video est mappé sur /dev/video1).
> new macamera broadcast enabled
> setup macamera input “v4l://”
> setup macamera option v4l-vdev=/dev/video1> setup macamera option v4l-adev=/dev/dsp> setup macamera option v4l-norm=0> setup macamera option v4l-frequency=-1> setup macamera option v4l-width=640> setup macamera option v4l-height=480> setup macamera output #transcode{vcodec=mp4v,vb=768,scale=1}:duplicate{dst=std{access=udp,mux=ts,dst=192.168.0.100:1234}}
La seule différence avec le media mondivx est la source (camera).
Pour lancer le streaming:
> control macamera play
Pour visualiser le streaming, il suffit d’ouvrir VideoLAN (sur la machine 192.168.0.100) et de choisir “Ouvrir un flux réseau” , UDP port 1234.
Pour l’arrêter:
> control macamera play
Programmer des streamings
Une des fonctions intéressante de VLM est la possibilité d’automatiser le lancement et l’arrêt d’un streaming (media) à des heures données.
Pour cela nous allons définir deux horaires (celui de départ et celui de fin):
> new camera_start schedule enabled
> setup camera_start date 2007/12/31-23:00:00
> new camera_stop schedule enabled
> setup camera_stop date 2007/12/31-23:59:59
Puis l’affecter au media macamera préalablement créé.
> setup camera_start append control macamera play
> setup camera_stop append control macamera stop
Le streaming sera donc automatiquement démarré le 31 décembre 2007 à 23h00 et arrêté le même jour à 23h59.
Voici donc un rapide aperçu des fonctions de VLM. Il est également possible de faire de la VoD (vidéo à la demande). On abordera sûrement ce sujet dans un prochain billet.





Twitter:
Rss:
16 commentaires
J’ai un serveur local “Mamp” et j’avais installé “QuickTime Streaming Serveur”.Ces 2 serveurs sont incompatibles – impossible de lancer QTSS”. Avec cette méthode utilisant VLC il serait donc possible de faire du streaming vidéo ?
@jack: je ne comprends pas trop bien ta question, mais oui VLC permet de faire du streaming video avec une interface de type Web ou Telnet.
Je viens de m’apercevoir qu’avec Léopard un logiciel de streaming n’était plus tout à fait nécessaire. J’ai fait la découvertet suivante. J’ai “rippé” un DVD acheté dans le commerce (durée de l’opération 20mn) avec “Mac the ripper” et je l’ai encodé en XVID avec “DVison” (durée de l’opération 3 heures avec un Macmini 1,66 ghz). Voir
http://www.logicielmac.com/ pour trouver ces logiciels. Ensuite j’ai placé le divx dans le dossier “htdocs” de mon serveur MAMP (Mamp dyndns). Je peux donc accéder a mon divx depuis le web “http://mondomaine.dyndns.org/divx/”.
J’ouvre ce dossier ou le divx apparaît. La nouveauté est que lorsque je clique dessus, le films démarre et on peut le prévisualiser (augmenter la capacité du cache de Firefox) en entier dans une fenêtre de 570×330 pixels alors qu’avec Tiger, le film ne se lançait pas. Si on fait “enregistrer le fichier lié” on va pouvoir le télécharger (durée du téléchargement 4mn). Le film est en .AVI et s’ouvre avec QuickTime. La qualité de l’encodage est excellente et supporte un écran 1680×1050.
J’ai placé le divx de 700 Mo dans un billet de mon blog WordPress et ca fonctionne. Il faut utiliser le plugin CoolPlayer Firefox (mettre le cache à 700 Mo). Je vais quand même m’intéresser aux méthodes de streaming.
jusqu’à present j’attends comment faire de la VOd avec vlm
Salut,
Quand je fait : ” telnet localhost 4212 ” sur mon serveur j’ai une erreur : ” Unable to connect to remote host: Connection refused ”
Aidez-moi s’il vous plaie
@thibault64: peut être un problème de Firewall ?
Merci pour le tuto !
PB : j’essaie de faire un streaming de la webcam de l’eeePC 701 d’Asus (que je veux embarquer sur un véhicule commandé par WiFi) mais en réponse à “setup macamera output” j’obtiens l’erreur “Wrong properties syntax”
En fait, je viens de comprendre qu’il faut donner à la suite de “setup macamera output” toutes les options (transcode, duplicate…). ;o)
Pour ceux qui comme moi n’ont pas un affichage complet de la dernière ligne de commande (#transcode etc…) sous Firefox, qui semble couper la fin des lignes de texte trop grandes, revenez au code source de la page html, la ligne y est en entier.
Den
Je m’excuse si je n’ai pas compris les fondamentaux de ce tutorial, mais j’ai un besoin très similaire à ce qui est schématisé en tout début de l’article, au delta près que je ne souhaite pas streamer toute la journée depuis le serveur.
En effet le serveur dispose d’un fichier mettons de 100mo que je souhaite donc diffuser aux lecteurs VLC. Je ne tiens pas à ce que les ordinateurs téléchargent 100 mo continuellement, donc il faut que les 100 mo soient téléchargés sur les ordinateurs cible, puis qu’ils lisent en flux continu
Le lendemain, si le flux d’origine change (le film a changé), j’aimerai en prime que un nouveau téléchargement soit fait, est ce que VLM peut me permettre de mettre en place ce type de dispositif ?
Bonjour,
lorsque je lance
%vlc –intf telnet
j’ai ecris “Lancement de vlc avec l’interface par défaut. Utilisez « cvlc » pour démarrer VLC sans interface.” et je ne peux plus rien entrer comme ligne de commane !!!
est ce normal ?
Bonjour et Merci beaucoup pour toutes ces explications; Bravo!
J’ai vu sur howto de VLC des lignes de code à rentrer pour les fonctions avancées, mais je sais pas ou s’ouvre ces fenêtres pour rentrer ces lignes de commande. Pourriez-vous m’aider ???
A plus
Je pensais à ton design, est il personnalisé ? Il est bien.
Bonjour et merci pour ce petit tuto très intéressant.
Je dois mettre en place justement un serveur de streaming via VLC sur Debian.
J’ai suivis les instructions de ce tuto à la lettre, en tentant pour commencer de diffuser un fichier divx.
Aucun message d’erreur apparait lorsque de l’exécution des commandes, mais lorsque je tente de lire le flux réseau via VLC sur un autre poste, lui sous Windows, j’ai un message d’erreur qui apparait:
Votre média d’entrée ne peut être ouvert:
VLC ne peut pas ouvrir « udp://@192.168.1.123:1234 ». Vérifiez les messages pour plus de détails.
Quelqu’un aurait une idée d’où peut venir le soucis?
En vous remerciant d’avance
Bonjour,
Afin de faire de l’animation en salle d’attente, je souhaite utiliser un lecteur vidéo tel que VLC sur lequel j’aurais des listes de lectures prédéfinies.
J’aimerais, depuis une autre application agir sur ces listes de lectures : changer de liste tout de suite, attendre la fin de la vidéo en cours puis lancer le nouvelle liste. Composer une nouvelle liste etla diffuser, ect.
J’ai cru comprendre que VLC permettait ce genre de choses en lignes de commandes mais j’ai du mal à trouver les infos; Quelqu’un pourrait-il m’aider SVP
Merci
@Thibaut: en gros, il faut lancer VLC avec une interface Web HTTP (avec la commande: vlc -I http). Tu doit pouvoir te connecter à distance avec un navigateur Web avec une URL du type http://:8080/ (remplacer par l’adresse IP du Pc sur lequel la commande vlc a été lancée.