web-dev-qa-db-fra.com

Streaming via RTSP ou RTP en HTML5

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 protocole rtsp ou rtp? Si non, quelle serait la solution la plus simple? Peut-être tomber sur un plugin VLC ou quelque chose comme ça.

143
Elben Shira

Techniquement 'oui'

(mais pas vraiment ...)

La balise <video> de HTML 5 est agnostique selon les protocoles - cela n’a aucune importance. Vous placez le protocole dans l'attribut src dans le cadre de l'URL. Par exemple.:

<video src="rtp://myserver.com/path/to/stream">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

ou peut-être

<video src="http://myserver.com:1935/path/to/stream/myPlaylist.m3u8">
    Your browser does not support the VIDEO tag and/or RTP streams.
</video>

Cela dit, la mise en œuvre de la balise <video> est spécifique au navigateur. Étant donné que HTML 5 en est à ses débuts, je m'attends à ce que le support (ou au manque de support) change fréquemment.

A partir des spécifications HTML5 du W3C ( L'élément video ):

Les agents utilisateurs peuvent prendre en charge tous les codecs vidéo et audio et les formats de conteneur.

88
Stu Thompson

Je pense que l’esprit de la question n’a pas vraiment été répondu. Non, vous ne pouvez pas utiliser une balise video pour lire les flux rtsp à partir de maintenant. L'autre réponse concernant le lien "jamais" du type Chromium est un peu trompeuse, car le fil conducteur/la réponse ne fait pas directement référence à Chrome jouer à rtsp via la balise video. Lisez l'intégralité du fil de discussion lié, en particulier les commentaires tout en bas et les liens vers d'autres threads.

La vraie réponse est la suivante: non, vous ne pouvez pas simplement mettre une balise video sur une page HTML 5 et lire rtsp. Vous devez utiliser une sorte de bibliothèque Javascript (à moins que vous ne vouliez 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 par cette avancée. Ne comptez donc pas sur la facilité d'utilisation promise de la balise vidéo, à moins que les concepteurs de navigateur prendre sur eux de résoudre le problème d'une manière ou d'une autre ... encore une fois, peu probable. {/ IMHO}

52
GolfARama

C’est une vieille qustion, mais j’ai dû le faire moi-même récemment et j’ai réalisé quelque chose qui fonctionne (donc une réponse comme la mienne me ferait gagner un peu de temps): utilisez ffmpeg pour changer le conteneur en HLS, la plupart des IPCams stream h264 et quelques-uns. type de base de PCM, utilisez donc quelque chose comme ça:

ffmpeg -v info -i rtsp://ip:port/h264.sdp -c:v copy -c:a copy -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

Ensuite, utilisez video.js avec plugin HLS Cela permettra de lire le flux en direct de manière agréable. Il existe également un exemple jsfiddle sous le deuxième lien).

Remarque: bien qu’il ne s’agisse pas d’un support natif, il n’exige rien de plus en interface utilisateur.

25
Pawel K

Chrome ne mettra jamais en œuvre le streaming RTSP.

Au moins, comme le dit un développeur Chromium ici :

on ne va jamais ajouter un soutien pour cette

19
janesconference

Il existe trois protocoles/technologies de diffusion en continu en HTML5:

Diffusion en direct, faible temps de latence - WebRTC - Websocket

VOD et streaming en direct, latence élevée - HLS

1. WebRTC

En fait, WebRTC est SRTP (protocole sécurisé RTP.). Nous pouvons donc dire que la balise vidéo prend en charge le protocole 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 inférieure à celle de HLS. Encore une fois, vous avez besoin d'un serveur Websocket.

. HLS

Protocole de diffusion en continu à latence élevée pour la vidéo à la demande (vidéo préenregistrée).

14
ankitr

Avec VLC, je peux convertir 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 sous Chrome 9. J'ai également testé le transcriptement dans WEBM (VP8), mais cela ne semble pas fonctionner (les VLC ont l'option, mais je ne sais pas si c'est vraiment implémenté pour l'instant ..)

Le premier à avoir un doc à ce sujet devrait nous en informer;)

8
molokoloco

Chrome n'implémente pas le streaming RTSP. Un projet important pour vérifier cela WebRTC.

"WebRTC est un projet gratuit et ouvert qui fournit aux navigateurs et aux applications mobiles des fonctionnalité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/

1
vrbsm

Mes observations concernant les balises 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).

1
Renegah