Estoy creando una aplicación web que debería reproducir una secuencia RTSP/RTP desde un servidor http://lscube.org/projects/feng.
¿La etiqueta de video/audio HTML5 es compatible con rtsp o rtp? Si no, ¿cuál sería la solución más fácil? Tal vez caer a un plugin VLC o algo así.
(pero no realmente ...)
La etiqueta <video>
de HTML 5 es agnóstica al protocolo, no le importa. Coloque el protocolo en el atributo src
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 etiqueta <video>
es específica del navegador. Dado que es muy pronto para HTML 5, espero que cambie frecuentemente el soporte (o la falta de soporte).
De la especificación HTML5 del W3C ( El elemento de video ):
Los agentes de usuario pueden admitir cualquier códecs de video y audio y formatos de contenedor
El espíritu de la pregunta, creo, no fue realmente respondido. No, no puede usar una etiqueta de video para reproducir transmisiones rtsp a partir de ahora. La otra respuesta con respecto al enlace del "nunca" de Chromium guy es un poco engañosa, ya que el hilo/respuesta vinculado no se refiere directamente a Chrome que reproduce rtsp a través de la etiqueta de video. Lea todo el hilo vinculado, especialmente los comentarios en la parte inferior y enlaces a otros hilos.
La respuesta real es la siguiente: No, no puede simplemente colocar una etiqueta de video en una página html 5 y reproducir rtsp. Necesitas usar una biblioteca de Javascript de algún tipo (a menos que quieras jugar con los reproductores flash y silverlight) para reproducir videos en streaming. {IMHO} A la velocidad de la discusión y la implementación del video html 5, los distintos proveedores de estándares de video propietarios no están interesados en ayudar a avanzar, así que no cuente con la facilidad de uso prometida de la etiqueta de video a menos que los fabricantes del navegador encargarse de resolver el problema ... de nuevo, no es probable. {/ IMHO}
Esta es una versión antigua, pero tuve que hacerlo recientemente y logré algo trabajando así (además de que la 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 transmisiones de IPCams h264 y algunas tipo básico de PCM, así que usa 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 with HLS plugin Esto reproducirá la transmisión en vivo muy bien También hay un ejemplo de jsfiddle en el segundo enlace).
Nota: aunque esto no es un soporte nativo, no requiere nada extra en la interfaz del usuario.
Chrome nunca implementará soporte de transmisión RTSP.
Al menos, en palabras de un desarrollador de Chromium aquí :
nunca vamos a agregar soporte para esto
Hay tres protocolos/tecnología de transmisión en HTML5:
Transmisión en vivo, baja latencia - WebRTC - Websocket
VOD y transmisión en vivo, alta latencia - HLS
1. WebRTC
De hecho, WebRTC es SRTP (protocolo seguro [RTP). Por lo tanto, podemos decir que la etiqueta de video admite RTP (SRTP) indirectamente a través de WebRTC.
Por lo tanto, para obtener RTP transmisión en su Chrome, Firefox u otro navegador HTML5, necesita un servidor WebRTC que entregará la transmisión SRTP al navegador.
2. Websocket
Se basa en TCP, pero con menor latencia que HLS. De nuevo necesitas un servidor websocket.
3. HLS
El protocolo de transmisión de alta latencia más popular para VOD (video pregrabado).
Con VLC puedo transcodificar un flujo RTSP en vivo (mpeg4) a un flujo HTTP en un formato OGG (Vorbis/Theora). La calidad es pobre, pero el video funciona en Chrome 9. También he probado con una codificación en WEBM (VP8) pero parece que no funciona (VLC tiene la opción, pero no sé si realmente está implementado por ahora). .)
El primero en tener un documento sobre esto debe notificarnos;)
Chrome no implementa soporte de transmisión RTSP. Un proyecto importante para comprobarlo webRTC.
"WebRTC es un proyecto abierto y gratuito que proporciona a los navegadores y aplicaciones móviles capacidades de comunicación en tiempo real (RTC) a través de API simples"
Navegadores compatibles:
Chrome, Firefox y Opera.
Plataformas móviles compatibles:
Android y IOS
Mis observaciones con respecto a la etiqueta de video HTML 5 y las secuencias rtsp (rtp) son que solo funciona con konqueror (KDE 4.4.1, Phonon-backend configurado a GStreamer). Solo obtuve video (sin audio) con una transmisión H.264/AAC RTSP (RTP).
Las transmisiones de http://media.esof2010.org/ no funcionaron con konqueror (KDE 4.4.1, Phonon-backend configurado para GStreamer).