Je construis une application Web qui devrait lire un flux RTSP / RTP à partir d'un serveur http://lscube.org/projects/feng .
La balise vidéo / audio HTML5 prend-elle en charge le rtsp ou le rtp? Sinon, quelle serait la solution la plus simple? Peut-être passer à un plugin VLC ou quelque chose comme ça.
Réponses:
Techniquement 'Oui'
(mais pas vraiment...)
La
<video>
balise HTML 5 est indépendante du protocole - cela ne fait rien. Vous placez le protocole dans l'src
attribut dans le cadre de l'URL. Par exemple:ou peut-être
Cela dit, l'implémentation de la
<video>
balise est spécifique au navigateur. Puisqu'il s'agit des débuts de HTML 5, je m'attends à des changements fréquents de support (ou à un manque de support).À partir de la spécification HTML5 du W3C (l' élément vidéo ):
la source
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
. Il semble que seuls les schémas HTTP [S] soient autorisés sur lesvideo
éléments.L'esprit de la question, je pense, n'a pas vraiment reçu de réponse. Non, vous ne pouvez pas utiliser une balise vidéo pour lire des flux rtsp à partir de maintenant. L'autre réponse concernant le lien vers "jamais" de Chromium guy est un peu trompeuse car le fil de discussion / réponse lié ne fait pas directement référence à Chrome jouant rtsp via la balise vidéo. Lisez l'intégralité du fil lié, en particulier les commentaires tout en bas et les liens vers d'autres fils.
La vraie réponse est la suivante: non, vous ne pouvez pas simplement mettre une balise vidéo sur une page html 5 et lire rtsp. Vous devez utiliser une bibliothèque Javascript (à moins que vous ne souhaitiez jouer avec des lecteurs flash et silverlight) pour lire des vidéos en streaming. {IMHO} Au rythme de la discussion et de la mise en œuvre de la vidéo html 5, les différents fournisseurs de normes vidéo propriétaires ne sont pas intéressés à aider à avancer, alors ne comptez pas la facilité d'utilisation promise de la balise vidéo à moins que les fabricants de navigateurs prendre sur eux de résoudre d'une manière ou d'une autre le problème ... encore une fois, peu probable. {/ IMHO}
la source
Ceci est une ancienne question, mais j'ai dû le faire moi-même récemment et j'ai réalisé quelque chose qui fonctionnait ainsi (en plus d'une réponse comme la mienne, cela me ferait gagner du temps): utilisez essentiellement ffmpeg pour changer le conteneur en HLS, la plupart du flux IPCams h264 et certains type de base de PCM, alors utilisez quelque chose comme ça:
Ensuite, utilisez video.js avec le plugin HLS Cela jouera bien en direct Il y a aussi un exemple jsfiddle sous le deuxième lien).
Remarque: bien que ce ne soit pas un support natif, il ne nécessite rien de plus sur l'interface utilisateur.
la source
ffmpeg -v info -rtsp_transport tcp -i rtsp://host:port/[sdp] -c:v copy -c:a copy -maxrate 400k -bufsize 1835k -pix_fmt yuv420p -flags -global_header -hls_time 10 -hls_list_size 6 -hls_wrap 10 -start_number 1 /var/www/html/test.m3u8
ffmpeg.exe -fflags nobuffer -rtsp_transport tcp -i rtsp://[SOURCE] -flags +cgop -g 30 -hls_flags delete_segments [DESTINATION]
Chrome n'implémentera jamais la prise en charge du streaming RTSP.
Au moins, pour reprendre les mots d'un développeur Chromium ici :
la source
Il existe trois protocoles / technologies de streaming en HTML5:
Diffusion en direct, faible latence - WebRTC - Websocket
VOD et diffusion en direct, latence élevée - HLS
1. WebRTC
En fait, WebRTC est SRTP (protocole RTP sécurisé). Ainsi, nous pouvons dire que la balise vidéo prend en charge RTP (SRTP) indirectement via WebRTC.
Par conséquent, pour obtenir le flux RTP sur votre navigateur Chrome, Firefox ou un autre navigateur HTML5, vous avez besoin d'un serveur WebRTC qui fournira le flux SRTP au navigateur.
2. Websocket
Il est basé sur TCP, mais avec une latence plus faible que HLS. Encore une fois, vous avez besoin d'un serveur Websocket.
3. HLS
Le protocole de streaming à latence élevée le plus populaire pour la VOD (vidéo pré-enregistrée).
la source
Avec VLC, je suis capable de transcoder un flux RTSP en direct (mpeg4) en un flux HTTP au format OGG (Vorbis / Theora). La qualité est médiocre mais la vidéo fonctionne dans Chrome 9. J'ai également testé avec un trancoding en WEBM (VP8) mais cela ne semble pas fonctionner (VLC a l'option mais je ne sais pas si c'est vraiment implémenté pour l'instant. .)
Le premier à avoir un document à ce sujet devrait nous en informer;)
la source
"C:\Program Files\VideoLAN\VLC\vlc.exe" -I dummy screen:// :screen-fps=16.000000 :screen-caching=100 :sout=#transcode{vcodec=theo,vb=800,scale=1,width=600,height=480,acodec=mp3}:http{mux=ogg,dst=127.0.0.1:8080/desktop.ogg} :no-sout-rtp-sap :no-sout-standard-sap :ttl=1 :sout-keep
- c'est la commande VLC qui diffuse votre entrée (par exemple, un périphérique de capture d'écran) vers un flux de sortie donné (par exemple 127.0.0.1:8080/desktop.ogg )<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
.my_ip:port
adresse et que je HTML5<video>
tag comme ceci:<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
.Mes observations concernant la balise vidéo HTML 5 et les flux rtsp (rtp) sont que cela ne fonctionne qu'avec konqueror (KDE 4.4.1, Phonon-backend défini sur GStreamer). Je n'ai que de la vidéo (pas d'audio) avec un flux H.264 / AAC RTSP (RTP).
Les flux de http://media.esof2010.org/ ne fonctionnaient pas avec konqueror (KDE 4.4.1, Phonon-backend défini sur GStreamer).
la source
Chrome n'implémente pas la prise en charge de la diffusion en continu RTSP. Un projet important pour le vérifier WebRTC.
"WebRTC est un projet gratuit et ouvert qui fournit aux navigateurs et aux applications mobiles des capacités de communication en temps réel (RTC) via de simples API"
Navigateurs pris en charge:
Chrome, Firefox et Opera.
Plateformes mobiles prises en charge:
Android et IOS
http://www.webrtc.org/
la source