Streaming tramite RTSP o RTP in HTML5

Sto creando un’app Web che dovrebbe riprodurre uno streaming RTSP / RTP da un server http://lscube.org/projects/feng .

Il tag video / audio HTML5 supporta il rtsp o il rtp? In caso contrario, quale sarebbe la soluzione più semplice? Magari scendi a un plugin VLC o qualcosa del genere.

Tecnicamente “Sì”

(ma non proprio …)

Il tag HTML 5 è agnostico del protocollo, a cui non importa. Metti il ​​protocollo nell’attributo src come parte dell’URL. Per esempio:

  

o forse

  

Detto questo, l’implementazione del tag è specifica per il browser. Dal momento che sono i primi tempi per HTML 5, mi aspetto un supporto di frequente cambiamento (o mancanza di supporto).

Dalla specifica HTML5 del W3C ( L’elemento video ):

I programmi utente possono supportare qualsiasi codec video e audio e formati contenitore

Lo spirito della domanda, penso, non è stato veramente risposto. No, non è ansible utilizzare un tag video per riprodurre i flussi rtsp al momento. L’altra risposta riguardante il collegamento a “Mai” di Chromium è un po ‘fuorviante in quanto la discussione / risposta collegata non si riferisce direttamente a Chrome che riproduce rtsp tramite il tag video. Leggi l’intero thread collegato, in particolare i commenti in fondo e link ad altri thread.

La vera risposta è questa: no, non puoi semplicemente mettere un tag video su una pagina html 5 e giocare a rtsp. È necessario utilizzare una libreria Javascript di qualche tipo (a meno che non si desideri giocare con i lettori flash e silverlight) per riprodurre video in streaming. {IMHO} Al ritmo della discussione e dell’attuazione del video in HTML 5, i vari fornitori di standard video proprietari non sono interessati ad aiutare questo passo avanti, quindi non contare sulla facilità promise di utilizzo del tag video a meno che i creatori del browser prendi su di sé per risolvere in qualche modo il problema … di nuovo, non è probabile. {/ IMHO}

Questa è una vecchia qustion, ma ho dovuto farlo da solo di recente e ho ottenuto qualcosa di utile (oltre a una risposta come la mia mi avrebbe risparmiato un po ‘di tempo): in pratica usa ffmpeg per cambiare il contenitore in HLS, la maggior parte del stream IPCams h264 e alcuni tipo base di PCM, quindi usa qualcosa del genere:

 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 

Quindi usa video.js con il plugin HLS. Riproduce bene lo streaming live. C’è anche un esempio di jsfiddle sotto il secondo link).

Nota: sebbene questo non sia un supporto nativo, non richiede nulla di aggiuntivo sul frontend dell’utente.

Chrome non implementerà mai lo streaming RTSP di supporto.

Almeno, nelle parole di uno sviluppatore Chromium qui :

non aggiungeremo mai il supporto per questo

Ci sono tre protocolli / tecnologia di streaming in HTML5:

Streaming live, bassa latenza – WebRTC – Websocket

VOD e live streaming, alta latenza – HLS

1. WebRTC

Infatti WebRTC è SRTP (protocollo RTP sicuro). Quindi possiamo dire che il tag video supporta RTP (SRTP) indirettamente tramite WebRTC.

Pertanto, per ottenere lo streaming RTP su Chrome, Firefox o un altro browser HTML5, è necessario un server WebRTC che invierà lo stream SRTP al browser.

2. Websocket

È basato su TCP, ma con una latenza inferiore rispetto a HLS. Di nuovo hai bisogno di un server Websocket.

3. HLS

Il più popolare protocollo di streaming ad alta latenza per VOD (video preregistrato).

Con VLC sono in grado di transcodificare un stream RTSP live (mpeg4) a un stream HTTP in un formato OGG (Vorbis / Theora). La qualità è scarsa ma il video funziona in Chrome 9. Ho anche provato con una trancodifica in WEBM (VP8) ma non sembra funzionare (VLC ha l’opzione ma non so se è davvero implementata per ora. .)

Il primo ad avere un documento su questo dovrebbe avvisarci;)

Le mie osservazioni riguardanti i tag video HTML 5 e rtsp (rtp) sono, che funziona solo con konqueror (KDE 4.4.1, Phonon-backend impostato su GStreamer). Ho ottenuto solo video (senza audio) con un stream H.264 / AAC RTSP (RTP).

Gli stream da http://media.esof2010.org/ non hanno funzionato con konqueror (KDE 4.4.1, Phonon-backend impostato su GStreamer).

Chrome non implementa il supporto per lo streaming RTSP. Un progetto importante per controllarlo WebRTC.

“WebRTC è un progetto aperto e gratuito che fornisce ai browser e alle applicazioni mobili funzionalità di Real-Time Communications (RTC) tramite semplici API”

Browser supportati:

Chrome, Firefox e Opera.

Piattaforms mobili supportate:

Android e IOS

http://www.webrtc.org/