Si bien los modelos propuestos en esta tesis son aplicables a sistemas de videoconferencia de diversas índoles, son los basados en la Web los que han motivado de alguna manera el proponerlos. Como se ha introducido anteriormente, el paso de la videoconferencia a la Web ha propiciado que el número de usuarios que hacen uso de ella aumente de forma radical. Y no sólo eso, si no que la posibilidad de acceder a aplicaciones y servicios de videoconferencia desde una gran variedad de dispositivos personales (ordenadores personales, teléfonos móviles, tabletas) hace que ese gran número de usuarios sea además variable e imprevisible. Y con esta variabilidad surge uno de los retos de esta investigación, la adaptabilidad dinámica a la demanda.
Por ello, y para poner el contexto al lector, parece necesario realizar un breve repaso por los sistemas de videoconferencia Web existentes en la actualidad. No sin antes describir la Web 2.0, concepto indispensable para el mencionado salto de las comunicaciones en tiempo real a los sistemas Web.
La Web 2.0
En los orígenes de la Web, los usuarios consumían contenidos en servicios unidireccionales. La mayoría de los portales que podíamos encontrar en Internet, servían páginas estáticas que ofrecían
2.1. VIDEOCONFERENCIA MULTIUSUARIO
una serie de contenidos actualizados de forma periódica por sus proveedores.
Con el paso de los años, estos servicios Web evolucionan de tal forma que en algunos portales comienza a haber un retorno por parte del usuario. La comunicación empieza a ser bidireccional de manera que los contenidos no son generados únicamente por los proveedores del servicio si no que los propios usuarios aportan los suyos. Empieza a concebirse entonces de una Web colaborativa creada por proveedores y usuarios.
En 2004 se dan las primeras referencias a esta nueva Web como la Web 2.0, con Tim O’Reilly [O’reilly 2007] como principal divulgador. Según [Andersen 2007] la Web 2.0 establece siete ideas fundamentales:
1. Producción Individual y contenido generado por usuarios: Los usuarios son los responsables de generar contenido, muchas veces de manera individual y en muchos casos sin necesidad de pasar por procesoseditoriales. Un ejemplo de este punto serían los blogs. 2. Domar el poder de la multitud: Se trata de aprovechar la colaboración para la generación
de mejores contenidos. El ejemplo típico en este sentido es la Wikipediai.
3. Datos a una escala épica: En la sociedad de la información en que vivimos, los datos son cada vez más importantes. En su artículo original O’Reilly se refiere a empresas como Google y al valor que obtienen con el manejo de los datos. Gran parte de estos datos se generarán por el uso de los servicios de Internet.
4. Arquitectura de participación: Los servicios creados deberán ser diseñados de manera que puedan mejorar y facilitar la participación masiva de usuarios. En consecuencia, los servicios serán mejores a medida que más usuarios los utilicen.
5. Efecto red: La Web está formada por nodos interconectados (páginas HTML enlazadas) y está construida sobre tecnologías de comunicación y protocolos de Internet. Hay que tener en cuenta por un lado la red tecnológica establecida que da cabida a miles de millones de usuarios y por otro, las conexiones establecidas entre usuarios y entre los usuarios y los contenidos. Un ejemplo de cómo entender e interpretar estas conexiones es el de la Larga Cola (Long Tail), descrito en [Anderson 2006].
6. Orientación hacia lo abierto: La Web siempre ha tenido una fuerte tradición hacia lo abierto y la libre circulación de información. En la Web 2.0 esto sigue presente: licencias abiertas, estándares, software libre, etc. Esto permite la colaboración y la mejora colectiva tanto de los contenidos como de las herramientas para crearlos y distribuirlos.
Teniendo en cuenta estas ideas podríamos decir que el concepto de la nueva Web se refiere más a un cambio social y en el modo de uso de las herramientas ya existentes. Sin embargo, para habilitar esta nueva forma de interacción por parte del usuario se necesitan también avances tecnológicos no existentes hasta entonces. Por lo tanto, el concepto de Web 2.0 implica también una serie de novedades técnicas en la Web.
Estas novedades técnicas están presentes tanto en los servidores Web como en los navegadores [Fraternali 2010], cada vez más complejos. En este momento se pasa a hablar de aplicaciones o servicios Web en lugar de simples páginas Web, más referidas a las antiguas páginas estáticas. Se crea el concepto de Aplicaciones Ricas de Internet o RIAs (Rich Internet Applications), que necesitan de tecnologías como AJAX (Asynchronous JavaScript an XML) para hacer peticiones asíncronas permitiendo dinamizar las páginas web y de multitud de soluciones basadas enplug- inso complementos del navegador.
Una de las funcionalidades que habilitan estas nuevas tecnologías es el tratamiento de contenido multimedia en los navegadores. En un primer momento reproducción de canciones y vídeos pero más adelante captura de imágenes y transmisión de contenidos en tiempo real. Es aquí donde parte nuestro escenario y las dos tecnologías Web clave implicadas, Flash y WebRTC.
Adobe Flash Player
Adobe Flash es un conjunto de aplicaciones multimedia desarrolladas y distribuidas por Adobe Systems desde 1996. Se trata de una plataforma RIA propietaria para añadir funcionalidades interactivas a las aplicaciones web tales como animaciones, vídeo, audio, etc. Flash Player tiene soporte para un lenguaje de programación interpretado conocido como ActionScript basado en el estándar ECMAScript. Desde su origen ActionScript ha pasado de ser un lenguaje muy básico a un lenguaje avanzado con soporte de programación orientada a objetos, comparable en funciones y uso al lenguaje JavaScript.
Originalmente creado para mostrar animaciones vectoriales en 2 dimensiones, ha pasado a utilizarse para crear aplicaciones Web que incluyen flujo de audio y video e interactividad. La
2.1. VIDEOCONFERENCIA MULTIUSUARIO
utilización de gráficos vectoriales le permite disminuir el ancho de banda necesario para la transmisión y, por ende, el tiempo de carga de la aplicación.
Flash utiliza el protocolo RTMP tanto para el transporte de los flujos como para el envío de mensajes. La señalización viene implícita en la plataforma Flash, con un esquema de publicación y suscripción en lugar de llamadas propiamente dichas.
El formato de vídeo utilizado por Flash es FLV (Flash Video), un formato de archivo principalmente diseñado y utilizado para la transmisión de video y audio a través de Internet. Generalmente, la codificación utilizada es una variante de H.263 denominada Sorenson Spark. Pero a partir de la versión 8 existe la posibilidad de usar On2 VP6 permitiendo una mayor calidad con menor ancho de banda consumido. El contra es que requiere una mayor potencia de proceso. Además, desde la versión 9.3 Flash Player permite la reproducción (no la codificación) de H.264, principalmente para mejorar la calidad en los sistemas de vídeo bajo demanda que están floreciendo en Internet.
Para el audio lo más común es utlizar MP3 con la excepción del caso de captura de audio por medio de un micrófono durante la ejecución del Flash Player en cuyo caso existen dos opciones de codificación: Nellymoser o Speex. A partir de 9.3 se se incluyó AAC junto a H.264.
Adobe Flash ha venido utilizándose de forma mayoritaria en las aplicaciones de comunicación en tiempo real para la transmisión de vídeo y audio hasta la aparición de HTML5 y WebRTC.
WebRTC
WebRTC [Bergkvist 2012, Loreto 2012] es un estándar en desarrollo por el Internet Engineering Task Force (IETF) y el World Wide Web Consortium (W3C) que pretende definir un framework, protocolos e interfaces de programación que proveerán comunicaciones interactivas y en tiempo real de audio, video y datos a las aplicaciones en los navegadores Web.
Como se explica en [Jennings 2013], la arquitectura en las aplicaciones WebRTC son peer-to- peer de tal forma que únicamente es necesario un servidor externo a los navegadores de los clientes para establecer la comunicación intercambiando los mensajes de señalización al comienzo de la misma. Los APIs de los que consta el protocolo son los siguientes:
• GetUserMedia: se utiliza para acceder a los recursos multimedia del usuario como su cámara o su micrófono. El resultado será un MediaStream.
• MediaStream: es un conjunto de pistas de flujos de audio o vídeo con los recursos multimedia del usuario.
• RTCPeerConnection: representa un canal de conexión con otro cliente. Un cliente añade a un RTCPeerConnection uno o más MediaStreams para compartirlos con el otro cliente. Al añadir uno de estos MediaStreams a la conexión comienza la negociación con el otro cliente mediante la cual se negocian ciertos parámetros de la sesión como el formato de los datos (códecs de audio y vídeo), la resolución o el ancho de banda. Esta negociación debe realizarse mediante medios externos al protocolo y consiste en el intercambio de unos mensajes SDP del tipooffer/answer.
El protocolo implementa ICE para poder realizar la conexión en escenarios en los que los clientes se encuentren tras un NAT. Una vez establecida la conexión el transporte de datos se realiza sobre SRTP [Baugher 2004], la versión segura de RTP y gracias a RTCP los clientes pueden obtener feedback sobre el estado de la conexión, las posibles pérdidas, etc. Además para la gestión de claves de SRTP se utiliza el protocolo DTLS-SRTP, una extensión de DTLS.
En la Figura 2.2 vemos la arquitectura definida por el estándar. En estos momentos dicho estándar se encuentra cerca de la versión 1.0. Sin embargo está en constante evolución por lo que podría sufrir ligeras modificaciones sobre las características expuestas en este documento.