Pour nous contacter : soyez au rendez-vous sur IRC ! ⋅ Parcourir l'archive musicale Dogmazic ⋅ Notre Blog
Notre Documentation
Notre Documentation
Streaming vidéo avec vlc
http://nfalaise.free.fr/index.php?part=tutos&sub=stream_vlc
j'y poste, en intro, un lien vers le tuto "pas à pas" qui m'a permis de faire mon premier streaming vidéo... en utilisant le format WMV.
Le reste de l'article est un complément d'infos dans le but d'expliquer quelles sont les différentes options de diffusion que VLC propose, avec une grosse partie sur les problèmes liés au réseau.
j'y poste, en intro, un lien vers le tuto "pas à pas" qui m'a permis de faire mon premier streaming vidéo... en utilisant le format WMV.
Le reste de l'article est un complément d'infos dans le but d'expliquer quelles sont les différentes options de diffusion que VLC propose, avec une grosse partie sur les problèmes liés au réseau.
Réponses
[MODE GEEK = ON]
coté PC :
[code:1]vlc -vvv v4l:// :v4l-vdev="/dev/video0" :v4l-adev="/dev/dsp" :v4l-norm=3 :v4l-frequency=-1 --sout "#transcode{vcodec=mp1v,vb=256,scale=1,acodec=mp3,ab=192,channels=2}:duplicate{dst=std{access=udp,mux=ts,dst=xxx.xxx.xxx.xxx:12345}}"[/code:1]
... sur une seule ligne, hein.
pour le v4l:// etc... (jusqu'au --sout), ça dépendra de votre matériel. là, je suis sous linux.
(je vous invite à jeter un coup d'oeil à la fin de mon tuto du post précédent pour plus de détails).
Donc là, j'encode sur le PC en mp1v pour l'image et en mp3 pour le son et j'envoie en udp sur la dédibox, à l'adresse xxx.xxx.xxx.xxx (remplacez par l'IP de votre relais)
coté dédibox, pour le relais :
[code:1]vlc -vvv udp:@:;12345 --sout "#transcode{vcodec=theo,scale=1,aspect-ratio=4:3,acodec=vorb}:duplicate{dst=std{access=http,mux=ogg,dst=xxx.xxx.xxx.xxx:12345/video.ogg}}"[/code:1]
donc toujours sur une seule ligne.
Là, je récupère le flux qui lui arrive en udp, je l'encode en theora/vorbis, j'encapsule le tout en ogg et je repropose le flux cette fois en http pour qui veut.
(encore une fois, mon tuto du premier post donne quelques explications...)
bon
les premiers tests marchent... j'ai des messages un peu étranges coté dedibox, mais ça marche... le flux s'intègre ensuite dans l'applet Java Cortado pour l'intégrer sur une page web avec le code:
[code:1]<applet width="320" height="240" archive="cortado-ovt-debug-0.2.2.jar" code="com.fluendo.player.Cortado.class" />
<param name="url" value="http://xxx.xxx.xxx.xxx:12345/video.ogg"/>
<param name="local" value="false"/>
<param name="framerate" value="30"/>
<param name="keepAspect" value="true"/>
<param name="video" value="true"/>
<param name="audio" value="true"/>
<param name="bufferSize" value="400"/>
</applet>
[/code:1]
avec toujours xxx.xxx.xxx.xxx l'adresse IP du relais.
Le seul soucis, là, c'est que Java refuse de lire un flux qui ne vient pas de l'ordi qui fourni la page web où le player est intégré. Donc obligé d'intégrer le player sur une page servie par la dédibox. On peut régler le problème, pour l'intégrer ailleur, en passant par une iframe par exemple.
[MODE GEEK = OFF]
Bon, disons plutôt que... ça a tendance à marcher
Mais coté relais, je me chope une foule de :
[code:1][00000378] main private warning: vout synchro warning: pts != current_date (-104044)
[00000378] main private warning: vout synchro warning: pts != current_date (-120278)
[00000378] main private warning: vout synchro warning: pts != current_date (-103978)
[00000378] main private warning: vout synchro warning: pts != current_date (-103844)
[00000378] main private warning: vout synchro warning: pts != current_date (-119967)
[00000378] main private warning: vout synchro warning: pts != current_date (-103722)
[00000378] main private warning: vout synchro warning: pts != current_date (-119622)
[00000378] main private warning: vout synchro warning: pts != current_date (-103922)
(etc...à raison de 2/3 lignes par secondes)[/code:1]
le flux passe quand même et au final, ça marche, mais tous ces affchages, je trouve ça assez inquiétant...
du coup j'essaie de varier les combinaisons (codec/encapsulation/protocol)
mais rien de trés concluant jusqu'à maintenant
si quelqu'un a une idée...
[MODE STAR TREK = OFF]
mais c'est pas trés stable.
d'après ce que j'ai pu glaner vu le web à propos du pts, c'est une histoire de synchrorisation
mais avec quoi j'en sais rien
Quoi qu'il en soit, le player, par moment, est largué et crois que le flux est terminé alors qu'il continue
Ou alors c'est carrément vlc qui s'arrète sur le relais avec une erreur de segmentation.
pour le son, si on envoie juste le son, sans image, là, c'est beaucoup plus simple:
coté PC:
[code:1]vlc -vvv <source...> --sout "#transcode{acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=udp,mux=ts,dst=xxx.xxx.xxx.xxx:12345}}"[/code:1]
coté relais:
[code:1]vlc -vvv udp:@:;12345 --sout "#duplicate{dst=std{access=http,mux=raw,dst=xxx.xxx.xxx.xxx:3131}}"[/code:1]
en remplaçant <source...> par la source, donc
et xxx.xxx.xxx.xxx par l'IP du relais.
là, le flux est accessible à l'adresse http://xxx.xxx.xxx.xxx:3131
bon, dans cet exemple, j'envoie en mp3 donc le flux peut être lu avec un player indépendant ou aussi intégré dans un lecteur flash.
pour le vorbis, c'est plus compliqué...