scieee AI-readable full text Open interactive document viewer

Repositorio Institucional de Documentos

Abstract

El trabajo llevado a cabo en este proyecto nace de la necesidad que surge en una empresa de ampliar su catálogo de productos. Estos están centralizados en la visualización de contenidos bajo demanda en hoteles y hospitales. Estos contenidos hasta ahora eran suministrados únicamente por la propia empresa, por lo que fue interesante aislar los contenidos multimedia y los servicios de streaming, y dotar a los clientes que compraban el producto de otra aplicación que permitiera la ingesta de contenidos en el sistema. Se realiza un estudio exhaustivo de requisitos entre los que destacan la ingesta de contenidos en diferentes formatos, la compatibilidad de estos con los reproductores STB’s disponibles en la empresa y el control total sobre estos y sus respectivos servicios de streaming. Encaja a la perfección realizar una aplicación Web para el manager, utilizando tecnologías PHP y JavaScript. Esta será montada sobre un entorno Linux y accesible desde cualquier navegador Web conectado a La Red. Se han utilizado herramientas ya disponibles en la empresa para la realización de la aplicación como puede ser el servidor de vídeos o de tráilers, adaptándolos a las nuevas necesidades. Para que todos los contenidos que se alojan en el servidor sean compatibles con los reproductores disponibles, el sistema se debe encargar de transcodificarlos en el momento de la inserción, lo cual se realiza a través de un programa externo de libre distribución. Toda la información acerca de los contenidos se encuentra recogida en la base de datos del sistema, la cual es consultada y modificada por este en las acciones de consulta y edición de los contenidos respectivamente. Se han realizado pruebas exhaustivas del funcionamiento de la aplicación y de la ingesta de contenidos de diferentes formatos al servidor con resultado favorable en los formatos más comunes y la mayoría de los menos comunes. Roig Ramírez, Fernando José; Roy Golet, Carlos

Full text

