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 video / audio HTML5 es compatible con rtsp o rtp? Si no, ¿cuál sería la solución más fácil? Quizás vaya a un complemento VLC o algo así.
Respuestas:
Técnicamente 'Sí'
(pero no realmente...)
La
<video>
etiqueta de HTML 5 es independiente del protocolo, no le importa. Coloca el protocolo en elsrc
atributo como parte de la URL. P.ej:o tal vez
Dicho esto, la implementación de la
<video>
etiqueta es específica del navegador. Dado que es temprano para HTML 5, espero que cambie el soporte con frecuencia (o falta de soporte).De la especificación HTML5 del W3C ( El elemento de video ):
fuente
GET rtp://239.255.0.1:6970 net::ERR_UNKNOWN_URL_SCHEME
. Parece que solo los esquemas HTTP [S] están permitidos en losvideo
elementos.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 al "nunca" del chico Chromium es un poco engañoso ya que el hilo / respuesta vinculado no se refiere directamente a Chrome jugando rtsp a través de la etiqueta de video. Lea todo el hilo vinculado, especialmente los comentarios en la parte inferior 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 jugar rtsp. Debe usar una biblioteca de JavaScript de algún tipo (a menos que quiera jugar cosas con reproductores flash y silverlight) para reproducir videos en tiempo real. {IMHO} A la velocidad de la discusión y la implementación del video html 5, los diversos proveedores de estándares de video patentados no están interesados en ayudar a avanzar, así que no cuente con la prometida facilidad de uso de la etiqueta de video a menos que los fabricantes de navegadores se encargan de resolver de alguna manera el problema ... de nuevo, no es probable. {/ IMHO}
fuente
Esta es una pregunta anterior, 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 parte del flujo de IPCams h264 y algunos tipo básico de PCM, así que usa algo así:
Luego use video.js con el complemento HLS Esto reproducirá la transmisión en vivo muy bien 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 de usuario.
fuente
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 nunca implementará el soporte de transmisión RTSP.
Al menos, en palabras de un desarrollador de Chromium aquí :
fuente
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 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 la transmisión RTP en su navegador Chrome, Firefox u otro navegador HTML5, necesita un servidor WebRTC que entregará la transmisión SRTP al navegador.
2. Websocket
Está basado en TCP, pero con una latencia más baja que HLS. Nuevamente necesita un servidor Websocket.
3. HLS
El protocolo de transmisión de alta latencia más popular para VOD (video pregrabado).
fuente
Con VLC puedo transcodificar una transmisión RTSP en vivo (mpeg4) a una transmisión HTTP en formato OGG (Vorbis / Theora). La calidad es pobre, pero el video funciona en Chrome 9. También lo he probado con una transcodificació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;)
fuente
"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
- este es el comando VLC que transmite su entrada (por ejemplo, dispositivo de captura de pantalla) a una secuencia de salida dada (por ejemplo, 127.0.0.1:8080/desktop.ogg )<video id="video" src="http://localhost:8080/desktop.ogg" autoplay="autoplay">
.my_ip:port
dirección y de lo que solía HTML5<video>
etiqueta de la siguiente manera:<video width="640"><source src="http://my_ip:port/test" type="video/ogg">HTML5 not supported</video>
.Mis observaciones con respecto a la etiqueta de video HTML 5 y las transmisiones rtsp (rtp) son que solo funciona con konqueror (KDE 4.4.1, Phonon-backend configurado en 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 en GStreamer).
fuente
Chrome no implementa soporte de transmisión RTSP. Un proyecto importante para comprobarlo WebRTC.
"WebRTC es un proyecto abierto y gratuito que proporciona navegadores y aplicaciones móviles con capacidades de comunicaciones en tiempo real (RTC) a través de API simples"
Navegadores compatibles:
Chrome, Firefox y Opera.
Plataformas móviles compatibles:
Android e iOS
http://www.webrtc.org/
fuente