Diffuser un flux video / webcam sous Linux avec icecast2, ezstream et oggfwd
Icecast2 est un serveur de flux audio et video et seulement cela.
Il va donc falloir fournir à ce serveur le flux vidéo qu'il va rediffuser. Pour cela, on peut utiliser plusieurs outils compatibles shoutcast. Pour ma part, j'ai choisi d'utiliser :
- ezstream dans le cas d'une video déjà au format ogg Theora,
- oggfwd qui permet d'envoyer un flux ogg Theora en mode shoutcast dans le cas où il faut réencoder le flux.
Vidéo au format Ogg Thoera
Si la vidéo est déjà au format théora, on va pouvoir la diffuser directement avec ezstream. Pour cela, il faut créer un fichier de configuration pour ezstream comme cela :
<ezstream>
<url>http://localhost:8000/test.ogg</url>
<sourcepassword>toto</sourcepassword>
<format>THEORA</format>
<filename>/home/david/backkom-golf.ogg</filename>
<reencode>
<enable>0</enable>
</reencode>
</ezstream>
Les paramètres importants sont :
- url : contient la connexion au serveur icecast2 et le nom virtuel du lien qui va permettre de voir le stream
- sourcepassword : le mot de passe défini au niveau du serveur icecast2 pour envoyer le stream
- format : THEORA
- filename : le nom du fichier video que l'on veut diffuser
- fichier .ogg : 1 seul fichier sera joué en boucle
- fichier.m3u : une playlist de fichiers video qui seront joués
ezstream -c config.xml
Video à réencoder
On peut utiliser la fonctionnalité de réencodage de ezstream, mais l'utilisation de ffmpeg2theora est beaucoup plus simple.
Configuration de Icecast2
Comme on envoit le flux vidéo en mode shoutcast, il faut définir une URL virtuelle (mountpoint) qui servira à diffuser le flux en ajoutant une ligne comme celle-ci dans le fichier de configuration de icecast2 (généralement/etc/icecast2/icecast2.xml) : <shoutcast-mount>/video.ogg</shoutcast-mount>
Encodage et envoie de la vidéo
On va encoder la vidéo en temps réel et l'envoyer au serveur icecast2 grâce à oggfwd : ffmpeg2theora ma_video.mpeg -o - | oggfwd icecast.mondomaine.org 8000 toto /video.ogg
Les paramètres de oggfwd sont :
- le nom du serveur icecast2
- le port d'écoute du serveur
- le mot de passe
- l'URL virtuelle (mountpoint) définie au paragraphe précédent dans icecast2
Encodage et envoie d'un flux issu d'une webcam
Il faut que la webcam soit compatible V4L car ffmpeg2theora permet d'accèder à la vidéo de ce type de driver. On va aussi dans ce cas encoder la video en Ogg Theora et l'envoyer au serveur icecast2 :
ffmpeg2theora --v4l /dev/video0 -o - | oggfwd icecast.mondomaine.org 8000 toto /video.ogg
Avec tout ça, à vous les joies de la diffusion de vidéo.
Commentaires
Afficher les commentaires en Vue non groupée | Vue groupée
Pedro sur :
Je suis en train de me prendre la tête depuis 3 jours sur la diffusion d'un Divx avec Icecast.
Mon serveur fonctionne trés bien, et je l'alimente avec ezstream ou oggfwd (comme indiqué sur cette page).
Bizarement je n'ai jamais de flux vidéo ...
J'ai donc essayer de savoir d'où venit mon problème, et j'ai encoder d'abord ma vidéo avec ffmpeg2theora pouis je l'ai diffusé.
L'encodage semble être bon, ffmpeg-php me dit bien que la vidéo est en Theora/vorbis, et pourtant quand je lance le tout je n'ai que le stream audio et rien en vidéo.
Si quelqu'un à une idée, merci d'avance.
nico sur :
car je viens de rencontrer le meme probleme, j ai beau mettre un point de montage en .ogg ou .avi , aucune video , juste l audio...
si tu as trouvé merci de me tenir au courant