Proyecto Fin de Carrera Ingeniería en Informática Curso 2009-2010 Diseño e Implementación de un Servidor de Contenidos multimedia de Altas prestaciones Fernando José Roig Ramírez Director: Carlos Roy Golet Ponente: Ignacio Martínez Ruiz Departamento de Ingeniería Electrónica y Comunicaciones Centro Politécnico Superior Universidad de Zaragoza Septiembre 2010 2 3 A mis padres y hermana. 4 5 Diseño e Implementación de un Servidor de Contenidos multimedia de Altas prestaciones RESUMEN El trabajo llevado a cabo en este proyecto nace de la necesidad que surge en una empresa de ampliar su catálogo de productos. Estos están centralizados en la visualización de contenidos bajo demanda en hoteles y hospitales. Estos contenidos hasta ahora eran suministrados únicamente por la propia empresa, por lo que fue interesante aislar los contenidos multimedia y los servicios de streaming, y dotar a los clientes que compraban el producto de otra aplicación que permitiera la ingesta de contenidos en el sistema. Se realiza un estudio exhaustivo de requisitos entre los que destacan la ingesta de contenidos en diferentes formatos, la compatibilidad de estos con los reproductores STB’s disponibles en la empresa y el control total sobre estos y sus respectivos servicios de streaming. Encaja a la perfección realizar una aplicación Web para el manager, utilizando tecnologías PHP y JavaScript. Esta será montada sobre un entorno Linux y accesible desde cualquier navegador Web conectado a La Red. Se han utilizado herramientas ya disponibles en la empresa para la realización de la aplicación como puede ser el servidor de vídeos o de tráilers, adaptándolos a las nuevas necesidades. Para que todos los contenidos que se alojan en el servidor sean compatibles con los reproductores disponibles, el sistema se debe encargar de transcodificarlos en el momento de la inserción, lo cual se realiza a través de un programa externo de libre distribución. Toda la información acerca de los contenidos se encuentra recogida en la base de datos del sistema, la cual es consultada y modificada por este en las acciones de consulta y edición de los contenidos respectivamente. Se han realizado pruebas exhaustivas del funcionamiento de la aplicación y de la ingesta de contenidos de diferentes formatos al servidor con resultado favorable en los formatos más comunes y la mayoría de los menos comunes. 6 7 Acrónimos y abreviaturas A.P.I. - Application Programming Interface AES – Advanced Encryption Standard ASF – Advanced Streaming Format AVI – Audio Vídeo Interleave BD – Base de Datos BMP – Bit Mapped Picture BSD – Berkeley Software Distribution CGI – Common Gateway Interface CPU – Central Processing Unit CSS – Cascading Style Sheets DB – Data Base DFD – Diagrama de Flujo de Datos E.S. – Entertainment Solutions Fig. – Figura FPS – Frames per Second GB – GigaBytes Gbps – Gigabits per second GNU – GNU is Not Unix HD – High Definition HTML – HyperText Markup Language HTTP – Hypertext Transfer Protocol I18N – Internacionalización ID – Identificador IP – Internet Protocol ISO – Infrared Space Observatory JPEG – Joint Photographic Experts Group KB – Kilo Bytes LAN – Local Area Network LINUX – Linux Is Not Unix Logo – Logotipo MB – MegaBytes Mbps – Megabits per second MD5 – Message-Digest Algorithm 5 Mhz – Megahertzios MP3 – MPEG-1 Audio Layer 3 MPEG – Moving Pictures Experts Group Ms – Milisegundos P.C. – Personal Computer PAL – Phase Alternating Line PFC – Proyecto Final de Carrera PHP – PHP Hypertext Pre-processor PNG – Portable Network Graphics RAM – Random Access Memory RTCP – Real Time Control Protocol RTP – Real Time Protocol RTSP – Real Time Streaming Protocol S.O. – Sistema Operativo S.T.B. – Set-top Box SD – Standard Definition 8 SQL – Structured Query Language TB – Terabits TCP – Transmission Control Protocol Telnet – TELecommunication NETwork TIC – Tecnologías de la Información y Telecomunicaciones TS – Transport Stream TV – Television UDP – User Datagram Protocol WAB – WAVEform audio format WLAN – Wireless Local Area Network WMA – Windows Media Audio WMV – Windows Media Vídeo WWW – World Wide Web 9 Índice 1. INTRODUCCIÓN...........................................................................................................15 1.1 Estructura de la memoria.....................................................................................15 1.2 Soluciones E.S....................................................................................................15 1.3 Objetivos y Resumen del Proyecto......................................................................16 1.4 Planificación de Tareas........................................................................................17 2. ESTADO DEL ARTE......................................................................................................19 2.1 El concepto On Demand......................................................................................19 2.2 Contenidos Multimedia........................................................................................19 2.3 Tecnologías de streaming....................................................................................20 2.4 Reproductor de contenidos..................................................................................21 2.5 Formato de contenidos multimedia......................................................................22 2.6 Encriptación de contenidos..................................................................................24 3. ANÁLISIS DEL SISTEMA..............................................................................................25 3.1 Catálogo de Requisitos........................................................................................25 3.1.1 Requisitos Funcionales......................................................................................25 3.1.2 Requisitos No Funcionales................................................................................28 4. DISEÑO E IMPLEMENTACIÓN.....................................................................................31 4.1 Tecnologías/herramientas....................................................................................32 4.1.1 Sistema Operativo del servidor..........................................................................32 4.1.2 Base de Datos...................................................................................................32 4.1.3 Diseño de la base de datos...............................................................................32 4.1.4 Servidor de vídeos.............................................................................................33 4.1.5 Servidor de tráilers.............................................................................................35 4.1.6 Servidor de música............................................................................................36 4.1.7 Procesado de vídeo y música............................................................................36 4.2 Gestión del servidor.............................................................................................38 4.2.1 Inserción y catalogación de contenidos en el sistema.......................................38 4.2.2 API.....................................................................................................................40 4.2.3 Log del sistema..................................................................................................41 4.2.4 Gestión de usuarios...........................................................................................42 4.2.5 Configuración del sistema .................................................................................42 4.2.6 Grabación de contenidos...................................................................................42 4.2.7 Selección de idioma...........................................................................................42 4.3 Diseño de la interfaz del manager. ......................................................................44 4.4 Prototipado de la interfaz.....................................................................................48 5. RESULTADOS...............................................................................................................55 5.1 Batería de pruebas..............................................................................................55 6. CONCLUSIONES..........................................................................................................61 A. Plan de Gestión de Configuraciones de Software ......................................................63 A.1 Introducción.........................................................................................................65 A.2 Gestión................................................................................................................66 A.3 Identificación de configuraciones........................................................................67 16 o Para el personal del Hotel - Servicios Hospitalarios o Para el Paciente o Para los médicos o Para la gestión del Hospital - Televisión por IP - Vídeo y Música Bajo Demanda - Cartelería Digital o Publicidad Dinámica o Totems - Encriptado de Vídeo en Tiempo Real - Acceso a Internet - Telefonía por IP La filosofía es disponer de una solución de entretenimiento interactivo general. Se amplía el concepto de TV interactiva del sector hotelero para abarcar unos mercados mucho más amplios y complejos (como el hospitalario, comunidades de usuarios variadas como: oficinas, ministerios, organizaciones laborales diversas, etc.) para ofrecer unos servicios de TV por IP (red local o red de área extensa), vídeo y música bajo demanda, videojuegos y otros servicios interactivos. Dotar al sistema de las más altas prestaciones en concordancia con las últimas novedades del sector audiovisual (por ejemplo, la Alta Definición-HD), de las técnicas de seguridad más avanzadas en la distribución de contenidos y de las mayores posibilidades de interacción con otros sistemas de información externos y con ello ofrecer mayor variedad de servicios. 1.3 Objetivos y Resumen del Proyecto El objetivo principal de el presente proyecto fin de carrera es el rediseño del servidor de vídeo bajo demanda que la empresa Entertainment Solutions (E.S.) tiene integrado en su solución actual de televisión interactiva para dotarlo de una entidad propia como producto de su portfolio. Para ello, es necesario incorporar unas prestaciones avanzadas como son: funcionamiento independiente (stand-alone) por medio de las interfaces necesarias, capacidad para la ingesta de contenidos en diferentes formatos, soporte para alta definición y catalogación de contenidos. Además, como objetivos secundarios el servidor deberá incorporar otras funcionalidades adicionales como son: posibilidad de encriptación de los contenidos almacenados para evitar fraudes (piratería), indexación de streamings para correcta funcionalidad de Trick Play (avance, rebobinado, pausa, etc.), soporte de tráilers (promoción) de películas. Así, el servidor ofrecerá dos posibles interfaces a los dos tipos de clientes a considerar: clientes para la demanda de contenidos y clientes para la administración del servidor. En primer lugar, se desarrollará una interfaz de administración desde la cual el usuario sea 17 capaz de acceder a las funcionalidades del servidor. Esta interfaz proporcionará de una manera sencilla la opción de visualizar los contenidos disponibles en el servidor, la modificación de los mismos y la inserción de nuevos. También será posible parar o reiniciar los servicios de transmisión cuando el usuario lo desee. La interfaz de usuario debe ser accesible desde cualquier computador dentro de la red del cliente (previa autentificación) y que disponga de navegador Web. En segundo lugar, la interfaz para los clientes demandantes de contenidos se plasmará en un API, susceptible de ser ofrecido junto con la solución para que desarrolladores externos puedan acceder a dichos contenidos. Además de lo anterior, se investigará acerca de los formatos de vídeo existentes en el mercado y se analizarán los susceptibles de ser aceptados. Para hacerlos compatibles con las soluciones utilizadas por E.S., la herramienta de administración se encargará de que los vídeos almacenados por el usuario sean transcodificados automáticamente al formato compatible en el servidor. Finalmente, el servidor deberá poder resolver cualquier petición de contenido multimedia y satisfacerla sin cortes siempre y cuando el servicio este activo, y se deberá asegurar la compatibilidad de la herramienta y la correcta comunicación con las demás aplicaciones software de E.S. Para ello, en la parte final del proyecto se llevará a cabo pruebas reales de funcionamiento y puesta en marcha del sistema, que permitirán al proyecto fin de carrera integrarse en el resto de soluciones de E.S. y dotarle de la realidad que implica haberse realizado en un entorno empresarial. 1.4 Planificación de Tareas La planificación de tareas llevada a cabo para el presente proyecto se ha dividido en tres fases claramente diferenciadas. La primera de ellas se trata del análisis donde se han estudiado las características que debe incorporar la aplicación y las soluciones presentes en el entorno de la empresa para adaptarlas lo máximo posible al nuevo entorno y asegurar la compatibilidad de estas con otras aplicaciones presentes. Las fases de diseño y de implementación se han desarrollado de forma conjunta debido a la cantidad de módulos a implementar, de forma que se realizaba primero el diseño y después la implementación de cada uno de ellos siendo necesaria la modificación de alguno de ellos en determinados momentos por aspectos ignorados en otros módulos. Por último en la última fase del proyecto se llevan a cabo las pruebas, las cuales han permitido detectar y corregir errores cometidos. Aunque entrevistas con el director del proyecto y con el ponente ha habido durante todo el periodo que ha durado la realización del proyecto, las primeras de todas fueron las más duraderas e importantes donde se formaron las bases del trabajo a desarrollar. Mediante un diagrama de Gantt se muestra las fases del proyecto y su estimación de tiempo para cada una (fig. 3.1). Para realizar el diagrama se ha utilizado la herramienta GanttProject. 18 Fig. 1.1: Diagrama de Gantt, planificación de tareas 19 2. ESTADO DEL ARTE 2.1 El concepto On Demand Cada vez más, los usuarios y clientes de servicios multimedia demandan lo que quieren ver y cuando lo quieren ver, sin las limitaciones que da un canal televisivo con su propia parrilla de programación, la cual puede no estar acorde a nuestros horarios e intereses. Así pues los canales de televisión están quedando en un segundo plano, pasando a un primero los contenidos audiovisuales bajo demanda. El concepto On Demand se refiere pues a esto, a reproducir los contenidos que el usuario quiere ver y cuando él lo desea. Existirá por tanto un servidor de contenidos audiovisuales el cual deberá satisfacer cada una de las necesidades de los clientes, transmitiendo los datos que cada uno necesita en tiempo real. 2.2 Contenidos Multimedia El término multimedia es muy amplio y puede utilizarse para referirse a cualquier objeto o sistema que utiliza múltiples medios de expresión (físicos o digitales) para presentar o comunicar información [2.1]. Así pues el servidor al almacenar y utilizar audio, vídeo e imágenes sería un sistema multimedia. Audio Los elementos de audio utilizados por E.S. son canciones asociadas cada una de ellas a un álbum de música. Vídeo Los elementos de vídeo utilizados serán los siguientes: • Películas: Una película es una obra de arte cinematográfica que narra una historia. • Vídeos locales: Se denominarán así a los vídeos sin ningún tipo de descripción y de duración limitada que podrán ser reproducidos y divulgados sin ninguna limitación al no poseer derechos de autor. • Tráilers: Un avance (trailer en inglés) es un pequeño extracto de las películas, que normalmente dura un par de minutos. Esto ayuda al fanático a que conozca el tipo de película del que se trata y a qué público va a estar orientada esta. Imágenes Las imágenes que utilizan los sistemas de E.S. son las asociadas a álbums de música y películas, a modo de carátulas de los mismos. 20 2.3 Tecnologías de streaming Se entiende como streaming a la transmisión de un flujo de datos en tiempo real entre un servidor y uno o más clientes. Si la transmisión de datos está destinada a un solo cliente hablaremos de transmisión Unicast y si está orientada a más de un cliente hablaremos de Multicast. Unicast Existen varios protocolos para la transmisión de datos en tiempo real a través de la red, como pueden ser RTP, RTCP, RTSP,… la mayoría de ellos están implementados bajo el protocolo UDP para la transmisión de datos, entre ellos destaca el protocolo Real Time Streaming Protocol (RTSP, Fig. 2.1) [2.2]. Fig. 2.1: Funcionamiento protocolo RTSP [2.3] El protocolo RTSP establece y controla uno o muchos flujos sincronizados de datos, ya sean de audio o de vídeo. Utiliza le tecnología RTP para transmitir el audio y el vídeo y soporta comandos como PLAY (reproducir), PAUSE (pausa), TEARDOWN (parar la reproducción). Este sistema de transmisión de datos se utilizara para las conexiones Unicast (Películas y vídeos locales), donde hay un único emisor y un único receptor, se empleará para transmitir los contenidos solicitados bajo demanda. Multicast Para la transmisión de contenidos multicast (utilizado en la transmisión de tráilers), la mayoría de los protocolos de aplicaciones existentes lo hacen sobre UDP, se utilizan direcciones desde la 224.0.0.0 a la 239.255.255.255 las cuales están destinadas para ser direcciones de tal efecto. El emisor envía un único datagrama (desde la dirección unicast del emisor) a la dirección multicast, y el router se encargará de hacer copias y enviarlas a todos los receptores que hayan informado de su interés por los datos de ese emisor (Fig. 2.2). 21 Fig. 2.2: Envío multicast de paquetes [2.4] Como se aprecia en la figura, los nodos verdes en este caso son los que habrían mostrado interés por los data-gramas enviados por el nodo rojo. 2.4 Reproductor de contenidos Para reproducir los contenidos almacenados en el servidor, es necesario que una máquina reciba los datos provenientes de este y mande hacia la televisión la señal correspondiente, así pues, esta máquina debe tener las siguientes características: • Debe ser capaz de reproducir la información proveniente de los protocolos citados en el apartado anterior (RTSP y UDP). • Soporten contenidos encriptados (Véase Encriptación de contenidos) • Robustez, fiabilidad y rapidez tanto en la carga inicial del sistema como en el cambio de reproducción entre contenidos. Se han estudiado dos soluciones diferentes para la reproducción de los contenidos, las cuales son computadores y Set-top Boxes (STB’s). Computadores Los computadores proporcionan una gran ventaja que sería la alta compatibilidad con todo tipo de formatos de contenidos, así como posibilidades infinitas en cuanto a la programación del sistema, pero tienen grandes inconvenientes como son la inestabilidad del sistema, tiempos de carga inicial, consumo de energía, volumen ocupado, desembolso económico, fáciles accesos no autorizados al sistema, etc. Es por esto por lo que la solución no está centrada en estos tipos de sistemas clientes. STB Un Set-top Box (STB), se encarga de demodular la señal recibida y enviarla al televisor. Destaca entre sus virtudes la rapidez y la fiabilidad de los mismos, algo importantísimo es esto último ya que un error podría dejar el cliente inutilizable. Nuestra solución estará centrada en clientes STB’s de la marca Amino, modelos A110 y A130 [2.5], cuya diferencia es la capacidad de reproducir vídeos en alta definición, 22 pensada inicialmente para la visualización de contenidos por los huéspedes de un hotel. Los STB's ante todo son clientes Web y trabajan bajo navegador Opera con soporte para la reproducción de vídeo y por tanto poseen muchas limitaciones en cuanto a funciones y formato de los contenidos multimedia. 2.5 Formato de contenidos multimedia Entendemos por formato de un archivo en general a la manera particular de tratar la información para almacenarla [2.6]. Asociado al formato viene también el códec (codificador-decodificador), utilizado para codificar los datos que van dentro del archivo. Para poder reproducir el archivo se necesitara del mismo códec que se utilizo para su compresión. En general se utiliza el término formato de vídeo o audio a la manera de almacenar la información junto con la codificación utilizada. Existen multitud de formatos de audio y vídeo en el mercado, siendo los más extendidos los formatos WAV y MP3 para audio y AVI, MPEG y MOV para vídeo, por lo que aseguraremos sobre todo la compatibilidad de la aplicación con estos formatos además de otros, realizando pruebas y verificando la compatibilidad. Por otra parte los STB’s utilizados por E.S. son los vistos en el apartado anterior (Amino A110 y Amino A130), los cuales solo admiten formatos para la reproducción Transport Stream (TS) con codificación MPEG2 y MPEG4/H.264 (solo en Aminos A130) (ver anexos). El códec MPEG-2 MPEG-2 es por lo general usado para codificar audio y vídeo para señales de transmisión. Introduce y define Flujos de Transporte, los cuales son diseñados para transportar vídeo y audio digital a través de medios impredecibles e inestables, que incluyen televisión digital terrestre, por satélite o cable. [2.7] El códec MPEG-4/H.264 Se trata de un códec de vídeo de alta compresión, utilizado inicialmente para videoconferencias a través de Internet. Es relativamente moderno (introducido en 1998) y respecto a las normas de codificación de vídeo anteriores, las diferencias se pueden encontrar a pequeña escala sobre el principio general de codificación (predicción, transformada, cuantificación, etc.). Es de destacar la menor cuantía de información que se necesita almacenar en los vídeos codificados mediante este códec. [2.8] El códec MP3 Acrónimo de MPEG-1 Audio Layer 3, es un formato de audio digital comprimido con pérdida. 23 La compresión se basa en la reducción del margen dinámico irrelevante, es decir, se aprovecha de las deficiencias del oído humano y elimina toda aquella información que no somos capaces de percibir. [2.9] Así pues aunque el formato de entrada de los contenidos multimedia al servidor pueden ser variados, el formato de salida debe compatible con las restricciones indicadas por los STB’s. El códec necesita de varios parámetros para comprimir y descomprimir la información. En caso de los vídeos los más importantes son la resolución, tasa de bits (bitrate) y imágenes o frames mostradas por segundo (fps). Mientras que en caso del audio son la frecuencia (numero de muestras por segundo) y el bitrate. Resolución La resolución de un vídeo viene determinada por la resolución de las imágenes que contiene, esto es la cantidad de filas por la cantidad de columnas de píxeles que conforman cada una [2.10]. La resolución de vídeo soportada por los STB Amino 110H es de 720x576 píxeles (SD), y los STB Amino 130 además también soportan resoluciones de 1280x720 píxeles (HD 720p) y 1920x1080 píxeles (HD 1080p). Bitrate La tasa de bits o bitrate tanto de vídeo como de audio define el número de bits que se transmiten por unidad de tiempo, así pues a mayor tasa de bits mayor calidad de imagen o de sonido se obtendrá. Imágenes por segundo Imágenes o frames mostrados por segundo, en nuestro caso utilizaremos 25 fps, la cual es una tasa de refresco imperceptible al ojo humano y compatible con los sistemas analógicos PAL [2.11]. Las características que se han utilizado para los diferentes tipos de vídeos son las mostradas en la tabla 2.1 y las utilizadas para el audio en la tabla 2.2. Tipo de vídeo Resolución Códec de vídeo Bitrate de vídeo Códec audio Bitrate audio Frecuencia audio Tráilers 1000 Kb/s Películas/Vídeos SD 720x576 MPEG-2 4000 Kb/s Películas/Vídeos HD 1280x720 H.264 6000 Kb/s MP3LAME* 128 Kb/s 44100 Hz * Existen varias versiones hechas por distintos programadores del códec MP3, aunque actualmente la más rápida y la que ofrece mayor calidad es la versión Lame. Tabla 2.1: Formatos utilizados según el tipo de vídeo guardado. 24 Bitrate audio Frecuencia audio Códec utilizado 128 Kb/s 44100 Hz MP3LAME Tabla 2.2: Formato utilizado para el audio guardado. 2.6 Encriptación de contenidos Entendemos por encriptación de los contenidos al cifrado de estos para que sean inteligibles sin la posesión de la clave de descifrado. Los contenidos para los que estaría disponible este módulo son películas y vídeos. La encriptación utilizada por entertainment solutions esta subcontratada a otra empresa y no responde a ningún estándar conocido. Se utiliza un mecanismo de encriptación que encriptan únicamente los frames/imágenes I y los B (*) del vídeo mediante algoritmo de cifrado Rijndael (AES). El audio del vídeo se encripta de forma separada mediante la misma clave de descifrado. El funcionamiento de la encriptación utilizada es el indicado en la figura 4.4: Fig. 2.3: Esquema funcionamiento encriptación de vídeo * Una secuencia de vídeo con formato MPEG suele estar formada por tres tipos de imágenes distintas (I, B y P). Las imágenes I son fijas mientras que las P dependen de la anterior imagen calculada y las B de la anterior y la siguiente (Fig. 2.4). Fig. 2.4: Composición del formato MPEG [2.12] Vídeo encriptado STB Clave Salida vídeo Vídeo original Programa de cifrado STB + Clave I I P B 25 3. ANÁLISIS DEL SISTEMA 3.1 Catálogo de Requisitos El Catálogo de Requisitos es una parte fundamental en toda fase de análisis en una aplicación software. Se compone de dos tipos de requisitos: los requisitos funcionales y los requisitos no funcionales. Con la información recopilada en las reuniones, se elabora el siguiente Catálogo de Requisitos. Este Catálogo de Requisitos será la base sobre la que funcionará la aplicación y el servidor de contenidos multimedia. A continuación se detalla el conjunto de requisitos funcionales y no funcionales del servidor: 3.1.1 Requisitos Funcionales Será posible la ingesta y catalogación de películas en el sistema • Debe ser posible la introducción de archivos de vídeos con las siguientes extensiones: mpg, mpeg, ts, avi, mov, asf,… sin distinguir entre mayúsculas y minúsculas. • En caso de que el usuario introduzca un vídeo con formato TS soportado por el sistema no será necesaria la transcodificación. • Cualquier película estará disponible si se encuentra en la base de datos. • Si el usuario lo decide se realizará la encriptación del vídeo subido. • Será posible la subida de varios archivos simultáneamente. • Cualquier película disponible deberá poder ser reproducida. • Las películas se identificaran por un identificador único en la base de datos. • Todas las películas deben contener información acerca de su contenido (título, descripción, director, género, actores, longitud) y al menos un vídeo en un idioma para poder ser reproducida. • Será posible introducir una imagen a modo de carátula de la película. o Las imágenes que pueden introducirse son jpeg, gif y png. o El formato estándar de las carátulas de las películas es jpeg con resolución 100x150 píxeles. o Al insertar una carátula el sistema la convertirá automáticamente al formato estándar. • La duración de la película se obtendrá automáticamente a partir de uno de sus archivos de vídeo. • Los géneros disponibles para una película deben ser guardados en una tabla dentro de la base de datos. • Será posible añadir nuevos géneros a la tabla de géneros y eliminar aquellos que no dispongan de ninguna película definida. • Los idiomas disponibles deben ser guardados en una tabla dentro de la base de datos. • El título, la descripción y el vídeo de una película podrá estar en cualquier idioma contenido en la tabla de idiomas de la base de datos 32 4.1 Tecnologías/herramientas 4.1.1 Sistema Operativo del servidor Se ha optado por implementar el servidor bajo y para S.O. Linux, en nuestro caso se utilizará la distribución Debian GNU/Linux 5.0.4., debido a la experiencia de la empresa en este S.O. y esta distribución y las numerosas aplicaciones de la empresa que funcionan bajo esta. Esto nos proporciona las siguientes ventajas:  Rapidez – Se trata de un sistema operativo completamente configurable y solamente ejecutará procesos necesarios para el sistema.  Libre distribución – Debido a la licencia “Open Source” de Debian, esta permitida la modificación y libre comercialización de sistemas con este S.O.  Compatibilidad – Se utilizaran para nuestros propósitos todas las herramientas ya disponibles en la empresa. 4.1.2 Base de Datos La base de datos utilizada es PostgreSQL [4.2.1], el cual es un sistema de gestión de base de datos relacional orientada a objetos y libre. En nuestro caso se utilizará la versión 8.3 de dicho sistema para Debian. Se ha optado por este sistema debido a: • Soporte del estándar SQL. • Posibilidad de ejecución embebida dentro del código. • Licencia BSD [4.2.2], permite el uso en software no libre. • E.S. utiliza este sistema para sus productos. En la base de datos debe almacenarse información acerca de las películas, tráilers, música, categorías, usuarios e idiomas. Se ha desarrollado una clase en PHP que hace posible la interacción del sistema con la base de datos de una forma fácil y rápida (class.pgsql.php). 4.1.3 Diseño de la base de datos Se ha utilizado de base el diseño ya empleado por varias utilidades disponibles en E.S., conservando solamente las tablas estríctamente necesarias, y adaptándolas al nuevo sistema. El sistema debe poder guardar textos en cualquier idioma, por lo que se ha diseñado de tal forma que cualquier texto pueda tener su traducción correspondiente, además de poder añadir nuevos idiomas a los ya existentes. Se han creado 12 tablas las cuales están relacionadas tal y como indica el diagrama E/R de la Fig. 4.2, y que son las siguientes: 33 • Usuarios: Recoge los usuarios y su respectiva contraseña cifrada para entrar a la aplicación. • Textos: Recoge todos los textos utilizados asociados con un identificador. • Textos traducidos: Almacena los textos cuyo id. es el mismo que el de la tabla textos, pero traducidos al idioma indicado en cada entrada de la tabla. • Idiomas: Tiene todos los idiomas disponibles con su correspondiente código ISO 639.1. • Álbums: Guarda el titulo, artista, categoría, año de publicación, etc. de cada álbum disponible en el sistema. • Categorías de álbums: recoge las categorías disponibles para los álbums. • Canciones: contiene las canciones asociadas a cada álbum. • Películas: Guarda el titulo, descripción, director, actores y demás información de cada película disponible en el sistema. • Categorías de películas: recoge las categorías disponibles para cada película. • Idiomas de películas: Para cada película recoge los idiomas en los que está disponible. • Tráilers de películas: Para cada película que tenga trailer, guarda la dirección multicast del trailer. • Variables de Entorno: Utilizada para almacenar variables globales durante la ejecución del sistema. 4.1.4 Servidor de vídeos E.S. utiliza una aplicación de elaboración propia para la transmisión de películas. Esta está basada en las bibliotecas de libre distribución live555 Streaming Media [3] y ha sido programada bajo lenguaje C++ para funcionar en un entorno Unix. Funcionamiento Al lanzar la aplicación esta lee el fichero de configuración, donde se encuentran los datos referentes al acceso a la base de datos y se cargan los títulos de películas que aparecen. La aplicación es capaz de detectar películas nuevas o borradas en la base de datos y añadirlas a la lista de películas disponibles para reproducir o quitarlas de la lista respectivamente. También es capaz de detectar vídeos locales nuevos o borrados en las carpetas correspondientes. Estas labores de detección las realiza un hilo de ejecución aparte escaneando el sistema en busca de cambios cada 100 ms. Los clientes para acceder a las películas deberán hacer una petición mediante el protocolo RTSP, esta será escuchada por el servidor de vídeos que la analizará y procederá al envío de las tramas de datos correspondientes. Para esto existe otro hilo de ejecución que se encarga de escuchar las peticiones entrantes y lanzar un hilo de ejecución por película que se visualiza. Se ha tenido que adaptar para su correcto funcionamiento con la nueva base de datos y se ha añadido la funcionalidad de reconocimiento de nuevos lenguajes disponibles para una película. Un esquema de su funcionamiento está ilustrado en la figura 4.3. 34 Fig. 4.2: Esquema E/R base de datos. 1-1 1-N tiene idiomas 1-1 1-1 nombre_categoria tiene 1-1 1-1 nombre tiene 1-1 1-1 nombre categoria tiene 1-1 1-1 idioma es 1-N 1-1 idioma disponible es 1-N 0-1 id_texto es 0-1 1-1 tiene trailer 1-1 1-1 descripción tiene 1-1 1-1 categoría álbum es 1-1 1-1 categoria es 1-1 1-N pertenece a álbum álbums id nombre categoría artista año de puiblicación carátula id: id Usuarios id nombre completo nombre de usuario contraseña id: id trailers id película dirección ip id: id película textos traducidos id_texto idioma texto id: id_texto textos id tipo de texto texto id: id películas id nombre nombre original duración categoría actores director descripción carátula nombre de archivo id: id idiomas de películas id película idioma disponible id: id película idiomas id nombre nombre nativo iso6391 id: id categorías de películas id nombre_categoria es de adultos id: id categorías de música id nombre categoría id: id canciones id álbum título duración nombre de archivo índice id: id 35 Fig.4.3: Funcionamiento del servidor de vídeos 4.1.5 Servidor de tráilers Por cuestiones de rapidez al navegar por la interfaz del cliente de los contenidos multimedia, en la cual al situarse sobre una película aparece automáticamente el trailer asociado, se ha optado por la emisión de los tráilers en multicast, de forma que cada tráiler tiene una dirección y un puerto desde el que se emite sin interrupción. Se ha optado por utilizar el programa VLC para realizar el streaming de los tráilers, ya que se configura de una forma sencilla y es posible agregar nuevos canales de reproducción en caliente (sin reiniciar el servicio), mediante el servidor telnet ofrecido por el programa VLC. La forma de lanzar el servicio es mediante el siguiente comando: vlc -I telnet –telnet-password “****” –vlm -conf=/etc/servidor/trailers.conf Siendo el archivo de configuración trailers.conf de la siguiente forma: new channelX broadcast enabled setup channelX input /ingesuite/trailers/Filmbank/archivo.ts loop setup channelX output #duplicate{dst=std{access=udp,mux=ts,dst=239.255.254.X:1234}} control channelX play Servidor de vídeo s B.D . LOG Víde o STB STB STB LAN ... RTSP Vídeo stream 36 Donde X es un entero e indica el número del canal, así pues para cada trailer cambia el canal, el archivo y la dirección. La forma agregar nuevos canales en caliente mediante el servidor telnet es la siguiente: 1. Se accede al servidor mediante la dirección del servidor y puerto 4212. 2. Se introduce la contraseña “****” descrita al lanzar la aplicación VLC. 3. Ya estamos dentro, aquí procederemos a insertan las mismas acciones y en el mismo orden descritas en el archivo de configuración con los parámetros correspondientes. 4.1.6 Servidor de música El servidor de música esta basado en el protocolo HTTP y por lo tanto es necesaria la intervención del servidor Web. Cuando se detecte una petición, el servidor proporcionará el álbum solicitado. La forma de solicitar música es accediendo a la siguiente dirección con los parámetros correspondientes: http://ipservidor/aplicacion/music/webmusic.php?id=idalbum Siendo idalbum un entero que corresponde con el identificador del álbum que queremos reproducir. 4.1.7 Procesado de vídeo y música En el caso del vídeo este módulo no sólo realizará la transcodificación de este sino que además, realizará su indexación en caso de que no se trate de un trailer y también la encriptación si así se desea. En el caso de la música solo se realizará la transcodificación. Para todas estas funciones se utilizan programas externos completamente independientes entre si. Transcodificación Para la transcodificación de vídeo de otros formatos a formato MPEG-TS se realiza mediante la aplicación externa “ffmpeg” [4.2.4] la cual es software libre bajo licencia GPL, la cual protege la libre distribución, modificación y uso de software. Uno de los problemas que tiene la aplicación “ffmpeg” es que para el formato de salida MPEGTS suele calcular de forma errónea el mux-rate, tasa de bits conjunta para audio y vídeo por paquete, de forma que se ha optado por no calcularlo y dejarlo fijo en estos casos. La transcodificación de la música se realiza también mediante la aplicación “ffmpeg”. 37 Indexación Se utiliza el programa externo “MPEG2TransportStreamIndexer”, funciona bien para archivos de vídeo codificados con el códec MPEG1/2 y no para los codificados con el códec H.264, el cual estará disponible en próximas revisiones del programa. Se genera un archivo con extensión .tsx que será analizado siempre que se utilice la opción de trick play. Encriptación La encriptación del los archivos de vídeo se lleva a cabo mediante la aplicación externa, llamada “al_encrypt”. Esta se encarga de crear una clave de descifrado y el vídeo encriptado, de forma que para su reproducción es necesario que el STB disponga de la clave correspondiente para la correcta visualización del vídeo. El servidor se encargará de enviar a los STBs deseados una nueva versión de firmware con la clave de descifrado, esto se realizará mediante otra aplicación llamada “al_importkey”. Ambas aplicaciones son suministradas por el proveedor de cifrado contratado por E.S. Debido a que este apartado es susceptible de sufrir cambios a lo largo del tiempo debido al avance de los formatos reproducibles, códecs, o análisis de aplicaciones para la transcodificación diferentes, se han desarrollado dos scripts en unix llamados “makets” y “makemp3” a modo de capa de abstracción los cuales nos permiten crear vídeos y archivos de audio compatibles para la reproducción en STB’s utilizando cualquier herramienta de transcodificación. Según los parámetros pasados al script “makets”, este se encargará de adecuar el códec, bitrate, resolución, etc. Este deberá estar en la carpeta ../manager/secciones/movies. La invocación del script para la compatibilidad con el sistema deberá ser la siguiente: makets [-t|-h|-i|-r recorte|-e extension|-a numpistaaudio|-c|-s serv_cifrado] -f fuente -d destino -t archivo destino será de tipo trailer. -h archivo destino será de tipo HD. -i el archivo destino será el fuente y solo se realizará la indexación. -r X se recortan X píxeles de los márgenes superiores e inferiores. -e X se extienden los márgenes superiores e inferiores X píxeles. -a X en caso de que el fuente disponga de mas de una pista de audio, X será el número de pista a leer. -c El archivo destino se cifrará y se creará el fichero de claves, que se importará automáticamente. -s X Para especificar un servidor de cifrado. Por defecto será localhost. -f X X será el fichero fuente. -d X X será el fichero destino. El código de makets para la aplicación externa ffmpeg se encuentra en anexos. El script “makemp3” deberá estar por su parte en la carpeta ../manager/secciones/music. Su invocación para la compatibilidad con el sistema deberá ser la siguiente: 38 makemp3 archivo_de_entrada archivo_de_salida El código de makets y makemp3 para la aplicación externa ffmpeg se encuentra en anexos. 4.2 Gestión del servidor Ya que los contenidos y los servicios de streaming se encuentran en la misma máquina, mediante una única plataforma Web es posible la administración y control de estos remotamente, utilizando la tecnología del lenguaje PHP. Este lenguaje nos permite realizar acciones como son las de creación de directorios, cambio de permisos, creación, modificación y borrado de archivos, ejecución de aplicaciones externas, consultas a la base de datos, etc. Para ello la aplicación deberá tener control total sobre los directorios de los contenidos y las aplicaciones externas deberán tener permiso de ejecución por parte de esta. El acceso a la base de datos se realizara mediante autentificación. Esto se resume en que los directorios y archivos utilizados deberán tener permisos de lectura y escritura, así como las aplicaciones externas de ejecución por parte de la aplicación Web. A continuación se detalla la implementación de los diferentes apartados de gestión del servidor. 4.2.1 Inserción y catalogación de contenidos en el sistema Para insertar contenidos en el sistema, es necesario además de introducir los archivos correspondientes, registrarlos en la base de datos. La forma de introducir los archivos y los datos correspondientes en el sistema es mediante formularios Web, enviando los datos por POST. Para archivos de vídeo, debido a su tamaño, se ha realizado un script en lenguaje Perl, el cual será llamado al enviar el formulario con los datos correspondientes, que permite subir al servidor archivos sin importar el tamaño que tengan, con las únicas limitaciones las establecidas por el cliente Web (upload.cgi). Este Script se encarga de ir leyendo los datos que están siendo mandados por el cliente e ir escribiendo en una carpeta temporal el archivo, para después ser transcodificado. Hay que tener en cuenta que un archivo de película puede llegar a tener hasta 10GB de tamaño. Películas Para insertar una película en el sistema, el servidor se encarga de realizar las siguientes tareas:  Subir el archivo de vídeo al servidor, procesarlo y situarlo en formato Transport 39 Stream (.TS) compatible con los STB’s en la carpeta …/películas (upload_movie.php, upload.cgi, encoder.php).  Insertar en la base de datos la película (insert_into_db.php), para ello:  En la tabla de textos un nuevo con identificador único, el título de la película introducida.  Una nueva entrada en la tabla textos con identificador único, introduciremos la sinopsis de la película en el idioma principal de esta (normalmente ingles)  En la tabla de traducciones colocaremos las traducciones a otros idiomas de forma que el identificador de la entrada en esta tabla coincide con el identificador de la entrada de la tabla de textos que queremos traducir. El campo de lenguaje de esta tabla deberá coincidir con el código ISO del lenguaje utilizado en cada entrada.  En la tabla de películas insertaremos una nueva entrada en la cual el campo identificador de la entrada será único en toda la tabla y el campo del titulo de la película coincidirá con la identificador de la tabla de textos donde hemos situado el titulo y el campo descripción con el identificador de la tabla textos donde hemos colocado la descripción.  Finalmente, en la tabla de lenguajes de las películas se insertaran los lenguajes que hay disponibles para cada película. De forma que cada entrada indicara un idioma disponible, según su código ISO para la película cuyo identificador sea igual al campo película de la entrada. Debido a que una película puede estar disponible en varios idiomas, una misma película debe poder tener varios archivos de vídeo correspondientes cada uno a un idioma distinto y se debe registrar el nuevo archivo de vídeo en el sistema. Para insertar pues un idioma adicional a una película se realizará lo siguiente: • Subir el archivo de vídeo al servidor, procesarlo y situarlo en formato Transport Stream (.TS) compatible con los STB’s en la carpeta …/películas (upload_movie.php, upload.cgi, encoder.php). • Insertar en la base de datos el nuevo idioma disponible (insert_lang.php). Tráilers La inserción de un trailer necesita de las siguientes acciones: • Copiar el archivo del trailer en formato transport stream (.TS) compatible con los STB’s en la carpeta …/tráilers (upload_trailer.php, upload.cgi, encoder.php) • Modificar el archivo de configuración del servidor de tráilers (VLC) y añadir un nuevo canal con el trailer añadido (trailer_into_db.php) (tal como se explico en la sección servidor de tráilers). • Insertar una nueva entrada en la tabla de tráilers con identificador igual al titulo de la película y ip y puerto igual al canal que lo emite (trailer_into_db.php). Vídeo Local Para insertar un vídeo local en el sistema solo hay que introducirlo en formato transport stream (.TS) compatible con los STB’s en la carpeta …/local, y el servidor de vídeo lo detectará automáticamente (upload_vídeo.php, upload.cgi, encoder.php). Música Por último la inserción de música en el sistema conlleva las siguientes acciones: 40 • Creación de la carpeta contenedora del álbum, cuyo nombre será su título, dentro de su categoría correspondiente (upload_music.php). • Las canciones irán dentro de la carpeta del álbum en formato MP3. • Inserción en la base de datos el álbum y las canciones (song.php). o En la tabla álbums se insertará una nueva entrada con los datos correspondientes al álbum. o En la tabla canciones se insertará una entrada nueva por canción, referenciada al álbum al que pertenece, con los datos de la canción. 4.2.2 API La implementación de la API se ha realizado mediante Webobjects, una tecnología, y un conjunto de herramientas para el desarrollo y explotación de aplicaciones Web y servicios Web de una forma elegante, rápida, sencilla y eficiente. Debido a la política de seguridad de los Webobjects no se pueden realizar intercambios de información directamente entre dos webobjects de distintas máquinas, sino que se necesita de un intermediario que se encuentre en el servidor y que envíe la información que recibe del exterior a la API. Esto se realizará de forma transparente al usuario. Así pues se pueden enviar objetos entre las aplicaciones, estando estas en diferentes máquinas, con la información requerida. La API debe recibir un objeto del tipo de webobject con los siguientes campos:  action: especifica la petición que se realiza. Puede ser 'movies' para recibir información acerca de las películas, 'movie_id' para recibir información acerca de la película con id especificad en el campo id, 'albums' para recibir información de los álbums de música disponibles y 'album_id' para recibir información del álbum cuyo id se especifica en el campo id.  id: en caso de que action sea movie_id o album_id, especificaremos aquí el campo id y deberá ser entero  langid: lenguaje en el cual queremos la respuesta, langid deberá ser un entero cuyo código ISO 639-1 sea el lenguaje solicitado.  output: contendrá la cadena 'XML' si se desea la respuesta en formato XML, si no por defecto la salida será en formato JavaScript. El objeto debe ser enviado a la url http://ipservidor/aplicacion/interface/api.php.inc, recibiendo como respuesta, según el campo action de la petición, lo siguiente: Para 'movies': • categories[] o id o name o items[]  id, name, catname, coverfile, trailer.ip, trailer.port  languages[] • name, iso6391, file_exists Para 'movie_id': • info 41 o id, name, origname, length, catname, coverfile, director, actors, plot, trailer.ip, trailer.port o languages[]  name, iso6391, file_exists Para 'albums': • categories[] o id, name o albums[]  id, artist, title, year, duration,  songs[] • name Para 'album_id': • info o id, artist, title, year, duration o songs[]  id, name, length, file_exists El manual de utilización de la API, así como un ejemplo y la descripción de todos los campos devueltos se encuentra en anexos. 4.2.3 Log del sistema Se ha desarrollado una clase en PHP (class.log.php) que se encarga de escribir en el archivo de log correspondiente las acciones realizadas. Se disponen de cuatro archivos de log distintos, cada uno de los cuales recogen información de distintas acciones en el sistema (accesos a la interfaz, inserción o modificación de películas, inserción o modificación de música, cambios en los géneros de contenidos, agregación y borrado de usuarios, e inicio o paro de servicios de streaming). El archivo de log muestra la hora de realización de la acción, el usuario que la ha llevado a cabo, el modulo que la ha provocado y una descripción de la misma. La creación de un mensaje en el archivo de Log correspondiente es mediante la siguiente sentencia: new log(mensaje,tipo); Donde mensaje será la acción realizada y que se mostrara en el archivo de log y tipo es el apartado en el que se está realizando dicha acción. Los archivos de log están disponibles para su visualización en la dirección: http://ipservidor/aplicacion/log 48 4.4 Prototipado de la interfaz En la interfaz se distinguen 4 áreas, y en cada una de ellas se interactúa con partes de la aplicación diferentes y cada una con nivel de detalle inferior. La primera área comprende el nombre de la aplicación y los idiomas disponibles de ella. Esta área se crea en el proceso principal de la aplicación para que al cambiar un idioma cambie toda la aplicación. Se sitúa en la parte superior de la página (área marcada con un 1 en la Fig. 4.7). La segunda comprende los principales apartados de la aplicación a modo de índice (Contenidos, Usuarios, Configuración y Streaming), y información de contacto. Esta área se carga con el archivo “include/menu.php”. Se sitúa en la parte lateral izquierda (área marcada con un 2 en la Fig. 4.7). La tercera se compone de los sub-apartados disponibles para el modulo con el que estamos trabajando, se sitúa a la derecha del área segunda y debajo de la primera. Si el módulo con el que estamos trabajando no tiene sub-apartados, este área no contendrá nada (área marcada con un 3 en la Fig. 4.7). La cuarta área son los contenidos de la aplicación seleccionados por las anteriores. Se sitúa debajo de la tercera área (área marcada con un 4 en la Fig. 4.7). La tercera y cuarta área son las creadas por los procesos correspondientes a la sección por la que se está navegando. Como se observa en la figura 4.7 al final de la página siempre se coloca un pie de página, cargado por el archivo “include/foot.php” que como hemos explicado en el apartado anterior contiene el nombre de la empresa. Fig. 4.7: Áreas de trabajo sobre la interfaz 49 Para los diferentes apartados o sub-apartados el modelado de esta cuarta área es el siguiente: Para Añadir Películas: Fig. 4.8: Modelado inserción películas Para la Filmoteca: Fig. 4.9: Modelado Filmoteca. 50 Si queremos conocer los detalles de una película, se nos mostrará la siguiente pantalla Fig. 4.10: Modelado información película. Para la gestión de los tráilers: Fig. 4.11: Modelado gestión de tráilers. 51 Creación de nuevos álbums: Fig. 4.12: Modelado Inserción Álbum. Listado de álbums (similar a la Filmoteca): Fig. 4.13: Modelado Biblioteca de Música. 52 Visualización de un álbum y sus canciones: Fig. 4.14: Modelado información de Álbum. Visualización de los vídeos locales disponibles: Fig. 4.15: Modelado biblioteca de vídeos locales. 53 Pantalla de configuración del sistema: Fig. 4.16: Modelado configuración. Gestión de los servicios de streaming: Fig. 4.17: Modelado gestión de los servicios de streaming. Gestión de los usuarios del sistema: Fig. 4.18: Modelado gestión de usuarios. 54 55 5. RESULTADOS El sistema obtenido cumple con todos los requisitos, y también con los siguientes factores de calidad. • Robustez, esto es que reacciona apropiadamente ante condiciones excepcionales. • Extensibilidad, extensible, ante cambios de especificación, debido a la simplicidad del diseño y a la modularidad del sistema. • Reutilización, cualquiera de los módulos es fácilmente reutilizable en otras aplicaciones. • Compatibilidad, debido a que se trata de un sistema centralizado con una interfaz Web, es compatible con todos los sistemas operativos que dispongan de un cliente Web. • Eficiencia, para que un sistema con estas características funcione correctamente, cada uno de sus módulos deben ser lo mas eficientes posibles, y todas las herramientas externas utilizadas lo son, así como la aplicación Web desarrollada. • Facilidad de uso, mediante una interfaz intuitiva y clara usuarios con distinta formación y aptitudes son capaces de aprender a utilizar el sistema. • Funcionalidad, el conjunto de posibilidades que proporciona el sistema es total. • Oportunidad, el sistema es lanzado en el momento que los usuarios lo necesitan. • Integridad, el acceso a los diversos componentes está garantizado únicamente desde la aplicación desarrollada o con privilegios de administrador del sistema, por lo que no se producirán accesos no autorizados a los datos del sistema. • Reparabilidad, gracias al archivo de log, el administrador del sistema podrá reparar el sistema en el caso de un error. • Economía, gracias a la utilización de software libre, el sistema ha sido completado con el presupuesto asignado. 5.1 Batería de pruebas Las pruebas llevadas a cabo han comprendido todos los aspectos de la aplicación, como funcionamiento de la interfaz, servidores de streaming, acceso al sistema… siendo todas estas pruebas satisfactorias. Las aquí documentadas son las referidas a la carga y transcodificación de vídeos insertados por los usuarios. Se han medido tiempos y comprobado la carga del sistema en diferentes situaciones. Los archivos de vídeo utilizados en las diferentes pruebas son los mostrados en la tabla 5.1 [5.1]. Nombre Tamaño Formato (códec) shrekforeverafter_trlr_03_480p_dl.mov 27.49 MB Mov (h264) sunflower.yuv 1483.15 MB YUV results_plus.avi 64.83 MB AVI (FFDS) gumball3000.mpeg 87.92 MB MPEG (mpeg1) bbb24p.ts 869 MB TS (mpeg2) Tabla 5.1: Características archivos de prueba de vídeo. 56 Como se observa las características de los vídeos son totalmente distintas de unos a otros en cuanto al tamaño y formato. Los archivos de audio utilizados en las diferentes pruebas son los mostrados en la tabla 5.2 [5.2]. Nombre Tamaño Formato 01 - Cara de monstruito.mp3 3.45 MB Mp3 onclassical_(…).wav 16.5 MB Wav Tromboon-sample.ogg 373 KB Ogg rf-t-mt3.mp2 3.09 MB Mp2 spaghettisunrise.wma 1.59 MB Wma Tabla 5.2: Características archivos de prueba de audio. Como se observa las características de los archivos de audio también son totalmente distintas de unos a otros en cuanto al tamaño y formato. El servidor sobre el que se efectúan las pruebas tiene las siguientes características: Modelo Packard Bell Easynote R9280 Portátil Procesador Pentium M - 1730 Mhz Memoria RAM 1024 MB Disco duro 60 GB Estarán todos los servicios de streaming disponibles y en el momento de las pruebas estarán emitiéndose por multicast 20 tráilers de películas. Los detalles de las pruebas se muestran a continuación. Prueba 1 Objetivo: Inserción en el sistema de múltiples tamaños y formatos de archivos de vídeo y la reproducción de los mismos. Descripción: Se procederá a la introducción de los archivos mostrados en la tabla 5.1 en el sistema utilizando la aplicación desarrollada. Los archivos se introducirán como vídeos locales en el sistema debido a que es más rápido y el módulo de transcodificación es el mismo para películas y para vídeos locales. Resultado de la prueba: El resultado es satisfactorio. Todos los vídeos excepto “sunflower.yuv” que posee un formato incompatible, se han insertado en el sistema de forma correcta, y se visualizan sin errores en STB’s Amino modelos 130 en resolución estándar y alta definición. En STB’s Amino modelos 110 solo es posible la visualización de vídeos en definición estándar, en estos STB’s el vídeo se ve bien pero el audio de vez en cuando se entrecorta. Lo cual es debido al códec obsoleto de reproducción que se utiliza en dichos aminos. A continuación se muestra una tabla con los resultados obtenidos. 57 Nombre Duración Vídeo Tiempo de Subida Tiempo de Transcodificación Tiempo Total Tamaño Archivo salida Shrekforev(...).mov 1’32’’ 5’’ 36’’ 41’’ 51.15 MB sunflower.yuv ----------- 5’41’’ No soportado ------- ------------ results_plus.avi 6’26’’ 12’’ 2’25’’ 2’37’’ 214 MB gumball3000.mpeg 8’49’’ 27’’ 3’15’’ 3’42’’ 294 MB bbb24p.ts 1’39’’ 3’35’’ 3’26’’ 7’01’’ 55.17 MB Tabla 5.3: Resultado subida de vídeos. Prueba 2 Objetivo: Inserción en el sistema de múltiples tamaños y formatos de archivos de audio y la reproducción de los mismos. Descripción: Se procederá a la introducción de los archivos mostrados en la tabla 5.2 en el sistema utilizando la aplicación desarrollada. Se creará un álbum de música llamado “prueba 3” y se procederán a introducir los archivos citados. Se medirán los tiempos empleados en la subida y en la transcodificación de los mismos. A continuación mediante el servidor de música y la utilización de la API se procederá a la reproducción del álbum y la comprobación de su correcto funcionamiento. Resultado de la prueba: El resultado es satisfactorio. Todos los archivos de audio insertados se transcodificaron y reproducieron sin problemas en STB’s Amino modelos 130 y 110. La tabla 5.4 muestra los datos recogidos en la prueba: Nombre Duración Canción Tiempo de Subida y transcodificación Funcionamiento 01 - Cara de monstruito.mp3 3’46’’ 2’’ onclassical_(…).wav 1’49’’ 10’’ Tromboon-sample.ogg 57’’ 5’’ rf-t-mt3.mp2 50’’ 4’’ spaghettisunrise.wma 58’’ 7’’ Tabla 5.4: Resultado subida de audio. Prueba 3 Objetivo: Inserción de múltiples tipos de imágenes como carátulas de álbums o películas. Descripción: Se procederá a recopilar distintos tipos de imágenes de Internet al azar con distintos tamaños y se probará su inserción creando una nueva película. Si la carátula se 64 65 A. Plan de Gestión de Configuraciones de Software A.1 Introducción Este documento nace con la finalidad de establecer unos patrones y unas pautas de organización a la hora de desarrollar el proyecto software “Servidor Multimedia”. El problema que aquí se trata es la existencia de multitud de documentos y ficheros, y sus cambios son inevitables. El software se va modificando a medida que se va desarrollando y esto hace que se creen nuevas versiones de sistemas de software a lo largo de la vida de un producto. El desarrollador de software sólo puede avanzar llanamente si el equipo de desarrollo puede trabajar con elementos correctos y consistentes La finalidad de este documento es definir los tipos de archivos a ser gestionados y un esquema de nombrado de documentos. Se definen las políticas para el control de cambios y gestión de versiones. Define los informes de GC que deben mantenerse. Describe las herramientas que deben ser utilizadas para asistir al proceso de GC y cualquier limitación en su uso y la base de datos de GC utilizada para registrar la información de configuraciones. 66 A.2 Gestión Se gestionaran todos los archivos del proyecto, tanto código fuente como documentos. Los archivos se clasifican en las siguientes carpetas • BBDD • Implementación • Documentos • Pruebas • Backups Las cuales solo contienen ficheros relacionados con su nombre. El nombre de los archivos será el conveniente en cada caso y no infundirá a ningún tipo de error. La carpeta BBDD contiene las instrucciones SQL que permiten crear la base de datos desde cero, así como rellenar las tablas con los contenidos de muestra. Estos archivos estarán numerados por orden de inserción en la base de datos. En la carpeta Implementación se guardará el código fuente en desarrollo. Dispondrá de dos carpetas, llamadas “Trunk” y “Stable”. La carpeta “Trunk” tendrá versiones del software en desarrollo y la carpeta “Stable” contendrá la última versión estable del proyecto. Dentro de la carpeta Documentos se guardaran todos los archivos de texto que contienen descripciones de elementos del proyecto. La carpeta Pruebas contendrá todos los archivos que se han utilizado para realizar las pruebas de funcionamiento y compatibilidad del software. La carpeta Backups contendrá las copias de seguridad que se han ido creando a lo largo del proceso del proyecto. El procedimiento a llevar a cabo para crear estas copias se detalla en apartados siguientes. Para trabajar con el código fuente de forma concurrente y estable, se utiliza servidor Subversión. De esta forma se podrá subir o bajar código fuente al servidor, de forma que cuando queramos trabajar en el proyecto nos bajaremos la última versión de desarrollo en cualquier lugar y cuando se termine de trabajar con ella se subirá al servidor. La implementación de este plan de Gestión de Configuraciones es conforme con los requisitos del IEEE Std828-1990. 67 A.3 Identificación de configuraciones A.3.1 Convenciones El nombre de los ficheros deberá contener al final la versión del fichero en cuestión conforme la siguiente regla: Release(Cliente).Versión(Desarrollador).Revisión(Desarrollador) Ej: v3.2.12 Los ficheros de código fuente deben contener las siguientes líneas al comienzo del fichero en forma de comentario, según lo estipulado en el estándar ESA P1 3.2.1: **Nombre.tipo.versión **Autor original **Fecha de creación **Historia de cambios **Versión, fecha **Autor, descripción A.3.2 Líneas Base Se establecerán tres líneas base en el proyecto: • Línea base de desarrollo: Estará formada por el Documento de Análisis de Requisitos, Documento de Diseño del Sistema, Test de Integración y Versión de pruebas, una vez revisados formalmente. • Línea base funcional: Estará formada por el primer prototipo, alpha release y beta release, una vez revisados formalmente. • Línea base de producto: producto revisado formalmente. Por revisado formalmente entendemos sobre los que se ha llegado a un acuerdo, y que de ahí en adelante sirve como base para un desarrollo posterior y que puede cambiarse solamente a través de procedimientos formales de control de cambios. 68 A.3.3 Control de Cambios Una vez que un documento o versión software a sido revisado formalmente, este deberá seguir unos pasos si desea ser modificado. El procedimiento para realizar un cambio en la documentación o en el software, se hará rellenando una ficha de petición de cambio tal como marca el estándar ESA. Según el cambio solicitado se rellenara la ficha correspondiente, según sea en documentación o en software. Las fichas deberán ser de la siguiente forma: 69 Fig. A.1: Fichas control de cambios 70 A.4 Recursos A.4.1 Configuraciones de software • Sistemas operativos: Kernel Linux 2.6.26-2-686 (i686) Windows XP SP2 • Aplicaciones instaladas: • PostgreSQL Data Base Management System 8.3 http://get.enterprisedb.com/postgresql/postgresql-8.3.11-1-linux.bin • Apache2 Web Server http://apache.rediris.es/httpd/httpd-2.0.63.tar.bz2 • PHP5 http://es.php.net/distributions/php-5.3.2.tar.bz2 • OpenOffice 2.4 http://openoffice.mirrors.tds.net/pub/openoffice/localized/es/2.4.0/OOo_2.4.0_Win32Intel_ins tall_es.exe • GanttProject 2.0.3 http://mesh.dl.sourceforge.net/sourceforge/ganttproject/ganttproject-2.0.6.exe • Mozilla Firefox 3.5 http://mozilla2.mirrors.tds.net/pub/mozilla.org/firefox/releases/2.0.0.14/win32/es- ES/Firefox%20Setup%202.0.0.14.exe • Putty http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe • Tortoisse SVN 1.4.8 http://garr.dl.sourceforge.net/sourceforge/tortoisesvn/TortoiseSVN-1.4.8.12137-win32-svn- 1.4.6.msi Language pack http://garr.dl.sourceforge.net/sourceforge/tortoisesvn/LanguagePack-1.4.8.12137-win32- es.exe • Internet Explorer 7 71 • Opera 10.50 ftp://ftp.rediris.es/mirror/opera/win/1060/int/Opera_1060_int_Setup.exe • Google Chrome http://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb • Interdependencias: • Java Runtime Environment (JRE) Permite a los usuarios ejecutar aplicaciones Java (GantProyect) http://java.sun.com/j2se/1.4.2/download.html A.4.2 Configuraciones de hardware Se han utilizado tres computadores distintos en el desarrollo de la aplicación. Los que denominaremos de desarrollo, servidor y de pruebas. El computador de desarrollo se utiliza para la programación de nuevas funcionalidades de la aplicación, desde el también se pueden probar y depurar los errores. Sus características son las siguientes: Equipo: Procesador Intel(R) Pentium(R) 4 CPU 2.40GHz Tamaño de Cache 512kb Memoria total 512MB Disco duro IDE WDC WD400EB-75CPF0 40Gb Sistema Operativo: Kernel Linux 2.6.26-2-686 (i686) Compiled #1 SMP Wed Aug 19 06:06:52 UTC 2009 C Library GNU C Library version 2.7 (stable) Distribution Debian GNU/Linux 5.0.3 Componentes instalados: PostgreSQL Data Base Management System 8.3 Apache2 Web Server PHP5 En el computador denominado como servidor se tiene solamente lo estrictamente necesario para que funcione la aplicación y la ultima versión estable de ésta. Las características técnicas de este computador son las siguientes: Equipo: Procesador Intel(R) Pentium(R) M 1.73GHz 72 Tamaño de Cache 512kb Memoria total 1GB Disco duro IDE IC25N060ATMR04-0 60Gb. Sistema Operativo: Kernel Linux 2.6.26-2-686 (i686) Compiled #1 SMP Wed Aug 19 06:06:52 UTC 2009 C Library GNU C Library version 2.7 (stable) Distribution Debian GNU/Linux 5.0.3 Componentes instalados: PostgreSQL Data Base Management System 8.3 Apache2 Web Server PHP5 El computador de pruebas se emplea para comprobar el correcto funcionamiento de la aplicación desde diferentes clientes Web. La capacidad de proceso de este ordenador es indiferente ya que toda la carga va sobre el servidor pero debe de ser capaz de reproducir vídeo para comprobar la funcionalidad de previsualización de contenidos. Las características técnicas de este computador son las siguientes: Equipo: Procesador AMD Sempron(tm) 2600+ Tamaño de cache 512kb Memoria total 448 MB Disco duro IDE MAXTOR 6Y080L0 80Gb Sistema Operativo: Microsoft Windows Xp SP2 Componentes instalados: Mozilla Firefox 3.5 Internet Explorer 7 Opera 10.50 Google Chrome También utilizados a modo de pruebas de transcodificación se han utilizado los siguientes equipos: STB Amino A110H [A.1] Entorno operativo ETS 300-019-1-3 Class 3.1 Codecs MPEG-2 MP@ML Resolución de gráficos 640x438 (NTSC) y 640x512 (PAL) Memoria del sistema 16MB Flash, 64MB RAM STB Amino A130 [A.2] Entorno operativo ETS 300-019-1-3 Class 3.1 Codecs MPEG-2 MP@HL MPEG-4 pt10 AVC/H.264 HP@L4 Resolución de gráficos 1280x720 Memoria del sistema 32MB Flash, 192MB RAM 73 Televisor LG RZ 20LZ50 [A.3] Tecnología LCD Dimensión diagonal 20” Relación de aspecto 4:3 Resolución 640 x 480 Televisor PHILIPS 32HFL5850 [A.4] Tecnología LCD TFT Active Dimensión diagonal 32” Relación de aspecto 16:9 Resolución: 1366 x 768 A.4.3 Disposición dentro del entorno de trabajo Todos los componentes vistos con anterioridad se disponen dentro del entorno de trabajo dentro de dos redes de trabajo (Fig. 2). La red con direcciones IP que van de la 10.1.1.1 a 10.1.254.254, a la cual están conectados todos los PC’s de la empresa y la que contiene el servidor central y el servidor estable de la aplicación desarrollada entre otros componentes Mi red local está compuesta por la televisión SD LG RZ 20LZ50 [3] con su correspondiente Amino A110H, un servidor de desarrollo y otro de pruebas, descritos en el apartado anterior. 80 81 C. Diagramas etapa diseño del manager C.1 Diagramas flujo de datos de segundo nivel Fig. C.1: DFD Proceso 1 Gestión de Películas 2.2 Añadir Usuario 2.4 Borrar Usuario 2.3 Modificar Usuario Usuarios 2.1 Ver Usuarios Fig. C.2: DFD Proceso 2 Gestión de Usuarios 82 Fig. C.3: DFD Proceso 3 Gestión de Servicios de Streaming Fig. C.4: DFD Proceso 4 Gestión de Configuración 83 C.2 Diagramas flujo de datos de tercer nivel Fig. C.5: DFD Proceso 1.1 Gestión de Películas Fig. C.6: DFD Proceso 1.2 Gestión de Tráilers 1.1.1 Películas Disponibles 1.1.2 Añadir Película 1.1.4 Borrar Película Películas S.O. 1.1.3 Modificar Película Proceso 1.2 Proceso 1.2 1.2.1 Trailers Disponibles 1.2.2 Añadir Trailer 1.2.3 Borrar Trailer Trailers S.O. Proceso 1.1Proceso 1.1 Proceso 1.1 84 1.3.1 Álbums Disponibles 1.3.2 Añadir Álbum 1.3.4 Borrar Álbum Música S.O. 1.3.3 Modificar Álbum Fig. C.7: DFD Proceso 1.3 Gestión de Música Fig. C.8: DFD Proceso 1.4 Gestión de Vídeos Locales 1.4.1 Videos Disponibles 1.4.2 Añadir Video 1.4.3 Borrar Video S.O. 85 C.3 Diagramas de secuencia Fig. C.9: Diagrama secuencia inserción películas. 86 navega Añadir álbum Introduce datos Usuario Sistema S.O. Introduce datos Base de datos Archivo audio ok n subido transcodificacion() transcodificado proceso finalizado Nueva cancion ok Introduce datos ok Archivo audio navega Fig. C.10: Diagrama de secuencia inserción álbums. 87 D. Manual de usuario D.1 Introducción Este manual servirá como guía de referencia del servidor multimedia implementado. Debe leerse antes de empezar a utilizar el sistema y así poder disfrutar de todas las funcionalidades disponibles, y poder sacarle el máximo provecho. Se explicará de forma detallada como agregar, modificar, eliminar y ver los contenidos que están almacenados, la gestión del servidor, tanto de los usuarios que pueden manejar la interfaz como el inicio o paro de los servicios de streaming. Se pretende que un usuario con conocimientos a nivel de usuario de informática sea capaz de instalar y utilizar el sistema, de forma que los únicos requisitos previos sean el saber utilizar el teclado y el ratón. 88 D.2 Instalación software Se empezará por instalar varios paquetes de aplicaciones mediante la aplicación aptitude. El procedimiento necesario es el siguiente. Escribir por línea de comandos: aptitude Así pues nos aparecerá la interfaz del programa, en la cual utilizaremos las siguientes acciones: Búsqueda de paquetes: presionando la tecla / nos aparece un cuadro donde insertar palabras claves para buscar paquetes a instalar. Buscar siguiente paquete que contenga las mismas palabras clave: mediante la tecla n realizaremos esta acción. Añadir paquetes a instalar: Una vez encontrado el paquete, lo añadimos a nuestra lista de paquetes a instalar mediante la tecla +. Instalar paquetes seleccionados: Una vez añadidos todos los paquetes que queremos instalar a nuestra lista, los instalaremos presionando la tecla g dos veces. Una vez terminado el proceso, el programa nos dirá que presionemos Enter para continuar. Salir: Para salir del programa utilizaremos la tecla q y seleccionaremos yes. Los paquetes que instalaremos con este método son los siguientes: • Apache2 • Libapache2-mod-php5 • Postgresql-8.3 • Php5 • Php5-pgsql • Php-cli • Subversión • Build-essential • Libpg-dev • G++4.1 • Php5-ffmpeg • Libdvbpsi5-dev 89 Instalación vlc (para el streaming de los trailers) wget http://download.vídeolan.org/pub/vídeolan/vlc/1.0.5/vlc-1.0.5.tar.bz2 tar jvxf vlc-1.0.5.tar.bz2 cd vlc-1.0.5 ./configure '--enable-vlm' '--enable-dvbpsi' '--disable-hald' '--disable-dbus' '-- disable-httpd' '--disable-notify' '--disable-audioscrobbler' '--disable-taglib' '-- disable-live555' '--disable-dvdnav' '--disable-smb' '--disable-v4l2' '--disable-libv4l2' '--disable-libcdio' '--disable-libvcdinfo' '--disable-libcddb' '--disable-cdda' '-- disable-vcd' '--disable-dvb' '--disable-screen' '--disable-ogg' '--disable-mkv' '-- disable-mod' '--disable-mpc' '--disable-gme' '--disable-mad' '--disable-id3tag' '-- disable-avcodec' '--disable-avformat' '--disable-postproc' '--disable-quicktime' '-- disable-libsysfs' '--disable-libtar' '--disable-a52' '--enable-libmpeg2' '--disable- vorbis' '--disable-speex' '--disable-schroedinger' '--disable-png' '--disable-x264' '-- disable-fluidsynth' '--disable-cmml' '--disable-kate' '--disable-x11' '--disable-xvídeo' '--disable-glx' '--disable-xinerama' '--disable-opengl' '--disable-sdl' '--disable-sdl- image' '--disable-freetype' '--disable-fribidi' '--disable-fontconfig' '--disable- libxml2' '--disable-hd1000v' '--disable-directx' '--disable-fb' '--disable-wingdi' '-- disable-oss' '--disable-pulse' '--disable-alsa' '--disable-waveout' '--disable-macosx- audio' '--disable-hd1000a' '--disable-upnp' '--disable-skins2' '--disable-qt4' '-- disable-wince' '--disable-macosx' '--disable-qnx' '--disable-ncurses' '--disable-visual' '--disable-bonjour' '--disable-libgcrypt' '--disable-gnutls' '--disable-remoteosd' '-- enable-vlc' '--disable-activex' --disable-nls --disable-mozilla --disable-swscale make make install Instalación de ffmpeg (con soporte para los códecs utilizados) Instalación de paquetes necesarios sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore4-dev zlib1g-dev Instalación del codec x264 utilizado para los vídeos en HD cd git clone git://git.vídeolan.org/x264.git cd x264 ./configure --disable-pthread make sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+`git rev-list HEAD - n 1 | head -c 7`" --backup=no --default Instalación de ffmpeg cd svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg cd ffmpeg ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable- libfaac --enable-libfaad --enable-libmp3lame --enable-libx264 --enable-libxvid --enable- x11grab make sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no -- default hash ffmpeg 96 Fig. D.5: Ficha para agregar una película Necesariamente es obligatorio definir un título para la película, siendo los demás campos ya definidos por defecto, pero estos no deben estar en blanco. En caso de no elegir una carátula para la película, se mostrará una imagen por defecto indicando que no existe carátula. Al cargar una imagen de carátula, esta será automáticamente guardada y mostrada. Es posible definir el idioma del título y de la descripción de la película en idioma por defecto el cual automáticamente si sitúa en el idioma elegido para la interfaz. Los campos precio e identificador del distribuidor son opcionales pero no pueden ser vacíos, la utilización posterior depende de la configuración de los módulos que interactúen con el servidor multimedia utilizando la API. Una vez hayamos rellenado los campos de la ficha, pulsaremos sobre el botón Siguiente. Ahora nos aparecerá una pantalla en la cual se podrán añadir títulos y descripciones de la película en otros idiomas distintos (Fig. D.6). Fig. D.6: Añadir titulo y descripción en otros idiomas Aquí simplemente hay que elegir un idioma de la lista desplegable y completar los campos de título y descripción en el idioma elegido. A continuación hacer clic sobre el botón Añadir 97 idioma cuando estén completos los campos. Nos aparecerá un dialogo de confirmación indicándonos que el título y la descripción en el idioma elegido han sido guardados. Repetir el proceso para otros idiomas. Notar que si elegimos un idioma que ya tiene definidos el título y la descripción, estas nos aparecerán en los cuadros de texto correspondientes para su modificación si se desea. Una vez hayamos completado este paso, haremos clic sobre el botón Siguiente, para pasar a la última fase del proceso (Fig. D.7). Fig. D.7: Subida de archivos de películas. En esta última fase se procederá a la subida de los archivos de vídeo de la película. Seleccionaremos de la lista desplegable el idioma en el que vamos a introducir el vídeo de la película y nos aparecerá un recuadro de color blanco (Fig. D.7) donde ya se nos muestra la opción de elegir un archivo de vídeo para subir*. Si se desea que el vídeo sea transcodificado en formato de alta definición, marcaremos la casilla Alta Definición (HD) del cuadro de diálogo. Si se desea que el vídeo sea encriptado, marcar la casilla Encriptar. * Solo son permitidos archivos con las extensiones siguientes: avi, mpg, mp4, vob, mov y ts. Hacer clic sobre el botón Subir Película para proceder a la subida del archivo de vídeo y al registro de la película definida en el sistema. A continuación se mostrará el progreso de la subida del archivo. MUY IMPORTANTE: NO CERRAR LA VENTANA DEL NAVEGADOR NI CAMBIAR DE PÁGINA MIENTRAS SE ESTÁ SUBIENDO EL ARCHIVO AL SERVIDOR. Una vez que el archivo ha sido subido, el servidor procederá a la transcodificación del mismo y así hacerlo compatible con el sistema. Si el archivo subido ya es compatible, no será necesaria la transcodificación. 98 El proceso de transcodificación se realiza en el servidor y el cliente puede si lo desea realizar otras operaciones con el navegador. En su defecto se mostrará el estado de la transcodificación (Fig. D.8). Fig. D.8: Dialogo genérico subida archivos de vídeo. Ver, Modificar y Eliminar película Para esto iremos a la Filmoteca, dentro del apartado Películas. Automáticamente se nos mostrará un listado de las películas disponibles en el servidor que no sean de adultos (Fig. D.9). Para cambiar las opciones de búsqueda de película seleccionaremos los criterios correspondientes en cuanto a tipo de película (Adultos o general) y género en la parte superior, y haremos clic sobre el botón Mostrar películas. Se nos mostrarán los títulos de las películas con una imagen en miniatura de sus carátulas, seguido de los idiomas en las que está disponible el vídeo de la película y el género al que pertenece. Para entrar a ver los detalles de una película y editarlos si se desea, hacer clic sobre el icono de lapicero . Se nos mostrará una pantalla con toda la información disponible de la película (Fig. D.10). Si modificamos algún campo este será automáticamente actualizado en la base de datos del servidor. 99 Fig. D.9: Listado de películas disponibles en el servidor. Fig. D.10: Información detallada de una película. Haciendo clic sobre la pestaña Vídeo clips se nos mostrarán los vídeos disponibles para la película, así como el trailer asociado a esta. Podemos añadir nuevos vídeos en idiomas 100 distintos, previsualizar cualquiera de ellos o eliminarlos. La previsualización de los vídeos está limitada a 2 minutos de película. Para salir de la pantalla de información y volver al listado de películas, pulsaremos sobre el icono situado arriba a la derecha del panel. Para borrar una película, nos situaremos en el listado de películas y basta con hacer clic sobre el icono asociado a la película que queremos borrar. Se nos mostrará un mensaje de advertencia indicándonos que esta acción borrará la película y pulsaremos el botón Aceptar si estamos de acuerdo o Cancelar si no queremos borrarla. Gestión de los tráilers La forma de gestionar los tráilers de una película, es mediante la ficha de la película en el apartado Filmoteca en el sub-apartado Vídeo clips, donde se nos muestran las opciones en caso de poseer trailer de visualizarlo, eliminarlo o modificarlo y en caso de que no posea, la opción de añadirlo. Otra forma, la recomendada para añadir tráilers, es mediante el apartado dedicado a ello. Accederemos a él haciendo clic en Añadir tráilers, dentro del apartado Películas, nos debe aparecer unos criterios de búsqueda y una lista de títulos de películas acorde con los criterios elegidos (Fig. D.11). Fig. D.11: Gestión de tráilers. De esta forma se puede saber que películas poseen trailer y las que no, y podemos agregarlos de forma rápida y sencilla. Basta con seleccionar una película para que se nos muestre un cuadro donde seleccionar el archivo de vídeo a subir*. Análogamente a los archivos de vídeo de película. * Solo son permitidos archivos con las extensiones siguientes: avi, mpg, vob, mov y ts. D.5.2 Música En este apartado se explicará como administrar de forma rápida y sencilla los álbums de música disponibles en el sistema. Para acceder al menú de música, se hará clic con el ratón sobre el apartado Contenidos, situado en el menú que se encuentra a la izquierda de la página, el cual siempre está visible en la aplicación, y a continuación nos aparecerán los tipos de contenidos disponibles, entonces pulsamos sobre Música. 101 Añadir un álbum Para acceder al asistente que nos guiará para añadir un nuevo álbum pulsaremos sobre la pestaña Añadir música que se encuentra en el área 3, una vez que estemos dentro de la categoría Música. Nos aparecerá una ficha donde se especificarán los detalles del álbum que queremos introducir (Fig. D.12). Fig. D.12: Ficha para añadir un álbum. Es necesario rellenar todos los campos de la ficha para pasar al siguiente paso, en caso de no rellenarlos, la aplicación nos mostrará un mensaje indicándonos que faltan datos de introducir. Una vez hayamos rellenado los campos pulsaremos el botón Crear álbum. Una vez hecho esto se nos mostrará una nueva pantalla donde se procederá a la subida de los archivos de canciones del álbum al servidor (Fig. D.13).Así pues hacer clic sobre el botón Subir canción, para mostrar un nuevo diálogo donde introduciremos el título de la canción y el archivo correspondiente. Pulsar sobre el botón Subir para proceder al registro de la canción en el servidor y a la subida y transcodificación del archivo. Esperar hasta que se muestre el mensaje archivo subido con éxito. Repetir la misma acción para todas las canciones del álbum. Estas deben estar en formato de audio compatible*. El servidor se encargará de transformar las canciones al formato soportado por este. Fig. D.13: Subida de canciones al álbum recién creado. 102 * El formato de audio compatible con la aplicación es ogg, wav y mp3. Ver, Modificar y Eliminar un álbum Al igual que con las películas, existe un listado de los álbums disponibles en el sistema, este está haciendo clic en la pestaña Álbums, dentro del apartado Música. Fig. D.14: Listado de álbums disponibles. Automáticamente se nos mostrará un listado de los álbums disponibles en el servidor (Fig. D.14). Para cambiar las opciones de búsqueda de álbums seleccionaremos los criterios correspondientes en cuanto al género en la parte superior, y haremos clic sobre el botón Mostrar álbums. Se nos mostrarán los títulos de los álbums con una imagen en miniatura de sus carátulas, seguido del artista y el género al que pertenece. Para entrar a ver los detalles de un álbum y editarlos si se desea, hacer clic sobre el icono de lapicero . Se nos mostrará una pantalla con toda la información disponible de la película (Fig. D.15). Si modificamos algún campo este será automáticamente actualizado en la base de datos del servidor. 103 Fig. D.15: Detalles de un álbum. Pulsando sobre el botón Mostrar Canciones podremos ver las canciones disponibles en el álbum y modificar su título si lo deseamos, así como borrar o añadir nuevas Para salir de la pantalla de información y volver al listado de álbums, pulsaremos sobre el icono situado arriba a la derecha del panel. Para borrar un álbum, nos situaremos en el listado de estos y basta con hacer clic sobre el icono asociado al álbum que queremos borrar. Se nos mostrará un mensaje de advertencia indicándonos que esta acción borrará el álbum correspondiente y pulsaremos el botón Aceptar si estamos de acuerdo o Cancelar si no lo queremos borrar. D.5.3 Vídeos locales Se entiende por vídeos locales a cualquier vídeo que no sea película y que estará disponible para la reproducción por cualquier usuario. En este apartado se explicará como administrarlos de forma rápida y sencilla. Para acceder al menú de los vídeos locales, se hará clic con el ratón sobre el apartado Contenidos, situado en el menú que se encuentra a la izquierda de la página, el cual siempre está visible en la aplicación, y a continuación nos aparecerán los tipos de contenidos disponibles, entonces pulsamos sobre Vídeo Local. 104 Agregar vídeo local Para acceder al asistente que nos guiará para añadir un nuevo vídeo local pulsaremos sobre la pestaña Añadir Vídeo que se encuentra en el área 3, una vez que estemos dentro de la categoría Vídeo Local. Nos aparecerá un recuadro de subida de archivo de vídeo, donde se procederá a seleccionar el vídeo que se quiere subir y a marcar la opción de Alta Definición (HD) si se desea que el vídeo subido sea transcodificado de esta forma (Fig. D.16). Fig. D.16: Subida de archivo de vídeo local. Una vez hayamos seleccionado el archivo, haremos clic con el ratón sobre el botón Subir vídeo. Al igual que con las películas, se nos mostrará el progreso de la subida de los archivos, así como de su posterior transcodificación. MUY IMPORTANTE: NO CERRAR LA VENTANA DEL NAVEGADOR NI CAMBIAR DE PÁGINA MIENTRAS SE ESTÁ SUBIENDO EL ARCHIVO AL SERVIDOR. Es posible añadir tantos vídeos locales como se desee a la vez, pero se recomienda no subir más de tres de ellos a la vez ya que la congestión del servidor sería demasiado grande. Basta con hacer clic sobre la palabra aquí. Ver y Eliminar vídeo local Al igual que con las películas y los álbums de música se dispone de un listado de vídeos locales, pero a diferencia de los anteriores en este solo se muestra el nombre del vídeo asociado a una imagen dinámica en miniatura de 10 imágenes del vídeo en diferentes instantes de tiempo (Fig. D.17). 105 Fig. D.17: Listado de vídeos locales. Si se desea previsualizar el un vídeo basta con hacer clic sobre la imagen en miniatura de este. El vídeo iniciará su reproducción en el espacio reservado para ello. Si deseamos Parar la reproducción, pulsaremos el botón de Stop . Si se desea que la reproducción del vídeo sea a pantalla completa, pulsaremos el botón de Fullscreen . Para borrar un vídeo local haremos clic con el ratón sobre la palabra Borrar situada debajo del vídeo local deseado. Se nos mostrará un mensaje de advertencia acerca de la acción y pulsaremos Aceptar si estamos de acuerdo. 112 113 Referencias [2.1] Concepto Multimedia 03-03-2010 http://es.wikipedia.org/wiki/Multimedia [2.2] Concepto RTSP 05-03-2010 http://es.wikipedia.org/wiki/RTSP [2.3] Imagen explicativa protocolo RTSP 07-03-2010 http://www.w3.org/2008/WebVídeo/Fragments/wiki/images/2/28/Rtsp.jpg [2.4] Imagen explicativa Multicast 07-03-2010 http://en.wikipedia.org/wiki/File:Multicast.svg [2.5] Web empresarial Amino 08-03-2010 http://www.aminocom.com/ [2.6] Concepto Formato de archivo 10-03-2010 http://es.wikipedia.org/wiki/Formato_de_archivo_informático [2.7] Descripción códec MPEG-2 12-03-2010 http://es.wikipedia.org/wiki/MPEG-2 [2.8] Descripción códec MPEG-4/H.264 12-03-2010 http://es.wikipedia.org/wiki/MPEG-4_Parte_10 [2.9] Descripción códec MP3 12-03-2010 http://es.wikipedia.org/wiki/MP3 [2.10] Concepto resolución 17-03.2010 http://es.wikipedia.org/wiki/Resoluci%C3%B3n_de_im%C3%A1genes [2.11] Concepto sistemas PAL 18-03-2010 http://es.wikipedia.org/wiki/PAL [2.12] Imagen explicativa Frames I, P y B 15-03-2010 http://en.wikipedia.org/wiki/File:I_P_and_B_frames.svg [4.2.1] Características Base de datos PostgreSQL 02-04-2010 http://es.wikipedia.org/wiki/PostgreSQL [4.2.2] Características Licencia BSD 02-04-2010 http://es.wikipedia.org/wiki/Licencia_BSD [4.2.3] Librerías Live555 17-04-2010 http://www.live555.com/liveMedia/ [4.2.4] Aplicación de transcodificación FFMPEG 18-04-2010 http://ffmpeg.org/ [5.1] Archivos de vídeo de prueba 18-05-2010 http://pdl.stream.aol.com/aol/brightcove/us/moviefone/trailers/2010/shrekforeverafte 114 r_030186/shrekforeverafter_trlr_03_480p_dl.mov ftp://ftp.ldv.e-technik.tu-muenchen.de/dist/test_sequences/1080p/sunflower.yuv http://www1.edexcel.org.uk/resultsplus/results_plus.avi http://www.car-vídeos.net/download051607/bmw/gumball3000.mpeg http://www.w6rz.net/bbb24p_00.zip [5.2] Archivos de música de prueba 19-05-2010 http://ia311215.us.archive.org/1/items/onclassical-quality-wav-audio-files-of- classical-music/onclassical_demo_luisi_bach_partita_a-minor_bwv-827_1_small- version.wav http://upload.wikimedia.org/wikipedia/commons/a/a9/Tromboon-sample.ogg http://download25.jamendo.com/download/album/57303/mp32/e09e6b1c35/Amatria %20-%20Hoy%20van%20a%20salirte%20las%20alas%20--%20Jamendo%20- %20MP3%20VBR%20192k%20- %202009.12.17%20%5Bwww.jamendo.com%5D.zip http://www.dcu.ie/~comms/songs/rf-t-mt3.mp2 http://www.zonicweb.net/music/freemusicdownloads/Mconn/spaghettisunrise.wma [5.3] Imágenes de prueba 20-05-2010 http://raulrincon.files.wordpress.com/2008/04/zaragoza.jpg http://anotacionesviajeras.com/files/2008/06/expo-zaragoza-2008.gif http://www.absolutsuecia.com/wpcontent/uploads/2009/12/absolutzaragoza13122009.png http://www.urbezaragoza.com/wp-content/uploads/2009/12/Ba.bmp [A.1] Descripción STB Amino 110H http://www.aminocom.com/files/Amino%20A110H.pdf [A.2] Descripción STB Amino 130 http://www.aminocom.com/files/Amino%20A130.pdf [A.3] Televisor LG RZ-20LZ50 http://www.lge.com/ae/support/product/support-product- profile.jsp?customerModelCode=RZ- 20LZ50&matchedModelCode=NOT_MATCHED&searchEngineModelCode=RZ- 20LZ50&initialTab=warranty&targetPage=support-product-profile# [A.4] Televisor PHILIPS 32HFL5850D http://download.p4c.philips.com/files/3/32hfl5850d_10/32hfl5850d_10_pss_esp.pdf 115 Bibliografía [PHP] Manual de PHP http://php.net/manual/es/index.php 02-2010 [W3C] World Wide Web Consortium http://www.w3.org/ 02-2010 [OWT] Online Web Tutorials http://www.w3schools.com/ 02-2010 [CGI] CGI Programming 101 http://www.cgi101.com/book/ 02-2010 [JST] JavaScript tutorial http://www.quackit.com/javascript/tutorial/ 02-2010 [CT99] Nicolai M. Josuttis, The C++ Standard Library: A Tutorial and Reference, Hardcover - Aug 22, 1999 [UHH94] Simson Garfinkel, Daniel Weise and Steven Strassmann, The UNIXHATERS Handbook, 1994 http://simson.net/ref/ugh.pdf 02-2010 [APA] Documentación Apache 2.2 http://httpd.apache.org/docs/2.2/ 03-2010 [PSQL] Documentación PostgreSQL http://www.postgresql.org/docs/8.0/static/tutorial.html 03-2010 [VSTR] Jaromil, Vídeo streaming, a research on current Technologies http://www.nimk.nl/en/pdf/vídeo-streaming.pdf 03-2010