Streaming vía RTSP o RTP en HTML5

Resuelto Elben Shira asked hace 15 años • 10 respuestas

Estoy creando una aplicación web que debería reproducir una transmisión RTSP/RTP desde un servidor http://lscube.org/projects/feng .

¿La etiqueta de vídeo/audio HTML5 es compatible con rtsp o rtp? Si no, ¿cuál sería la solución más sencilla? Quizás baje a un complemento VLC o algo así.

Elben Shira avatar Nov 15 '09 06:11 Elben Shira
Aceptado

Técnicamente 'Sí'

(pero no realmente...)

La etiqueta de HTML 5 <video>es independiente del protocolo, no le importa. Coloca el protocolo en el srcatributo como parte de la URL. P.ej:

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

o tal vez

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

Dicho esto, la implementación de la <video>etiqueta es específica del navegador. Dado que HTML 5 es temprano, espero que el soporte cambie con frecuencia (o la falta de soporte).

De la especificación HTML5 del W3C ( El elemento de video ):

Los agentes de usuario pueden admitir cualquier códec y formato contenedor de vídeo y audio.

Stu Thompson avatar Nov 15 '2009 09:11 Stu Thompson

Creo que el espíritu de la pregunta no fue realmente respondido. No, no puedes usar una etiqueta de video para reproducir transmisiones rtsp a partir de ahora. La otra respuesta con respecto al enlace al "nunca" del chico de Chromium es un poco engañosa ya que el hilo/respuesta vinculado no se refiere directamente a que Chrome reproduzca rtsp a través de la etiqueta de video. Lea todo el hilo vinculado, especialmente los comentarios al final y los enlaces a otros hilos.

La verdadera respuesta es esta: No, no puedes simplemente poner una etiqueta de video en una página HTML 5 y reproducir rtsp. Necesitas usar una biblioteca Javascript de algún tipo (a menos que quieras comenzar a reproducir cosas con reproductores flash y Silverlight) para reproducir video en tiempo real. {En mi humilde opinión} Al ritmo que avanza la discusión e implementación del video html 5, los diversos proveedores de estándares de video propietarios no están interesados ​​en ayudar a que esto avance, así que no cuenten con la prometida facilidad de uso de la etiqueta de video a menos que los fabricantes de navegadores encargarse de resolver el problema de alguna manera... repito, no es probable.{/En mi humilde opinión}

GolfARama avatar Jul 11 '2012 15:07 GolfARama

Esta es una pregunta antigua, pero tuve que hacerlo yo mismo recientemente y logré algo que funcionara (además de una respuesta como la mía me ahorraría algo de tiempo): Básicamente use ffmpeg para cambiar el contenedor a HLS, la mayoría de las cámaras IP transmiten h264 y algunas tipo básico de PCM, así que use algo como eso:

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

Luego use video.js con el complemento HLS. Esto reproducirá bien la transmisión en vivo. También hay un ejemplo de jsfiddle en el segundo enlace).

Nota: aunque este no es un soporte nativo, no requiere nada adicional en la interfaz del usuario.

Pawel K avatar Sep 26 '2016 08:09 Pawel K

Hay tres protocolos/tecnología de transmisión en HTML5:

Transmisión en vivo, baja latencia - WebRTC - Websocket

VOD y streaming en vivo, alta latencia - HLS

1.WebRTC

De hecho, WebRTC es SRTP (protocolo RTP seguro). Por lo tanto, podemos decir que la etiqueta de video admite RTP (SRTP) indirectamente a través de WebRTC.

Por lo tanto, para obtener transmisión RTP en su Chrome, Firefox u otro navegador HTML5, necesita un servidor WebRTC que entregue la transmisión SRTP al navegador.

2. Enchufe web

Está basado en TCP, pero con menor latencia que HLS. Nuevamente necesitas un servidor Websocket.

3. SHL

El protocolo de transmisión de alta latencia más popular para VOD (vídeo pregrabado).

ankitr avatar Sep 18 '2015 15:09 ankitr