[Jderobot] Streaming de Video en browsers con HTML5
Oscar Garcia
oscar.robotica en linaresdigital.com
Vie Jul 12 12:03:48 CEST 2013
El 12/07/2013 10:30, Roberto Calvo escribió:
> Mirando diferentes maneras para reproducir un streaming de vídeo en un
> browser con HTML5 sin necesidad de plugins externos, veo que está
> complicado.
>
> En principio los formatos de streaming y codecs de video no son parte de
> la estandarización de HTML5, aunque viendo el panorama están en ello. Se
> comenta que MPEG o el nuevo MPEG-DASH [1] son los candidatos. MPEG-DASH
> es similar al HLS de Apple.
Buenos días.
Yo he tratado de poner en marcha HLS en nuestro servidor de streaming
(basado en flussonic) y no he conseguido configurarlo para streaming
online (pero sí offline, en vídeos estáticos en disco).
Aún así os recuerdo que eso incrementa enormemente la latencia en el
streaming debido a que debe codificar secuencias completas, dividirlas
en segmentos, cada uno en un bitrate diferente y luego generar el
archivo con los índices a cada parte. Es decir, veo difícil aplicar HLS
a streaming en tiempo real para jderobot (por ejemplo).
> He preguntado a varios colegas que trabajan en sistemas de contenidos
> audio-visuales y todos en sus sistemas tienen plugins para los
> navegadores porque es imposible, de momento, reproducir el mismo
> streaming con el tag video de HTML5.
Nosotros optamos y pasado por varias soluciones, cuando usábamos windows
media server usábamos windows media player en el navegador del cliente
para reproducir el streaming. No funcionaba bien en Linux e incluso
algunas veces en windows tampoco (dependiendo del navegador y otros
detalles que ya no recuerdo).
Hubo un intervalo de tiempo que apostamos por icecast2 y theora, pero el
reproductor java que usábamos ponía la CPU de los equipos antiguos al
100% y la calidad de imagen no era buena si no había correspondencia de
pixel 1:1 entre el vídeo y el tamaño del applet java.
Con la llegada de flussonic a nuestro servicio empezamos a usar un
reproductor en flash. Desde entonces todo va como la seda en cuanto al
streaming de vídeo, se puede cambiar el tamaño del reproductor, poner a
pantalla completa, etc... aunque no hemos conseguido hacer streaming en
vivo usando bitrate dinámico (HLS).
> Creo que Daniel también andaba o había mirado esto ¿llegaste a alguna
> otra conclusión?
Yo también he estado con el tema y en mi caso he optado para mis pruebas
por usar MJPEG. A diferencia de MPEG no es necesario codificar una serie
de fotogramas completos antes de poder empezar a enviar datos por el
canal, por cada fotograma se envía por la conexión dicho fotograma
codificado en JPEG y éste es recibido casi de inmediato por el otro
extremo de la comunicación (el navegador web).
Hay diferentes tipos de fotogramas en MPEG, fotogramas completos,
fotogramas diferenciales (entre el fotograma actual y el anterior) y
fotogramas diferenciales bidireccionales (hacia delante y hacia atrás),
por lo que no se puede dar salida de una secuencia hasta que no se
genere el próximo fotograma completo.
Esto me suena que ya lo he escrito en esta lista o en alguna
conversación con José María.
Estos fueron los experimentos que realicé:
http://www.youtube.com/watch?v=3UHwSxOfxqw
Uso un navegador web normal para visualizar el streaming. Principalmente
hay que destacar la baja latencia y número de imágenes por segundo del
vídeo comparado con cameraserver:
http://www.youtube.com/watch?v=_d_8pzFQOZ4
Un saludo.
More information about the Jde-developers
mailing list