Pour nous contacter : soyez au rendez-vous sur IRC ! ⋅ Parcourir l'archive musicale Dogmazic ⋅ Notre Blog ⋅ Notre Documentation
Bonjour à tous,

Le forum Musique Libre a migré !

Pas d'inquiétude, vos comptes et vos messages ont été migré ! Mais nous n'avons pas pu migrer les mots de passe, il vous faudra donc cliquer sur "J’ai oublié mon mot de passe" et suivre la procédure.

Welcome back ;)

Streaming vidéo avec vlc

outils, gadgets, logiciels : musique numérique, technologie etc.
Avatar de l’utilisateur
dj3c1t
Messages : 1590
Inscription : 05 nov. 2005, 22:35

Streaming vidéo avec vlc

Message par dj3c1t »

http://nfalaise.free.fr/index.php?part= ... 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.
Avatar de l’utilisateur
dj3c1t
Messages : 1590
Inscription : 05 nov. 2005, 22:35

Re: Streaming vidéo avec vlc

Message par dj3c1t »

Ayé, j'ai réussi à faire un stream en ogg (qui encapsule le son en vorbis et l'image en theora) 8)

[MODE GEEK = ON]

coté PC :

Code : Tout sélectionner

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}}"
... 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 : Tout sélectionner

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}}"
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 : Tout sélectionner

<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>
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]
sacaboulons
Messages : 103
Inscription : 18 janv. 2006, 23:59

Re: Streaming vidéo avec vlc

Message par sacaboulons »

Là ya du gros geek :P
Avatar de l’utilisateur
dj3c1t
Messages : 1590
Inscription : 05 nov. 2005, 22:35

Re: Streaming vidéo avec vlc

Message par dj3c1t »

[MODE STAR TREK = ON]

Image

Bon, disons plutôt que... ça a tendance à marcher :mrgreen:
Mais coté relais, je me chope une foule de :

Code : Tout sélectionner

[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)
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]
sacaboulons
Messages : 103
Inscription : 18 janv. 2006, 23:59

Re: Streaming vidéo avec vlc

Message par sacaboulons »

dead?
Avatar de l’utilisateur
dj3c1t
Messages : 1590
Inscription : 05 nov. 2005, 22:35

Re: Streaming vidéo avec vlc

Message par dj3c1t »

ben... ça passe
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.
sacaboulons
Messages : 103
Inscription : 18 janv. 2006, 23:59

Re: Streaming vidéo avec vlc

Message par sacaboulons »

Et sinon le son fonctionne?
Avatar de l’utilisateur
dj3c1t
Messages : 1590
Inscription : 05 nov. 2005, 22:35

Re: Streaming vidéo avec vlc

Message par dj3c1t »

le son fonctionne.

pour le son, si on envoie juste le son, sans image, là, c'est beaucoup plus simple:

coté PC:

Code : Tout sélectionner

vlc -vvv <source...> --sout "#transcode{acodec=mp3,ab=128,channels=2}:duplicate{dst=std{access=udp,mux=ts,dst=xxx.xxx.xxx.xxx:12345}}"
coté relais:

Code : Tout sélectionner

vlc -vvv udp:@:12345 --sout "#duplicate{dst=std{access=http,mux=raw,dst=xxx.xxx.xxx.xxx:3131}}"
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é...
Répondre