web-dev-qa-db-fra.com

Comment utiliser les flux en direct VLC avec la vidéo HTML5?

J'ai essayé HTTP Ogg/Theora et fonctionne bien avec Chrome mais pas avec Firefox 7.

Configuration VLC:

Pour les tests, j'ai diffusé le bureau en streaming à l'aide de la configuration de ligne de commande vlc suivante:

écran vlc.exe: //: screen-fps = 30: screen-cacheing = 100: sout = # transcode {vcodec = theo, vb = 800, scale = 1, width = 800, height = 600, acodec = none}: http {mux = ogg, dst =: 8181/desktop}: no-sout-rtp-sap: no-sout-standard-sap: ttl = 1: sout-keep

configuration des balises vidéo HTML5:

<video id="video" src="http://my_Host_name:8181/desktop" type="video/ogg; codecs=theora" autoplay="autoplay"/>

Des idées?

40
Bruno Santos

J'ai eu du mal avec cela pendant un certain temps et j'ai pu vérifier que Ogg/Theora fonctionne très bien dans Firefox 7, Nightly 10 et Opera Next.

Tout fonctionne désormais également sur Google Chrome. Le problème que j'ai eu avec Chrome était que la dernière version de Chrome in XP n'a plus besoin du '--enable) -webgl 'instruction passée dans la ligne de commande. La seule entrée de ligne de commande requise dans XP est' --ignore-gpu-blacklist 'car les GPU sont sur liste noire dans XP.

De plus, j'ai pu vérifier que Chrome fonctionne très bien avec les flux Web-m/VP8/Vorbis. Opera et Firefox doivent encore le prendre en charge).

Les principaux problèmes que j'ai rencontrés étaient:

1 - Chargement de la page: Si vous chargez votre page à partir de votre système de fichiers plutôt qu'à partir d'un navigateur Web, la vidéo ne sera pas affichée (aucune vidéo, vlc ou fichier).

Pour y remédier, assurez-vous simplement de charger votre contenu à partir d'un serveur Web.

2 - Streaming en direct/en temps réel: VLC a été utilisé et pour le faire fonctionner, j'ai dû naviguer dans les restrictions de sécurité WebGL/HTML5 Video. Il arrive que des flux vidéo qui ne proviennent pas du même serveur Web et du même contexte ou sous-contexte Web ne soient pas lus en raison de restrictions de sécurité.

Pour résoudre ce problème, connectez simplement votre serveur d'applications à un serveur Web Apache et configurez votre flux VLC pour qu'il se trouve dans un sous-contexte Web à partir de vos pages Web chargées. Par exemple, dans Apache 2.2, activez le proxy mod et ajoutez les lignes suivantes à votre fichier httpd.conf:

# Mod_proxy Module
ProxyReceiveBufferSize 16384

ProxyRequests On
ProxyVia On
ProxyPreserveHost On

<Proxy *>
    Order deny,allow
    Allow from all
</Proxy>

# VLC server stream
ProxyPass /desktop/video/stream.ogg http://vlc_streaming_Host:8181/desktop.ogg
ProxyPassReverse /desktop/video/stream.ogg http://vlc_streaming_Host:8181/desktop.ogg

# If content is on another server (JBoss, Spring, etc...) then uncomment next lines
#ProxyPass /desktop http://server_content_Host:8080/streamer
#ProxyPassReverse /desktop http://server_content_Host:8080/streamer

Si vous utilisez également Apache pour stocker votre contenu, alors, et sur la base de l'exemple ci-dessus, placez simplement vos pages html dans un répertoire nommé "bureau".

Conclusion jusqu'à présent: Même si les spécifications vidéo HTML5 offrent de la place pour les flux, jusqu'à présent ma conclusion est que la vidéo HTML5 n'est pas presque prête pour la diffusion en direct. Dans mes expériences, la balise vidéo serait toujours mise en mémoire tampon et je ne pouvais pas trouver un moyen de la désactiver et cela finit par provoquer un retard d'au moins 5 à 8 secondes derrière.

Donc, je suppose que pour l'instant, les solutions basées sur Flash et RTMP sont encore le chemin à parcourir.

35
Bruno Santos