La versión digital de esta tesis está protegida por la Ley de Derechos de Autor del Ecuador. Los derechos de autor han sido entregados a la “ESCUELA POLITÉCNICA NACIONAL” bajo el libre consentimiento del (los) autor(es). Al consultar esta tesis deberá acatar con las disposiciones de la Ley y las siguientes condiciones de uso: · Cualquier uso que haga de estos documentos o imágenes deben ser sólo para efectos de investigación o estudio académico, y usted no puede ponerlos a disposición de otra persona. · Usted deberá reconocer el derecho del autor a ser identificado y citado como el autor de esta tesis. · No se podrá obtener ningún beneficio comercial y las obras derivadas tienen que estar bajo los mismos términos de licencia que el trabajo original. El Libre Acceso a la información, promueve el reconocimiento de la originalidad de las ideas de los demás, respetando las normas de presentación y de citación de autores con el fin de no incurrir en actos ilegítimos de copiar y hacer pasar como propias las creaciones de terceras personas. Respeto hacia sí mismo y hacia los demás. ESCUELA POLITÉCNICA NACIONAL FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA ESTUDIO DE LA PLATAFORMA – CRUZADA OPENSOURCE – FFMPEG (COLECCIÓN DE SOFTWARE LIBRE QUE PUEDE GRABAR, CONVERTIR Y HACER STREAMING DE AUDIO Y VÍDEO) Y DESARROLLO DE UNA APLICACIÓN CLIENTE/SERVIDOR PARA UN WALL VIEW PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y REDES DE INFORMACIÓN CHRISTIAN MAURICIO MONTENEGRO CHÁVEZ christian.montenegro@mailfie.net PROYECTO PREVIO A LA OBTENCIÓN DEL TÍTULO DE INGENIERO EN ELECTRÓNICA Y TELECOMUNICACIONES CÉSAR IVÁN MULLO ANCHATUÑA cesar.mullo@mailfie.net DIRECTOR: Ing. CÉSAR GUSTAVO SAMANIEGO BURBANO, MSc. gustavo.samaniego@epn.edu.ec CO-DIRECTOR: Ing. XAVIER ALEXANDER CALDERÓN HINOJOSA, MSc. xavier.calderon@epn.edu.ec Quito, Mayo 2013 DECLARACIÓN Nosotros, Christian Mauricio Montenegro Chávez y César Iván Mullo Anchatuña, declaramos bajo juramento que el trabajo aquí descrito es de nuestra autoría; que no ha sido previamente presentado para ningún grado o calificación profesional; y, que hemos consultado las referencias bibliográficas que se incluyen en este documento. A través de la presente declaración cedemos nuestros derechos de propiedad intelectual correspondientes a este trabajo, a la Escuela Politécnica Nacional, según lo establecido por la Ley de Propiedad Intelectual, por su Reglamento y por la normatividad institucional vigente. Christian Mauricio Montenegro Chávez César Iván Mullo Anchatuña CERTIFICACIÓN Certificamos que el presente trabajo fue desarrollado por Christian Mauricio Montenegro Chávez y César Iván Mullo Anchatuña, bajo nuestra supervisión. Ing. Gustavo Samaniego, MSc. DIRECTOR DEL PROYECTO Ing. Xavier Calderón, MSc. CO-DIRECTOR DEL PROYECTO AGRADECIMIENTO Agradezco a Dios Todopoderoso, quien con su infinito amor y misericordia ha guiado cada uno de mis pasos hasta culminar mi carrera profesional. A mi Señor y salvador Jesucristo, quien me ha provisto de fuerza, valor, valentía y sabiduría para enfrentar todas las adversidades que en algunos momentos pasé. Agradezco a mis padres, Gladys y Jorge, y a mi hermana Paulina, por ser mis fuentes de amor, apoyo y aliento en cada instante de mi vida, por acompañarme en esta ardua batalla a pesar de todo, por formarme e inculcar en mí valores y ese espíritu combativo que estoy seguro me acompañarán a lo largo de mi existencia, por su tolerancia a mi “mal genio”, y sobre todo por enseñarme que en la vida siempre, por más pequeño que sea, existe un buen motivo para levantarse y comenzar de nuevo. Agradezco a mis tí@s maternos y paternos, a sus cónyuges y a mis prim@s también, por su cariño, por su confianza, y porque todos ellos forman parte de ese gran terruño mío que es mi familia. Aprovechando esta mención, quisiera citar de manera particular a mi ñaño Romel, por su especial aporte y decisiva motivación que me brindó para culminar este gran sueño de ser ingeniero. Agradezco a Iván, mi amigo y compañero de tesis, por confiar en mí para realizar este proyecto de titulación, por su esfuerzo, esmero y aporte para día a día sacar adelante este objetivo planteado. Agradezco y hago especial reminiscencia a la memoria del Ing. Pablo Salinas (†), quien favorablemente nos ilustró sobre la temática de este proyecto de titulación. Agradezco a esta noble Institución, la Escuela Politécnica Nacional, particularmente a la Facultad de Ingeniería Eléctrica y Electrónica, donde cursé toda mi formación profesional académica. Agradezco a mis profesores, a quienes con real entrega y preocupación estuvieron a la expectativa de la evolución favorable de todos los alumnos que somos parte de la carrera de Ingeniería Electrónica y Redes de Información, contribuyendo con sus conocimientos, valores y ética a moldearnos humana y profesionalmente. Agradezco a mis entrañables amig@s, mis “panas”, mis colegas de aula, por ser parte de mi historia con sus experiencias, mensajes y fundamentalmente su apoyo. Finalmente un agradecimiento especial a nuestro director, Ing. Gustavo Samaniego, y a nuestro co-director, Ing. Xavier Calderón, por confiar en este proyecto e impulsar esta iniciativa que hoy se traduce en una estupenda realidad. Christian DEDICATORIA En primer lugar dedico este trabajo a Dios y a mi Señor Jesús, por darme esperanza, amor y vida para dar testimonio de sus maravillas y su misericordia. A mis padres, Gladys y Jorge, a mi hermana Paulina, a quienes amo con total entrega y abnegación. A mi maravillosa familia, mis tí@s, mis prim@s, a mi abuelito que gracias a Dios aún vive, a mis abuelitas y a mi abuelito fallecidos (†). A mis profesores y amig@s, quienes, en los altos y bajos de la vida, han formado parte de esta genial etapa politécnica. A quienes con transparencia continúen trabajando con esta iniciativa que se promueve en este proyecto de titulación. Christian AGRADECIMIENTO A Dios por todas las bendiciones recibidas, por todos los caminos de rosas y espinas, por la gran oportunidad de disfrutar de este gran milagro que llamo vida, por la fuerza, fe y sabiduría que me ha dado en todo momento. A mi mamita María, papito César, mi hermana Dayanna, por siempre estar a mi lado, acompañándome, ayudándome en todo este camino, a momentos tan difíciles para todos, gracias por esa ardua lucha diaria a pesar de todo y a pesar de todos, gracias por formar e inculcar en mí todas las enseñanzas y valores que han formado la persona que ahora soy, si algo soy es gracias a ustedes. A mi familia, tíos, tías, primos y primas, por de alguna forma siempre estar al pendiente. En especial a Alejandro, Carmen, Blanca, Segundo y Julio por su constante motivación y preocupación. A Christian, gran amigo y compañero de tesis, por su constante apoyo, comprensión, confianza en mí, a pesar de tantos momentos difíciles, su dedicación y tenacidad han hecho posible la realización de este gran sueño. De igual forma un gran Dios le pague a su familia, Don Jorge, Sra. Gladys y Paulina por tan gratamente acogerme y abrirme las puertas de su hogar. A mis amigos y compañeros con quienes hemos compartido tantos buenos y malos momentos, gracias por la aventura de luchar y crecer acompañados. En especial a Diego F., Paúl R., Christian B. y Andrés H. gracias por brindarme su apoyo y comprensión incondicional. Gracias al Ing. Pablo Salinas (†) quien confió en nosotros y nos guío para el desarrollo de este plan de titulación. A todos quienes han sido mis profesores quienes a más de transmitirnos sus conocimientos han sabido también inculcar el sentido de moral y ética profesional. A nuestro director Ing. Gustavo Samaniego, y a nuestro co-director, Ing. Xavier Calderón, quienes confiaron en este proyecto y tan acertadamente nos han guiado para la finalización exitosa del mismo. A todos y todas con quienes me he cruzado en la vida, pues ahora soy la suma de todo lo que he pasado. Al final todo esfuerzo tiene su recompensa, y esa ha llegado. Iván DEDICATORIA A ustedes mamita María, papito César, esto es posible gracias a ustedes, con su gran amor, su apoyo, confianza, con su gran ejemplo de trabajo y perseverancia diaria, me han demostrado que todos los sueños y metas son posibles de lograr y realizar si se trabaja y lucha constantemente. A Dayanna mi ñañita hermosa, con su inocencia, ternura, cariño siempre ha estado ahí para darme ánimo. Su existencia hace que todo sea posible y es razón suficiente para salir y seguir adelante…. Iván ÍNDICE DE CONTENIDOS RESUMEN ……………………………………………………………………………..... i PRESENTACIÓN ……………………………………………………………………..... ii CAPÍTULO I ........................................................................................................... 1 FUNDAMENTOS TEÓRICOS ................................................................................ 1 1.1 GENERALIDADES ........................................................................................1 1.1.1 GNU – Linux ........................................................................................... 1 1.1.1.1 Entorno de Escritorio GNOME ......................................................... 2 1.1.1.2 Entorno de Escritorio KDE ............................................................... 2 1.1.1.3 Entorno de Escritorio LXDE ............................................................. 3 1.1.1.4 Entorno de Escritorio Xfce ............................................................... 4 1.1.2 FFMPEG ................................................................................................ 7 1.1.2.1 Descripción del Proyecto FFmpeg ................................................... 7 1.1.2.2 FFmpeg ........................................................................................... 8 1.1.2.1.1 Descripción del funcionamiento ................................................ 9 1.1.2.1.2 Opciones principales ................................................................. 9 1.1.2.3 FFplay ............................................................................................ 11 1.1.2.3.1 Opciones principales. .............................................................. 11 1.1.2.4 FFserver ........................................................................................ 12 1.1.2.5 FFprobe ......................................................................................... 13 1.1.3 Esquemas de compresión de audio y video ......................................... 13 1.1.3.1 Multimedia ..................................................................................... 13 1.1.3.2 Audio ............................................................................................. 14 1.1.3.2.1 Compresión de Audio .............................................................. 14 1.1.3.3 Video ............................................................................................. 15 1.1.3.3.1 Compresión de Video .............................................................. 16 1.1.4 Concepto de redes ............................................................................... 17 1.1.4.1 Redes de Área Local (LAN) ........................................................... 17 1.1.4.2 Redes de Área Metropolitana (MAN) ............................................. 18 1.1.4.3 Redes de Área Extendida (WAN) .................................................. 18 1.1.4.4 Intranet .......................................................................................... 19 1.1.5 Streaming ............................................................................................. 20 1.1.6 ARQUITECTURA Cliente – Servidor.................................................... 21 1.2 REQUERIMIENTOS ....................................................................................22 1.2.1 Requerimientos Hardware .................................................................... 22 1.2.1.1 Múltiples monitores ........................................................................ 22 1.2.1.1.1 Modo de Pantalla Duplicado ................................................... 22 1.2.1.1.2 Modo de Pantalla Escritorio Extendido ................................... 22 1.2.1.2 Tarjeta de Video ............................................................................ 23 1.2.2 Requerimientos Software ..................................................................... 26 1.2.2.1 Zenity ............................................................................................. 26 1.2.2.2 Devil's Pie .................................................................................. 26 1.2.2.3 Notify-send..................................................................................... 27 1.3 INSTALACION FFMPEG .............................................................................27 1.3.1 Instalación de FFMPEG para distribuiciones Debian y Derivadas ....... 27 1.3.1.1 Previos ........................................................................................... 27 1.3.1.2 Instalación de FFmpeg .................................................................. 28 1.3.1.3 Instalación de paquetes opcionales .............................................. 30 1.3.1.4 Revertir los cambios realizados ..................................................... 33 1.3.2 Instalación de FFMPEG para distribuciones RED HAT y Derivadas .... 33 1.3.2.1 Previos ........................................................................................... 33 1.3.2.2 Instalación de FFmpeg .................................................................. 34 1.3.2.3 Revertir los cambios realizados ..................................................... 37 1.4 METODOLOGÍAS DE DESARROLLO DE SOFTWARE .............................37 1.4.1 Metodología en Cascada ..................................................................... 38 1.4.2 Metodología de Prototipado ................................................................. 38 1.4.3 Metodología Incremental ...................................................................... 38 1.4.4 Metodología en Espiral ......................................................................... 39 1.4.5 Metodología RAD “Rapid Application Development” ............................ 40 CAPÍTULO II ........................................................................................................ 42 DISEÑO DE LA APLICACIÓN PARA UN WALL VIEW ...................................... 42 2.1 CONSIDERACIONES PREVIAS .................................................................42 2.1.1 METODOLOGÍA DE DESARROLLO DE SOFTWARE SELECCIONADA .......................................................................................... 42 2.1.1.1 Justificación ................................................................................... 42 2.1.2 ALTERNATIVAS DE SERVIDORES DE STREAMING DE AUDIO/VIDEO .............................................................................................. 42 2.1.2.1 Selección y Justificación ................................................................ 48 2.1.3 REPRODUCTOR DE STREAMING DE AUDIO/VIDEO SELECCIONADO .......................................................................................... 48 2.1.3.1 Justificación ................................................................................... 48 2.2 CONFIGURACIONES INICIALES ...............................................................49 2.2.1 ARCHIVO DE CONFIGURACIÓN XORG.CONF ................................. 49 2.2.2 ARCHIVO DE CONFIGRUACIÓN FFSERVER.CONF ........................ 50 2.2.3 ARCHIVOS DE CONFIGURACIÓN “*.DS” DE DEVIL’S PIE ............... 51 2.3 DIAGRAMA DE FLUJO DE LA APLICACIÓN .............................................53 2.3.1 SERVIDOR .......................................................................................... 53 2.3.2 CLIENTE ............................................................................................. 54 2.4 PROGRAMACIÓN Y COMANDOS .............................................................55 2.4.1 DESCRIPCIÓN DE COMANDOS EMPLEADOS EN FFWALLVIEW ... 55 2.4.1.1 Script de instalación de pre-requisitos “PreReq.sh” ....................... 55 2.4.1.2 Script de selección del modo de ejecución “MODE.sh” ................. 57 2.4.1.3 Script para remasterización de video. ............................................ 57 2.4.1.4 Script principal para el servidor FFWallView.................................. 60 2.4.1.5 Script de streaming de video para el servidor FFWallView ............ 61 2.4.1.6 Script de streaming de un evento en vivo para el servidor FFWallView “SendLiveC.sh” y “SendLiveG.sh” ......................................... 63 2.4.1.7 Script de streaming de un screencast para el servidor FFWallView “SendScrC.sh” y “SendScrG.sh” ........................................... 64 2.4.1.8 Script principal para el cliente FFWallView .................................... 65 2.4.1.9 Script de transmisión de video para el cliente FFWallView “DivTxVidC.sh” y “DivTxVidG.sh” .............................................................. 66 2.4.1.10 Script para terminar la ejecución de FFWallView “OFFWV.sh” ... 68 2.5 HARDWARE RECOMENDADO PARA EL FUNCIONAMIENTO DE LA APLICACIÓN FFWALLVIEW .............................................................................69 2.5.1 SERVIDOR .......................................................................................... 69 2.5.2 CLIENTE .............................................................................................. 74 CAPÍTULO III ....................................................................................................... 76 PRUEBAS, RESULTADOS Y COSTOS .............................................................. 76 3.1 PRUEBAS Y RESULTADOS EN EL SERVIDOR ........................................76 3.1.1 REMASTERIZACIÓN DE VIDEO ......................................................... 76 3.1.2 MODO DE OPERACIÓN “TRANSMITIR VIDEO” ................................ 79 3.1.3 MODO DE OPERACIÓN “LIVESTREAM” ............................................ 87 3.1.4 MODO DE OPERACIÓN “SCREENCAST” .......................................... 90 3.2 PRUEBAS Y RESULTADOS EN EL CLIENTE............................................91 3.2.1 MODO DE OPERACIÓN “TRANSMITIR VIDEO” ................................ 91 3.2.2 MODO DE OPERACIÓN “LIVESTREAM” ............................................ 98 3.2.3 MODO DE OPERACIÓN “SCREENCAST” ........................................ 101 3.3 COSTOS....................................................................................................105 3.3.1 PRECIO DE LA APLICACIÓN FFWALLVIEW ................................... 106 3.3.2 COTIZACIÓN DE LA ALTERNATIVA DEL MERCADO ECUATORIANO .......................................................................................... 107 3.3.3 COTIZACIÓN DE LA ALTERNATIVA DEL MERCADO EXTRANJERO ............................................................................................ 107 3.3.4 COMPARATIVA DE PRECIOS .......................................................... 108 CAPÍTULO IV..................................................................................................... 109 CONCLUSIONES Y RECOMENDACIONES ..................................................... 109 4.1 CONCLUSIONES ......................................................................................109 4.2 RECOMENDACIONES ..............................................................................112 REFERENCIAS BIBLIOGRÁFICAS ANEXOS ÍNDICE DE FIGURAS CAPÍTULO I Figura 1.1 Proyecto GNU/Linux………………….……………………........... 1 Figura 1.2 Entorno de Escritorio GNOME…...………………………............ 2 Figura 1.3 Entorno de Escritorio KDE……………………………….............. 3 Figura 1.4 Entorno de Escritorio LXDE………………………………............ 3 Figura 1.5 Entorno de Escritorio Xfce…………………………………........... 4 Figura 1.6 Arquitectura de distribuciones Linux con componentes GNU........................................................................................... 5 Figura 1.7 Distribución “Fedora 17 (Beefy Miracle)”……………….............. 6 Figura 1.8 Distribución “Ubuntu 12.10 (Quantal Quetzal)”…….……........... 6 Figura 1.9 Ilustración de FFmpeg……………………………………….......... 8 Figura 1.10 Funcionamiento de FFmpeg………………………………........... 9 Figura 1.11 Funcionamiento de FFserver…………………………….............. 13 Figura 1.12 Red de Área Local………………………………………................ 17 Figura 1.13 Red de Área Metropolitana………………………………….......... 18 Figura 1.14 Red de Área Extendida……………………………………............ 19 Figura 1.15 Intranet……………………………………………………................ 20 Figura 1.16 Arquitectura Cliente – Servidor…………………………............... 21 Figura 1.17 Resultado de instalación completa de FFmpeg (Ubuntu).......... 29 Figura 1.18 FFmpeg, FFplay, FFserver y FFprobe instalados en versión 0.10.2………………................................................. Figura 1.19 Figura 1.20 31 FFmpeg, FFplay, FFserver y FFprobe reinstalados en versión 1.0………………………............................................ 32 Resultado de instalación completa de FFmpeg (Fedora)..….... 36 CAPÍTULO II Figura 2.1 FFserver………………..…………………………….................. 43 Figura 2.2 VideoLAN “VLC” Streaming………………………..….…........ 44 Figura 2.3 Helix Universal Media Server………………………………..... 46 Figura 2.4 Darwin Streaming Server…………………………………....... 47 Figura 2.5 Diagrama de flujo de la aplicación para el servidor……....... 53 Figura 2.6 Diagrama de flujo de la aplicación para el cliente................. 54 Figura 3.1 Video original sin remasterizar……………………………… 76 Figura 3.2 Transmisión de video sin remasterizar………………..…… 77 Figura 3.3 Video original remasterizado………………………………... 77 Figura 3.4 Transmisión de video remasterizado……………………….. 78 Figura 3.5 Propiedades del video antes y después de remasterizar... 78 Figura 3.6 Resolución del monitor………………………………………. 79 Figura 3.7 Lista de videos almacenados en el servidor………………. 79 Figura 3.8 Parámetros del archivo de video para realizar el CAPÍTULO III streaming............................................................................ 80 Figura 3.9 Salidas de streaming..…………………………..………….... 81 Figura 3.10 Streaming en curso………………………………………….. 82 Figura 3.11 Aplicación OFFWallView……………………………………. 82 Figura 3.12 Notificación de terminación de FFWallView………………. 82 Figura 3.13 Características generales del sistema (servidor)….……… 83 Figura 3.14 Consumo de recursos al inicio del streaming………...…… 83 Figura 3.15 Consumo de Recursos durante el streaming……………… 84 Figura 3.16 Consumo de recursos al final del streaming………………. 84 Figura 3.17 Características generales del sistema (servidor, prueba 1)……………………….………………….. Figura 3.18 Consumo de recursos durante el streaming (prueba 1)…………………………………………………….. Figura 3.19 86 Consumo de recursos durante el streaming (prueba 3)…………………………………….……………….. Figura 3.23 86 Características generales del sistema (servidor, prueba 3)………………………………………….. Figura 3.22 86 Consumo de recursos durante el streaming (prueba 2)…………………………………………………….. Figura 3.21 85 Características generales del sistema (servidor, prueba 2)………………………………………….. Figura 3.20 85 87 Efecto por envío de 4 flujos directamente desde la webcam............................................................................... 87 Figura 3.24 Inicio de streaming en modo de operación livestream….... 88 Figura 3.25 Parámetros de FFmpeg para realizar un livestream……… 88 Figura 3.26 Parámetros de FFmpeg para realizar un livestream (continuación)…………………….…………………………… Figura 3.27 89 Consumo de recursos durante el streaming de un evento en vivo……………………………………………...…. 89 Figura 3.28 Parámetros de FFmpeg para realizar un screencast…….. 90 Figura 3.29 Consumo de recursos screencast………………………….. 91 Figura 3.30 Espera de señal de transmisión…………………………….. 92 Figura 3.31 Inicio de transmisión………………………………………….. 92 Figura 3.32 Entradas de streaming para transmitir video………………. 93 Figura 3.33 Presentación del Wall View con créditos iniciales………… 94 Figura 3.34 Instante aleatorio durante la presentación del Wall View……………………………………………………………. 94 Figura 3.35 Efecto por terminación del streaming desde el servidor..... 95 Figura 3.36 Presentación de duplicados en el Wall View………………. 95 Figura 3.37 Características generales del sistema (cliente)…………… 96 Figura 3.38 Consumo de recursos al inicio de la presentación………... 96 Figura 3.39 Consumo de recursos durante la presentación…………… 97 Figura 3.40 Consumo de recursos al cancelar la presentación……….. 97 Figura 3.41 Espera de señal de livestream……………...………………. 98 Figura 3.42 Entradas de streaming para livestream…………...……….. 99 Figura 3.43 Presentación de un evento en vivo en el Wall View…...…. 100 Figura 3.44 Presentación de duplicados de un evento en vivo en el Wall View……………………………………...………… 100 Figura 3.45 Consumo de recursos durante la presentación de un evento en vivo…………………………...……………………. 101 Figura 3.46 Recepción de señal de screencast…………………………. 101 Figura 3.47 Entradas de streaming para screencast…………...………. 102 Figura 3.48 Desfase señal recibida vs. señal original…………………... 103 Figura 3.49 Presentación de un screencast en el Wall View…………... 104 Figura 3.50 Presentación de duplicados de un screencast en el Wall View……………………………………………..…….. Figura 3.51 104 Consumo de recursos durante la presentación de un screencast……………………………………………… 105 ÍNDICE DE TABLAS CAPÍTULO I Tabla 1.1 Interfaces de conexión para tarjetas gráficas….…………..… 24 Tabla 1.2 Tipos de memoria RAM de tarjetas gráficas……..………..…. 25 CAPÍTULO II Tabla 2.1 Requerimientos generales de las distribuciones Ubuntu y Fedora ……………………………………………………………. 70 Tabla 2.2 Resumen de cálculo capacidad de almacenamiento………... 72 Tabla 2.3 Hardware recomendado para el servidor FFWallView………. 74 Tabla 2.4 Hardware recomendado para el cliente FFWallView………… 75 CAPÍTULO III Tabla 3.1 Precio de la aplicación FFWallView……………………...……. 106 Tabla 3.2 Cotización mercado ecuatoriano……………………..………... 107 Tabla 3.3 Cotización mercado extranjero…………………………………. 107 ÍNDICE DE ECUACIONES CAPÍTULO II Ecuación 2.1 Cálculo de espacio en disco de un video.……………...…..... 71 Ecuación 2.2 Cálculo del bit rate………………………………………………. 71 Ecuación 2.3 Cálculo de ancho de banda para streaming…………………. 72 ÍNDICE DE ESPACIOS DE CÓDIGO CAPÍTULO II Espacio de Código 2.1 Instalación de pre-requisitos (1)............................... 55 Espacio de Código 2.2 Instalación de pre-requisitos (2)……………............. 56 Espacio de Código 2.3 Selección del modo de ejecución............................. 57 Espacio de Código 2.4 Remasterización de video, modo consola (1).......... 58 Espacio de Código 2.5 Remasterización de video, modo consola (2)…...... 58 Espacio de Código 2.6 Remasterización de video, modo gráfico................. 59 Espacio de Código 2.7 Servidor FFWallView, modo consola....................... 60 Espacio de Código 2.8 Servidor FFWallView, modo gráfico........................ 60 Espacio de Código 2.9 Streaming de video, modo consola......................... 61 Espacio de Código 2.10 Streaming de video, modo gráfico........................... 62 Espacio de Código 2.11 Streaming en modo livestream................................ 63 Espacio de Código 2.12 Streaming en modo screencast............................... 64 Espacio de Código 2.13 Cliente FFWallView, modo consola......................... 65 Espacio de Código 2.14 Cliente FFWallView, modo gráfico.......................... 65 Espacio de Código 2.15 Pruebas de conectividad......................................... 66 Espacio de Código 2.16 Modo de transmisión (presentación)....................... 67 Espacio de Código 2.17 Segmentación y transmisión.................................... 67 Espacio de Código 2.18 Terminación de FFWallView.................................... 68 i RESUMEN En la actualidad se nota un considerable crecimiento en el uso de pantallas gigantes o dispositivos de proyección, para presentar videos pertinentes a publicidad, educación y afines. Sin embargo, el alto precio de sistemas dedicados exclusivamente a la reproducción multimedia, se torna como una limitante para la implementación de este tipo de sistemas; de allí nace la iniciativa de plantear opciones que mermen en cierta medida los costos asociados. Por otro lado, las alternativas en hardware que están vigentes, no se encuentran disponibles en el mercado ecuatoriano; es decir, que para contar con alguno de los sistemas mencionados, necesariamente se debe realizar la importación del mismo. Además, cabe mencionar que estos sistemas implican la adquisición de elementos adicionales (hardware dedicado) para su adecuado funcionamiento, tales como: mainboard compatible y con características específicas, fuente de poder de última generación, sistema de ventilación, entre otros. Por los motivos descritos anteriormente, la finalidad del presente proyecto es realizar una aplicación basada en software libre, que permita implementar un Wall View construido con monitores comunes, siendo importante el tomar en cuenta la sección del video que cada uno debe representar. El uso de herramientas libres en el desarrollo de dicha aplicación, representa no incurrir en gastos relativos a la adquisición de licencias de software orientado a programación. La aplicación desarrollada será capaz de presentar en el Wall View un video educativo, informativo y/o de publicidad, un evento en vivo a través de una webcam, o una captura de escritorio, desde el servidor. ii PRESENTACIÓN El presente proyecto consta de cuatro capítulos, los cuales puntualizan todos los pormenores para cumplir con el objetivo planteado. En el primer capítulo se estudia de forma general la plataforma-cruzada FFmpeg; además se describen las principales características del sistema operativo GNU/Linux, del audio y video digital, y de las redes de voz y datos. Se incluye también una breve explicación de las metodologías de desarrollo de software afines al propósito que se persigue en dicho proyecto. En el segundo capítulo se realiza una clara descripción sobre las consideraciones y configuraciones previas al diseño, y el desarrollo en sí de la aplicación cliente/servidor que permite tomar una señal de video, para dividirla y procesarla usando las herramientas de FFmpeg, y luego ser presentada en monitores, ajustando las características de la imagen a cada uno de ellos, conformando un Wall View. Asimismo, en este apartado, también se especifican los requerimientos de hardware apropiados para el correcto desempeño de la aplicación. En el tercer capítulo se muestran las diferentes pruebas y los resultados derivados del funcionamiento de la aplicación. Se incluye también la cotización relativa a los componentes asociados para conformar un Wall View con la alternativa presentada en este proyecto. En el cuarto capítulo se presentan las conclusiones y recomendaciones inherentes al desarrollo del proyecto. Finalmente se incluyen anexos que contienen información concerniente a la Guía de Usuario de la aplicación, descripción del proceso de desarrollo de la aplicación con la metodología incremental, cotizaciones de los proveedores consultados, y método de instalación manual de controladores de tarjetas gráficas GeForce. 1 CAPÍTULO I FUNDAMENTOS TEÓRICOS 1.1 GENERALIDADES 1.1.1 GNU – LINUX [L1] [PW1] [PW2] El término GNU/Linux se emplea para referirse a la combinación del kernel1 libre similar a Unix denominado Linux con las herramientas del proyecto GNU 2 (ver Figura 1.1). Figura 1.1 Proyecto GNU/Linux. Linux es en sí el sistema operativo, pero, parte fundamental de la interacción entre el kernel y los programas de aplicación se maneja usualmente con las herramientas del proyecto GNU y con entornos de escritorio basados en GNOME (GNU Network Object Model Environment), aun cuando este último tuvo un origen independiente. Sin embargo, una parte significativa de los usuarios alrededor del mundo, así como muchos medios generales y especializados, prefieren utilizar el término Linux para referirse a la asociación de ambos proyectos. En Linux se distinguen dos modos de operación, tanto en entorno gráfico como en modo consola (línea de comandos), siendo la consola el modo más común en distribuciones para servidores, mientras que la interfaz gráfica está enfocada hacia el usuario final (de hogar o empresarial). 1 Kernel: Núcleo de un Sistema Operativo. GNU: Es un acrónimo recursivo que significa GNU No es Unix (GNU is Not Unix). El proyecto GNU fue iniciado por Richard Stallman con el objetivo de crear un sistema operativo completamente libre. 2 2 Respecto del entorno gráfico, se debe mencionar la variedad de entornos de escritorio existentes. Estos entornos son un conjunto de programas conformados por ventanas, iconos y aplicaciones que facilitan el uso y manejo del computador. Los entornos de escritorio más populares en GNU/Linux son: GNOME, KDE, LXDE y Xfce. 1.1.1.1 Entorno de Escritorio GNOME [PW3] “Es un entorno de escritorio e infraestructura de desarrollo para sistemas operativos Unix y derivados Unix como GNU/Linux, BSD o Solaris; compuesto enteramente de software libre.” (Ver Figura 1.2). Figura 1.2 Entorno de Escritorio GNOME. 1.1.1.2 Entorno de Escritorio KDE [PW4] “Es un proyecto de software libre para la creación de un entorno de escritorio e infraestructura de desarrollo para diversos sistemas operativos como GNU/Linux, Mac OS X, Windows, entre otros.” (Ver Figura 1.3). 3 Figura 1.3 Entorno de Escritorio KDE. 1.1.1.3 Entorno de Escritorio LXDE[PW5] “Es un entorno de escritorio libre para Unix y otras plataformas POSIX, como Linux o BSD. El nombre corresponde a "Lightweight X11 Desktop Environment", que en español significa Entorno de escritorio X11 ligero.” (Ver Figura 1.4). Figura 1.4 Entorno de Escritorio LXDE. 4 1.1.1.4 Entorno de Escritorio Xfce[PW6] “Es un entorno de escritorio ligero para sistemas tipo Unix como GNU/Linux, BSD, Solaris y derivados. Se configura íntegramente con el ratón o mouse.” (Ver Figura 1.5). Figura 1.5 Entorno de Escritorio Xfce. Las aplicaciones para Linux se distribuyen básicamente en los formatos .deb 3 y .rpm4, aunque también existe la posibilidad de instalar aplicaciones a partir de código fuente (sin discriminar la distribución de Linux 5 que se esté usando). Una distribución de Linux es una distribución de software basada en el kernel de Linux que incluye determinados paquetes informáticos orientados a satisfacer requerimientos de un grupo específico de usuarios. 3 .deb: Formato para aplicaciones desarrolladas bajo distribuciones Debian y derivadas. .rpm: Formato para aplicaciones desarrolladas bajo distribuciones Red Hat y derivadas. 5 Distribución de Linux: También denominada coloquialmente como “distro”. 4 5 Las distribuciones de Linux están compuestas, total o mayoritariamente, de software libre6, aunque a menudo incorporan aplicaciones y/o controladores privativos (propietarios). (Ver Figura 1.6). Figura 1.6 Arquitectura de distribuciones Linux con componentes GNU. Existen distribuciones soportadas comercialmente, como Fedora (Red Hat), OpenSUSE (Novell), Ubuntu (Canonical Ltd.), Mandriva, entre otras. Asimismo, se tienen distribuciones mantenidas por comunidades, como Debian y Gentoo. También existen distribuciones que no están relacionadas con alguna empresa o comunidad, como es el caso de Slackware7. (Ver Figura 1.7 y Figura 1.8). 6 [PW2] Software Libre : Es una cuestión de libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y modificar el software (accediendo al código fuente). Esta característica da origen a ediciones domésticas, empresariales y para servidores. 7 [PW7] Slackware : “Es la distribución de Linux más antigua que tiene vigencia. En su versión 14.00, Slackware incluye la versión del núcleo Linux 3.2.29 y Glibc 2.15.” 6 Figura 1.7 Distribución “Fedora 17 (Beefy Miracle)”. Figura 1.8 Distribución “Ubuntu 12.10 (Quantal Quetzal)”. 7 1.1.2 FFMPEG [PW8] [PW9] [P1] 1.1.2.1 Descripción del Proyecto FFmpeg FFmpeg es una solución completa de código libre y de plataforma cruzada para grabar, convertir y reproducir audio y video localmente o a través de la red. Es un software libre licenciado bajo LGPL8 o GPL9 dependiendo de la elección en las opciones de configuración. Al momento de usar FFmpeg o sus bibliotecas, se debe acordar los términos de la licencia en cuestión. Es desarrollado bajo Linux y puede ser compilado para plataformas como Redhat “RPMs”, Debian “DEBs”, Windows y MacOS. FFmpeg, como plataforma, está formada por elementos principales como: · FFmpeg: Herramienta que permite procesar archivos multimedia y convertirlos en diferentes formatos. · FFplay: Reproductor muy simple y portable de archivos multimedia. · FFserver: Es un servidor de streaming para audio y video de todo lo que FFmpeg pueda procesar y usar como entrada. · FFprobe: Obtiene información de los recursos multimedia y los imprime en pantalla. Y algunas bibliotecas como: · libavformat: Biblioteca que contiene los multiplexores-demultiplexores para determinar el tipo de archivo, e identificar sus códecs asociados. · libavcodec: Biblioteca que contiene todos los códecs10 de FFmpeg, para consultar información acerca del streaming, y para codificar/decodificar el archivo multimedia. Aunque el objetivo principal de libavcodec son archivos de audio/video, éste también provee códecs para formatos de imágenes como GIF y PNG. · libavutil: Biblioteca de apoyo que contiene todas las rutinas comunes en las diferentes partes de FFmpeg. 8 LGPL: Lesser General Public License “Licencia Pública General Reducida”. GPL: General Public License “Licencia Pública General”. 10 Códecs: Es la abreviatura y/o nombre que se le da un codificador-decodificador. 9 8 · libpostproc: Biblioteca de funciones de post-procesado de video. · libswscale: Biblioteca de escalado de video. Esencialmente, FFmpeg provee un framework 11 que: · Determina el tipo de archivo multimedia · Enumera los streaming multimedia que contiene. · Identifica los códecs necesarios para decodificar/descomprimir/leer los streaming. · Opcionalmente los convierte/guarda en un formato determinado. 1.1.2.2 FFmpeg [PW8] [P1][M1] Es una herramienta muy rápida en línea de comandos que permite convertir archivos de audio y/o video de un formato a otro, capturar y codificar en tiempo real desde distintas fuentes como una webcam o una tarjeta de TV, o realizar un screencast (grabar el escritorio). Permite manejar parámetros característicos de audio y video como imágenes por segundo (frames per second, fps), resolución, relación de aspecto, tasa de bits, compresión, número de canales de audio, entre otros. En la Figura 1.9 [PW10] se ilustran las aplicaciones de FFmpeg. Figura 1.9 Ilustración de FFmpeg. 11 Framework: Conjunto estandarizado de conceptos, experiencias y criterios para enfocar un determinado tipo de problemática, cuya finalidad es servir de referencia, para solventar nuevos problemas de carácter similar. 9 1.1.2.1.1 Descripción del funcionamiento El diagrama de la Figura 1.10 describe el proceso de codificación y decodificación que realiza FFmpeg. Figura 1.10 Funcionamiento de FFmpeg. FFmpeg utiliza la biblioteca libavformat (contenedor de demultiplexores) para leer los archivos de entrada y obtener su información que se encuentra codificada. Cuando existan múltiples archivos de entrada, ffmpeg mediante un rastreo del menor timestamp (marca de tiempo) los mantiene sincronizados. 1.1.2.1.2 Opciones principales ‘-L’ Muestra la licencia. ‘-h, -?, -help, --help [arg]’ Muestra la ayuda. ‘-version’ Muestra la versión. ‘-formats’ Muestra los formatos disponibles. El significado de los campos de los parámetros es el siguiente: ‘D’ Decodificadores12 disponibles. ‘E’ Codificadores13 disponibles. 12 13 Decodificador: Convierte señales de audio/video digitales en señales de audio/video analógicos. Codificador: “Convierte señales de audio/video analógico a señales de audio/video digital”. 10 ‘-codecs’ Muestra todos los códecs conocidos por libavcodec. ‘-decoders’ Muestra los decodificadores disponibles. ‘-encoders’ Muestra todos los codificadores disponibles. ‘-bsfs’ Muestra los filtros de bitstream14. ‘-protocols’ Muestra los protocolos disponibles. ‘-filters’ Muestra los filtros disponibles en libavfilter. ‘-f fmt (input/output)’ Fuerza el formato de entrada o salida. ‘-i filename (input)’ Nombre del archivo de entrada. ‘-y (global)’ Sobre-escribe el archivo de salida sin preguntar. ‘-n (global)’ No sobre-escribe el archivo de salida si el archivo existe. ‘-c[:stream_specifier] codec (input/output,per-stream)’ ‘-codec[:stream_specifier] codec (input/output,per-stream)’ Selecciona un codificador o un decodificador de uno o más streams. 14 Bitstream: Secuencia o flujo de bits. 11 ‘-t duration (output)’ Determina el tiempo de duración del procesamiento del archivo, se lo puede configurar en segundos o en el formato hh:mm:ss. ‘-fs limit_size (output)’ Configura el tamaño máximo del archivo en bytes. ‘-q[:stream_specifier] q (output,per-stream)’ ‘-qscale[:stream_specifier] q (output,per-stream)’ Usa una escala de calidad fija. El significado de "q" es códec-dependiente. ‘-aspect[:stream_specifier] aspect (output,per-stream)’ Configura la relación de aspecto15, por ejemplo "4:3", "16:9", "1.3333", y "1.7777" son argumentos válidos. -vf crop=width:height:x:y Permite segmentar el video. 1.1.2.3 FFplay[PW11][M2] Es un reproductor sencillo y portable de archivos multimedia, que utiliza las bibliotecas de FFmpeg y las bibliotecas SDL16 , es principalmente usado como un banco de pruebas de API 17 de FFmpeg. 1.1.2.3.1 Opciones principales. ‘-x width’ Forza el ancho de pantalla. ‘-y height’ Forza la altura de pantalla. 15 Relación de aspecto: Es la proporción entre las dimensiones ancho y altura. Simple DirectMedia Layer: Es una biblioteca de plataforma cruzada para uso multimedia. 17 API (Application Programming Interface “Interfaz de Programación de Aplicaciones”): Provee una capa de abstracción que permite la comunicación entre componentes de software. 16 12 ‘-an’ Deshabilita el audio. ‘-vn’ Deshabilita el video. ‘-ss pos’ Avanza a una determinada posición del archivo de audio/video. ‘-t duration’ Configurar el tiempo de reproducción del archivo de audio/video. ‘-bytes’ Avanza por tamaño en bytes. ‘-f fmt’ Fuerza el formato. ‘-window_title title’ Establece un título a la ventana, el nombre por defecto es el nombre del archivo. ‘-loop number’ Número de veces que se va a reproducir el archivo. “0” (cero) significa una reproducción infinita. 1.1.2.4 FFserver [PW12] [PW13][M3] Es un servidor de streaming de audio/video que está habilitado para recoger varias fuentes de entrada (normalmente aplicaciones FFmpeg), para luego transcodificar 18, remultiplexar 19, y/o difundir cada una de ellas utilizando múltiples streams de salida, distribuyéndolos a uno o varios clientes para su visualización (ver Figura 1.11). 18 19 Transcodificar: Conversión directa, digital –digital de un códec a otro. Remultiplexar: Proceso de demultiplexar un contenedor y multiplexarlo nuevamente. 13 Figura 1.11 Funcionamiento de FFserver. 1.1.2.5 FFprobe [PW14] [M4] Recopila información de los archivos multimedia y lo muestra de en una forma legible. FFprobe tratará de abrir cualquier archivo que sea especificado como entrada, y en caso de no ser reconocido como un archivo multimedia, se devuelve como un archivo de salida positivo. Se lo puede usar como una aplicación independiente o, gracias a que está diseñado para ser analizado fácilmente por un filtro de texto, puede ser usado en combinación con alguno de aquellos. 1.1.3 ESQUEMAS DE COMPRESIÓN DE AUDIO Y VIDEO 1.1.3.1 Multimedia [PW15 ] “Multimedia es un término que procede de la lengua inglesa y que refiere a aquello que utiliza varios medios de manera simultánea en la transmisión de una información. Una presentación multimedia, por lo tanto, puede incluir fotografías, videos, sonidos y texto. El concepto se aplica a objetos y sistemas que apelan a 14 múltiples medios físicos y/o digitales para comunicar sus contenidos. El término también se usa en referencia a los medios en sí que permiten almacenar y difundir contenidos con estas características.” 1.1.3.2 Audio [PW16] La generación del sonido se debe a la vibración de alguna fuente, por ejemplo la vibración de partículas de aire, que son perceptibles para el oído humano 20 e interpretadas por el cerebro. El sonido digital es la conversión de la señal analógica, ondas sonoras, en una señal digital, unos y ceros. 1.1.3.2.1 Compresión de Audio [PW17] [PW18] “La compresión de audio es una forma de compresión de datos, específicamente en la reducción del tamaño de los archivos de audio. Los algoritmos de compresión de audio normalmente son llamados códecs de audio. Existen dos tipos de compresión, basados en algoritmo de compresión sin pérdida o algoritmo de compresión con pérdida.” [PW19] Compresión basada en algoritmos sin pérdidas [PW20] Los archivos que se basan en este tipo de compresión representan la información ocupando u utilizando un espacio menor, pero consiguiendo la reconstrucción exactamente igual a la original. Archivos de sonido sin pérdida: · WAV o wave (Waveform Audio Format): Se emplea para almacenar sonidos en los ordenadores con Windows. · MIDI (Musical Instrument Digital Interface): Considerado el estándar para industria de la música electrónica. Es muy útil para trabajar con dispositivos como sintetizadores musicales o tarjetas de Sonido. Su extensión es .midi o .mid. 20 · AU: Formato de UNIX (Linux). · AIFF (Audio Interchange File Format): Formato propio de MacOS. El rango de frecuencia audible oscila entre los 20 Hz y 20 KHz. 15 Compresión basada en algoritmos con pérdidas [PW21] Los archivos que se basan en este tipo de compresión representan la información con una menor cantidad de datos. Esto implica la imposibilidad de reconstruir exactamente la información original del archivo; lo que se obtendrá será una aproximación, con la gran ventaja que requerirá de un menor espacio de almacenamiento. Archivos de sonido con pérdida: · MP3 o MPEG-1 Audio Layer 3: Formato de audio digital estándar, la pérdida de información del formato mp3 no es audible por el oído humano, de forma no se distinguirá la diferencia entre un archivo sin comprimir y uno en formato mp3. Relación de compresión de 10:1 patentado. · AAC (Advanced Audio Coding): Formato de audio digital estándar como extensión de MPEG-2 comprimido con pérdida. Mejora el rendimiento del MP3. Propiedad de Apple. · OGG: Formato de audio digital comprimido con pérdida. Normalmente están comprimidos con el códec Vorbis, que es un códec de audio libre. Mejora la calidad de un MP3 del mismo tamaño. · Real Audio o RM: Es un formato casi exclusivo para el streaming. Basado en el formato ACC. · WMA (Windows Media Audio): Formato de compresión de audio con pérdida aunque también existe este formato con compresión sin pérdida. Competencia de Microsoft para el MP3. Calidad muy parecida a éste. · AC3: Formato propio de los dvd, permite varios canales de audio (5.1 y 7.1). 1.1.3.3 Video [PW22] Un video es una sucesión de imágenes que se reproducen a una determinada frecuencia, usualmente el ojo humano es capaz de distinguir hasta una sucesión de 20 imágenes por segundo, por lo que al mostrar más de 20 imágenes por segundo es posible engañar al cerebro y generar percepción de movimiento. La 16 calidad de un video se caracteriza por la cantidad de imágenes por segundo, fps (frames per second). Son almacenados en un determinado formato digital de video como puede ser AVI, MPEG, MPG, WMV, entre otros. 1.1.3.3.1 Compresión de Video [PW23] La importancia que tienen los codificadores ha ido en aumento en estos últimos años, debido a la búsqueda de una mejor calidad en la imagen con la menor capacidad de almacenamiento posible, para lo cual es necesario el uso de técnicas de compresión de datos, específicamente la compresión de video. · AVI (Audio Video Interleaved): Es el formato estándar para almacenar video digital. El archivo AVI puede contener video con una calidad excelente. Sin embargo el peso del archivo resulta siempre muy elevado. · MPEG (Moving Pictures Expert Group): Es un formato estándar para la compresión de video digital. Son archivos de extensión *.mpg ó *.mpeg. Admite distintos tipos de códecs de compresión: MPEG-1 (calidad CD), MPEG-2 (calidad DVD), MPEG-3 (orientado al audio MP3) y MPEG-4 (más orientado a la web). · H.264 [PW24] ( MPEG-4 AVC): Desarrollado para el uso en alta resolución en sistemas como HDTV, Blu-ray y HD DVD, así como dispositivos de baja resolución como Sony’s PSP y Apple’s iPod, H.264 ofrece mejor calidad a tamaños menores que los formatos MPEG-2 y MPEG-4 ASP (DivX or XviD). · MOV: Es el formato de video y audio desarrollado por Apple. · WMV (Windows Media Video): Desarrollado por Microsoft, Utiliza el códec MPEG-4 para la compresión de video, puede tener la extensión *.asf, por su razonable relación calidad/tamaño se puede usar para realizar streaming. · RM (Real Media): Propietario de Real Network, utiliza un códec propio para comprimir el audio, Tienen la extensión *.rm y *.ram, y también se puede usar para realizar streaming por su aceptable relación calidad/tamaño. 17 · FLV (Flash Video): Formato que utiliza el reproductor Adobe Flash para visualizar vídeo en Internet. Los archivos tienen la extensión *.flv y es la opción más utilizada para la difusión de videos por internet gracias a la accesibilidad a este reproductor desde distintos sistemas operativos, es popularmente usado por sitios como Youtube y Google Video. 1.1.4 CONCEPTO DE REDES [F2][PW25] 1.1.4.1 Redes de Área Local (LAN 21) Una Red de Área Local está formada por un grupo de equipos que pertenecen a un mismo grupo de trabajo (ver Figura 1.12), con el objeto de compartir recursos e intercambiar información, en un área geográfica relativamente pequeña y predeterminada (como una habitación, un edificio, o un conjunto de edificios). Las velocidades de transmisión oscilan entre 10 Mbps22 (Ethernet) y 10 Gbps 23 (10 Gigabit Ehternet), la tecnología que utilizan es la de conmutación, y gracias a las cortas distancias que no deben superar los 200 metros, se experimentan pocos errores y un bajo retardo. Figura 1.12 Red de Área Local. 21 LAN: Local Area Network “Red de Área Local”. Mbps: Megabits por segundo. 23 Gbps: Gigabits por segundo. 22 18 Aunque las LAN inicialmente fueron concebidas como redes de difusión conectadas a través de líneas telefónicas y ondas de radio, en la actualidad el esquema universal que se emplea es el de Ethernet Conmutada 24. 1.1.4.2 Redes de Área Metropolitana (MAN 25) Es una red de alta velocidad que conecta diversas LAN geográficamente dispersas, hasta distancias de 50 Km, permitiendo de este modo que dos redes locales se comuniquen remotamente, como si fueran parte de la misma red (ver Figura 1.13). Una MAN proporciona capacidad de integración de múltiples servicios (voz, datos, y vídeo), sobre medios de transmisión tales como fibra óptica y par trenzado, aprovechando su baja latencia (entre 1 ms y 50 ms), gran estabilidad y carencia de interferencias radioeléctricas. Las velocidades de una MAN generalmente son de 10 Mbps, 20 Mbps, 45 Mbps y 75 Mbps, sobre pares de cobre, y, 100 Mbps, 1 Gbps y 10 Gbps mediante Fibra Óptica. Figura 1.13 Red de Área Metropolitana. 1.1.4.3 Redes de Área Extendida (WAN 26) [F1] [P3] Una WAN conecta y permite la transmisión de datos de varias LAN y MAN geográficamente ubicadas a cientos de kilómetros (ver Figura 1.14). Las WAN transportan varios tipos de tráficos como voz, datos y video, proveyendo de 24 Ethernet Conmutada: Tecnología de red donde los hosts se conectan mediante enlaces punto a punto a un conmutador (switch) de tramas Ethernet. La estructura típica es en forma de árbol. 25 MAN: Metropolitan Area Network “Red de Área Metropolitana”. 26 WAN: Wide Area Network “Red de Área Extendida”. 19 servicio a un país o un continente. Tal es el caso de Internet o cualquier red en la cual no estén en un mismo edificio todos sus miembros. Figura 1.14 Red de Área Extendida. Muchas WAN son construidas por y para una organización o empresa particular y son de uso privado, otras son construidas por los ISPs27 para proveer de conexión a sus clientes. Estas conexiones pueden presentarse bajo diferentes esquemas, como el utilizar redes acondicionadas para el transporte de datos (PSTN28), emplear redes propias para el transporte de datos: VPN29, a través de un Proveedor de Servicio de Telecomunicaciones, o con una infraestructura propia. Las tecnologías más frecuentes para implementar una WAN son ATM 30, Frame Relay, xDSL31 y MPLS 32. 1.1.4.4 Intranet [PW26] Una intranet es una red que permite la comunicación entre varios equipos (de una misma empresa, organización y/o institución), que se realiza sobre un protocolo de comunicaciones estándar como TCP/IP (comúnmente) u otro diferente, siempre que todos los equipos que se comuniquen a la intranet utilicen el mismo protocolo (ver Figura 1.15). Se debe resaltar que una intranet también está orientada a quienes utilizan servicios de información que produce una determinada empresa, es decir, 27 ISP: Internet Service Provider “Proveedor de Servicios de Internet”. PSTN: Public Switched Telephone Network “Red Telefónica Pública Conmutada”. 29 VPN: Virtual Private Netwok “Red Privada Virtual”. 30 ATM: Asynchronous Transfer Mode “Modo de Transferencia Asincrónico”. 31 xDSL: Digital Subscriber Line “Línea Digital de Abonado”. 32 MPLS: MultiProtocol Label Switching “Conmutación MultiProtocolo por Etiquetas”. 28 20 servicios que se ponen a disposición de usuarios externos, pero exclusivos de dicha empresa. Figura 1.15 Intranet. 1.1.5 STREAMING [PW27] El termino streaming hace referencia a un flujo continuo (sin interrupciones). En computación streaming hace referencia a escuchar y/o ver un archivo multimedia en una red de datos, directamente de un servidor al mismo tiempo que lo está descargando. Esto se realiza con la ayuda de un buffer de datos que va almacenando lo que va descargando para luego ser mostrado al usuario, se diferencia del esquema de descarga de archivos en que no es necesario que se descargue por completo el archivo para poder acceder al mismo. Para la transmisión de información hace uso de protocolos ligeros como UDP33, RTSP34 y RTP35 que permiten que la entrega de información desde el servidor hasta el cliente quien reproduce el archivo, sea en un tiempo menor que el conseguido con protocolos como TCP36 y HTTP37. Esto se debe a la forma en que los protocolos mencionados manejan los paquetes perdidos y erróneos de información, mientras que TCP y HTTP, persiste en el reenvió de paquetes (perdidos/errados) hasta recibir una confirmación de transmisión exitosa. UDP, RTSP y RTP trabajan con el esquema de envío continuo de paquetes sin tomar 33 UDP: User Datagram Protocol “Protocolo de Datagramas de Usuario”. RTSP: Real Time Streaming Protocol “Protocolo de Streaming en Tiempo Real”. 35 RTP: Real-time Transport Protocol “Protocolo de Transporte en tiempo Real”. 36 TCP: Transmission Control Protocol “Protocolo de Control de Transmisión”. 37 HTTP: HyperText Transfer Protocol “Protocolo de Transferencia de HiperTexto”. 34 21 en cuenta los perdidos o erróneos, los cuales son casi imperceptibles al tratarse de aplicaciones multimedia. 1.1.6 ARQUITECTURA CLIENTE – SERVIDOR [PW27] Esta arquitectura se basa en la asignación de dos roles a los computadores que forman parte de una red, de esta forma se tienen: clientes y servidores. El cliente es una computadora o un proceso que inicia la comunicación y solicita los recursos o servicios que serán provistos por un servidor. Este host, espera y recibe respuestas, desde uno o varios servidores dependiendo del (los) servicio(s) que solicite y normalmente es quien interactúa con los usuarios finales. El servidor es una aplicación o un proceso que se encuentra en espera de solicitudes de los clientes, en base a las cuales devuelve los resultados en forma de una respuesta. Un servidor puede manejar las peticiones de múltiples clientes a la vez. Algunos servidores esperan las solicitudes de los clientes en direcciones de puertos 38 específicos, de forma que los clientes conocen a qué socket 39 IP deben realizar las peticiones (ver Figura 1.16). Figura 1.16 Arquitectura Cliente – Servidor. 38 Puerto: Extremo de una conexión lógica. Socket: Es una abstracción para representar el emparejamiento entre direcciones IP, protocolo de transporte y números puertos. 39 22 1.2 REQUERIMIENTOS 1.2.1 REQUERIMIENTOS HARDWARE 1.2.1.1 Múltiples monitores [PW29] [PW30] [PW31] El término múltiples monitores, también llamado multi-display se refiere a la posibilidad de tener varios dispositivos de visualización como monitores, televisores y proyectores en un mismo computador permitiendo al usuario incrementar la zona de visualización y la ejecución de programas. Esta opción se tiene disponible en los computadores Macintosh, Linux y con sistemas operativos Windows 98, ME, XP, Vista, 7, 8. La salida de video en una computadora es generada por un dispositivo que maneja señales gráficas, típicamente en una tarjeta extraíble pero puede también estar integrada dentro de la tarjeta madre 40 como parte del chipset. Las opciones de configuración son las siguientes: 1.2.1.1.1 Modo de Pantalla Duplicado Desde antes de disponer de computadoras personales, las señales de video eran divididas con un simple adaptador en Y 41 para duplicar las señales a múltiples monitores. Cuando las computadoras empezaron a tener salidas de video personales en todos los monitores se refleja exactamente lo mismo, el sistema operativo administra independiente la resolución, profundidad de color y la tasa de refresco, de modo que al usar el ratón sobre la pantalla original, también será reflejado en todos los monitores, facilitándose las presentaciones a una gran cantidad de público. 1.2.1.1.2 Modo de Pantalla Escritorio Extendido Consiste en la capacidad de las tarjetas de video de expandir el mismo flujo de datos de un escritorio a través de dos monitores, consiguiendo de esta forma el 40 Tarjeta Madre: Conocida también como Mainboard o placa base. Es la parte principal de un computador que permite conectar los demás dispositivos y que éstos interactúen entre sí. 41 Adaptador en Y: Es el mismo concepto de los actuales splitter (separadores/repetidores) de video. 23 doble de la resolución ya sea en forma horizontal o vertical, dependiendo del modo de configuración de los monitores, así por ejemplo, si la resolución de los monitores usados son de 1366x768 se puede tener una resolución combinada de 2732x768 o de 1366x1536, ambos monitores funcionarán a la misma resolución, profundidad de color y la tasa de refresco, de forma que se minimiza el uso de los recursos del sistema operativo. El concepto de escritorio extendido se puede ampliar no únicamente al uso de dos monitores, sino también a la implementación de tres o más de ellos con un mismo computador, empleando un hardware adecuado. Existen varias opciones de GPU42 para crear una pantalla unificada, como por ejemplo la tecnología Eyefinity de ATI, tarjetas de video a través de puertos pci o pci express, o en puertos usb. 1.2.1.2 Tarjeta de Video [PW32] Es un dispositivo de hardware que integra dentro de sí un circuito integrado encargado del proceso de gráficos por lo que liberan de carga al microprocesador, también integra memoria RAM (ver Tabla 1.2), evitando así el consumo de la memoria RAM 43 principal, para mostrarlas en un dispositivo de salida como puede ser un monitor. Se las instala dentro de ranuras de expansión en la tarjeta madre, tiene uno o varios puertos de salida con distintos tipos de conectores (ver Tabla 1.1) como pueden ser vga, dvi, hdmi, display-port, S-Video. 42 GPU: Graphics Processing Unit “Unidad de Procesamiento de Gráficos”. RAM: Random Access Memory “Memoria de Acceso Aleatorio”. “Se utiliza como memoria de trabajo para el sistema operativo, los programas y la mayoría del software.” 43 24 CONECTOR USO IMAGEN HDMI ("High Definition Permite Multimedia interface") computarizado en alta definición el uso de video (HD1080p). DVI ("Digital Visual Interface") Para la máxima visualización calidad en posible la de monitores de pantalla plana o proyectores digitales. VGA ("Video Graphics Array") Conector de video analógico adoptado universalmente por las tarjetas gráficas. Display-port Es una interfaz digital estándar que permite la transmisión de video y eventualmente de audio. Tabla 1.1 Interfaces de conexión para tarjetas gráficas. 25 TIPOS DE MEMORIA RAM GDDR Tipo de RAM GDDR5 "Graphics Double Data Rate 5" Características Especificación gráficas de para alto tarjetas rendimiento provee un doble ancho de banda a diferencia de GDDR4, que permite ser configurada a 32 y 64 bits. GDDR4 "Graphics Double Data Rate 4" Mejora características de consumo y ventilación con respecto a la GDDR3. GDDR3 "Graphics Double Data Rate 3" Reduce considerablemente costes de consumo y de disipación y permite aumentar la eficiencia de los módulos con el uso de sencillos sistemas de refrigeración. GDDR2 "Graphics Double Data Rate 2" Es un tipo de memoria RAM diseñada para tarjetas gráficas, funcionaba según el estándar DDR. GDDR "Graphics Double Data Rate" Es un tipo de memoria RAM diseñada para tarjetas gráficas. Tabla 1.2 Tipos de memoria RAM de tarjetas gráficas. 26 1.2.2 REQUERIMIENTOS SOFTWARE 1.2.2.1 Zenity [PW33][M5] Zenity es un programa de software libre y plataforma cruzada que facilita la creación de GUIs44, mediante línea de comandos y shell scripts. A diferencia de otros lenguajes de script como Perl y Python, Zenity puede ser usado como una herramienta gráfica ligera, que permite la interacción con el usuario a través de una interfaz sencilla, mostrando mensajes de diálogo. Algunos de los tipos de diálogo soportados son: · Diálogo de calendario. · Diálogo de contraseña · Diálogo de escala. · Diálogo de formularios. · Diálogo de lista. · Diálogo de mensaje Error, Información, Pregunta, Advertencia · Diálogo de progreso. · Diálogo de selección de archivos. · Diálogo de selección de color. · Diálogo para la entrada de texto. · Diálogo para el texto de información. · Icono de notificación. 1.2.2.2 Devil's Pie [PW34] [PW35][M6] Devil’s Pie es una herramienta que permite a las aplicaciones iniciarse en un lugar de trabajo específico, con especificaciones como tamaño y lugar, minimizado o maximizado, basado en archivos de configuración sencillos. A pesar de manejar ventanas no es un administrador de ventanas como lo son Compiz o Metacity, sin embargo este último carece de algunas características que son provistas por Devil’s Pie, lo cual permite que este pueda ser usado con cualquier gestor de ventanas. 44 GUI: Graphical User Interface “Interfaz Gráfica de Usuario”. 27 La configuración se la realiza mediante scripts cuyos nombres de archivo deben tener la extensión “.ds” para ser reconocidos. Devil’s Pie arranca ejecutando el comando devilspie en cualquier terminal, con lo cual serán leídos todos los archivos “*.ds” que son almacenados en el directorio por defecto: $HOME/.devilspie/ Ejemplo: /home/<YourUserName>/.devilspie 1.2.2.3 Notify-send [M7] Es un programa que envía notificaciones al escritorio, mediante línea de comandos. Dichas notificaciones pueden ser usadas para informar al usuario acerca de determinados eventos, o mostrar algún tipo de información sin necesidad de interrumpir las acciones que este ejecutando usuario. 1.3 INSTALACION FFMPEG 1.3.1 INSTALACIÓN DE FFMPEG PARA DISTRIBUICIONES DEBIAN Y DERIVADAS [PW36] El procedimiento que se describe a continuación permite instalar la última versión estable 45 de FFmpeg. En la Figura 1.17 se observa el resultado de instalación. 1.3.1.1 Previos Desinstalación completa de cualquier paquete existente relacionado con la herramienta FFmpeg: sudo apt-get remove ffmpeg x264 libav-tools libvpx-dev libx264-dev yasm Dependencias necesarias: sudo apt-get update sudo apt-get –y install autoconf build-essential checkinstall git \ libass-dev libfaac-dev libgpac-dev libjack-jackd2-dev libmp3lame-dev \ libopencore-amrnb-dev libopencore-amrwb-dev librtmp-dev libsdl1.2-dev \ libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libx11-dev \ libxext-dev libxfixes-dev pkg-config texi2html zlib1g-dev 45 NOTA: La instalación fue realizada y probada exitosamente bajo la distribución de Linux “Ubuntu Desktop 12.10 (Quantal Quetzal)”. 28 1.3.1.2 Instalación de FFmpeg Yasm 46: cd /usr/share sudo wget http://www.tortall.net/projects/yasm/releases/yasm-\ 1.2.0.tar.gz sudo tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0 sudo ./configure sudo make sudo checkinstall –pkgname=yasm –pkgversion=”1.2.0” –backup=no \ --deldoc=yes –fstrans=no –default x26447: cd .. sudo git clone –depth 1 git://git.videolan.org/x264 cd x264 sudo ./configure –enable-static sudo make sudo checkinstall –pkgname=x264 –pkgversion=”3:$(./version.sh | \ awk –F’[“ ]’ ‘/POINT/{print $4”+git”$5}’)” –backup=no –deldoc=yes \ --fstrans=no –default fdk-aac 48: cd .. sudo git clone –depth 1 git://github.com/mstorsjo/fdk-aac.git cd fdk-aac sudo autoreconf –fiv sudo ./configure –disable-shared sudo make sudo checkinstall –pkgname=fdk-aac –pkgversion=”$(date +%Y%m%d%H%M)-\ git” –backup=no --deldoc=yes –fstrans=no –default libvpx 49: cd .. sudo git clone –depth 1 http://git.chromium.org/webm/libvpx.git 46 Yasm: Es un ensamblador recomendado para x264 y FFmpeg. x264: Codificador de video H.264. 48 fdk-aac: Codificador de audio aac. 49 libvpx: Codificador/decodificador de video VP8. 47 29 cd libvpx sudo ./configure –disable-examples –disable-unit-tests sudo make sudo checkinstall –pkgname=libvpx –pkgversion=”1:$(date +%Y%m%d%H%M)-\ git” –backup=no –deldoc=yes –fstrans=no –default FFmpeg: cd .. sudo git clone –depth 1 git://source.ffmpeg.org/ffmpeg cd ffmpeg sudo ./configure –enable-gpl –enable-libass –enable-libfaac \ --enable-libfdk-aac –enable-libmp3lame –enable-libopencore-amrnb \ --enable-libopencore-amrwb –enable-librtmp –enable-libtheora \ --enable-libvorbis –enable-libvpx –enable-x11grab –enable-libx264 \ --enable-nonfree –enable-version3 sudo make install sudo checkinstall –pkgname=ffmpeg –pkgversion=”7:$(date +%Y%m%d%H%M)-\ git” –backup=no –deldoc=yes –fstrans=no –default hash –r Figura 1.17 Resultado de instalación completa de FFmpeg (Ubuntu). 30 1.3.1.3 Instalación de paquetes opcionales 50 La instalación de los paquetes opcionales que se detallan a continuación son necesarios para un mejor soporte y desempeño para esquemas relativos a MP4 y x264. Qt-faststart 51: cd /usr/share/ffmpeg sudo make tools/qt-faststart sudo checkinstall –pkgname=qt-faststart –pkgversion=”$(date +%Y%m%d%H%M)- \ git” –backup=no –deldoc=yes –fstrans=no –default install –Dm755 \ tools/qt-faststart /usr/local/bin/qt-faststart lavf 52 como soporte para x264: cd /usr/share/x264 sudo make distclean sudo ./configure –enable-static sudo make sudo checkinstall –pkgname=x264 –pkgversion=”3:$(./version.sh | awk \ -F’[“ ]’ ‘/POINT/{print $4”+git”$5}’)” –backup=no –deldoc=yes \ --fstrans=no –default Inicialmente se instaló la versión 0.10.2 de FFmpeg (ver Figura 1.18), la cual se consideraba como la más estable a la fecha 24 de julio de 2012. Con esta versión se realizaron los ensayos de familiarización con dicha herramienta. Posteriormente, y de manera definitiva, se reinstaló FFmpeg en su versión 1.0 (ver Figura 1.19), misma que a la fecha 28 de noviembre de 2012, tras algunas mejoras, se presentó como la versión más estable. 50 NOTA: Se recomienda la instalación de dichos paquetes para evitar eventuales conflictos con la aplicación. 51 qt–faststart: Esta es una herramienta muy útil para relocalizar algunos datos en el vídeo (H.264/MP4) y así permitir el inicio de la reproducción antes de que el archivo se haya descargado por completo en la web. 52 lavf: Permite que x264 acepte casi cualquier entrada que pueda ser manejada por FFmpeg. 31 Figura 1.18 FFmpeg, FFplay, FFserver y FFprobe instalados en versión 0.10.2. 32 Figura 1.19 FFmpeg, FFplay, FFserver y FFprobe reinstalados53 en versión 1.0. 53 NOTA: Recordar que al reinstalar la herramienta con los pasos descritos en este apartado, siempre se instala la versión más reciente de la misma. 33 1.3.1.4 Revertir los cambios realizados Para eliminar la herramienta FFmpeg (instalada bajo el lineamiento descrito en los pasos anteriores), se debe realizar el siguiente procedimiento: sudo apt-get -y autoremove autoconf build-essential checkinstall \ fdk-aac ffmpeg git libass-dev libfaac-dev libgpac-dev \ libjack-jackd2-dev libmp3lame-dev librtmp-dev libsdl1.2-dev \ libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libvpx \ libx11-dev libxfixes-dev pkg-config qt-faststart texi2html x264 yasm \ zlib1g-dev cd /usr/share sudo rm –R x264 fdk-aac libvpx ffmpeg 1.3.2 INSTALACIÓN DE FFMPEG PARA DISTRIBUCIONES RED HAT Y DERIVADAS [PW37] El procedimiento que se describe a continuación permite instalar la última versión estable 54 de FFmpeg. En la Figura 1.20 se observa el resultado de instalación. 1.3.2.1 Previos Desinstalación completa de cualquier paquete existente relacionado con la herramienta FFmpeg: yum erase ffmpeg x264 x264-devel-tools Dependencias necesarias: yum install gcc git make nasm pkgconfig wget Crear un directorio: mkdir ~/ffmpeg-source 54 NOTA: La instalación fue realizada y probada exitosamente bajo la distribución de Linux “Fedora 17 (Beefy Miracle)”. 34 1.3.2.2 Instalación de FFmpeg Yasm: cd ~/ffmpeg-source wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz tar xzvf yasm-1.2.0.tar.gz cd yasm-1.2.0 ./configure make # make install x264: cd ~/ffmpeg-source git clone git://git.videolan.org/x264 cd x264 ./configure --enable-static make # make install LAME 55: cd ~/ffmpeg-source wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame- \ 3.99.5.tar.gz tar xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ./configure --disable-shared --enable-nasm make # make install libogg 56: cd ~/ffmpeg-source wget http://downloads.xiph.org/releases/ogg/libogg-1.3.0.tar.gz tar xzvf libogg-1.3.0.tar.gz cd libogg-1.3.0 ./configure --disable-shared make # make install 55 56 LAME: Codificador de audio mp3. libogg: Requerimiento para libvorbis. 35 libvorbis 57: cd ~/ffmpeg-source wget http://downloads.xiph.org/releases/vorbis/libvorbis-1.3.3.tar.gz tar xzvf libvorbis-1.3.3.tar.gz cd libvorbis-1.3.3 ./configure --disable-shared make libvpx: cd ~/ffmpeg-source git clone http://git.chromium.org/webm/libvpx.git cd libvpx ./configure make # make install zlib 58: cd ~/ffmpeg-source wget http://zlib.net/zlib-1.2.7.tar.gz tar xzvf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure make # make install FFmpeg: cd ~/ffmpeg-source git clone git://source.ffmpeg.org/ffmpeg cd ffmpeg ./configure --enable-gpl --enable-libmp3lame --enable-libvorbis -enable-libvpx --enable-libx264 make # make install 57 58 libvorbis: Biblioteca de Vorbis que es un códec de audio libre de compresión con pérdida. zlib: requerido para codificar y decodificar varios formatos incluyendo PNG. 36 Figura 1.20 Resultado de instalación completa de FFmpeg (Fedora). 37 1.3.2.3 Revertir los cambios realizados Para eliminar la herramienta FFmpeg (instalada bajo el lineamiento descrito en los pasos anteriores), se debe realizar el siguiente procedimiento: cd ~/ffmpeg-source/yasm-1.2.0 # make uninstall cd ../x264 # make uninstall cd ../lame-3.99.5 # make uninstall cd ../libogg-1.3.0 # make uninstall cd ../libvorbis-1.3.3 # make uninstall cd ../libvpx # make uninstall cd ../zlib-1.2.7 # make uninstall cd ../ffmpeg # make uninstall rm -rf ~/ffmpeg-source # yum erase gcc git make nasm pkgconfig wget 1.4 METODOLOGÍAS DE DESARROLLO DE SOFTWARE [PW38] Las metodologías de desarrollo de software son básicamente un conjunto de procedimientos, técnicas, herramientas y soporte documental que ayuda a los desarrolladores (programadores) a realizar nuevo software. La constante innovación tecnológica hace necesaria la aplicación de nuevas metodologías adaptadas a las tendencias actuales. Por este motivo, se asevera que “la ausencia de metodología en el desarrollo de un proyecto de software implica con seguridad también la ausencia de calidad”. 38 Cada metodología de desarrollo de software tiene relativamente su propio enfoque. A continuación se explican los enfoques más generales, que se desarrollan en varias metodologías específicas. 1.4.1 METODOLOGÍA EN CASCADA Es un proceso secuencial de desarrollo en el que cada paso es visto hacia abajo (en cascada) a través de las fases de análisis de las necesidades, el diseño, implementación, pruebas, integración, y mantenimiento. Los principios básicos del modelo de cascada son los siguientes: 1. El proyecto está dividido en fases secuenciales, con cierta superposición y sobrelape aceptable entre fases. 2. Es indispensable que se realice la planificación, horarios, fechas, presupuestos y ejecución de todo un sistema de una sola vez. 3. Para iniciar una nueva fase, durante el ciclo de vida del proyecto, se mantiene un estricto control a través de la utilización de una amplia documentación escrita, así como a través de comentarios y aprobación provistos por el usuario y la tecnología de la información de gestión. 1.4.2 METODOLOGÍA DE PROTOTIPADO El prototipado es el framework de actividades dedicado al desarrollo de software prototipo, es decir, versiones incompletas de un software en particular. Sin embargo, el hecho de que la versión de software sea incompleta, no implica que la aplicación desarrollada se contraponga con la función principal para la que fue diseñada. 1.4.3 METODOLOGÍA INCREMENTAL Provee un modelo para controlar la complejidad y los riesgos, desarrollando una parte del software, y reservando el resto de aspectos para el futuro. Sus principios básicos son: 39 1. Se ejecutan una serie de mini-cascadas, donde todas las fases de la cascada modelo de desarrollo se han completado para una pequeña parte de los sistemas, antes de proceder a la posterior incremental. 2. Antes de proceder con lo progresivo, se definen los requisitos, es decir, se realiza una mini-cascada (diferente de la anterior) de desarrollo de cada uno de los incrementos del sistema. 3. El concepto inicial de software, análisis de las necesidades, y el diseño de la arquitectura y colectiva básicas se definen utilizando el enfoque de cascada, seguida por reiteraciones de prototipos, que culmina en la instalación de un prototipo final. 1.4.4 METODOLOGÍA EN ESPIRAL Esta metodología establece los siguientes principios básicos: 1. El enfoque principal se centra en la evaluación y reducción del riesgo del proyecto dividiéndolo en segmentos más pequeños, y así proporcionar más facilidad de cambio durante el proceso de desarrollo. Los riesgos pueden ser evaluados con la finalidad de validar la continuación del proyecto durante todo el ciclo de vida. 2. Los cuadrantes básicos de la espiral de desarrollo de software son: - Determinar objetivos, alternativas, y desencadenantes de la iteración59. - Evaluar alternativas. - Identificar y solventar los riesgos. - Desarrollar y verificar los resultados de la iteración. - Planeamiento de la próxima iteración. 3. Cada ciclo comienza con la identificación de los interesados y sus condiciones de ganancia, y termina con la revisión y examinación. 59 Iteración: Repetir un proceso con el objeto de alcanzar un resultado definido. 40 1.4.5 METODOLOGÍA RAD “RAPID APPLICATION DEVELOPMENT” El desarrollo rápido de aplicaciones RAD, es una metodología de desarrollo de software, que involucra tanto el desarrollo iterativo, como la construcción de prototipos. Sus principios básicos son: 1. El objetivo clave es promover un rápido desarrollo y entrega de un sistema de alta calidad, pero con un costo de inversión relativamente bajo. 2. Se tiende a reducir los riesgos inherentes del proyecto, dividiéndolo en segmentos más pequeños, proporcionando así, más facilidad de cambio durante el proceso de desarrollo. 3. Orientación dedicada a producir sistemas de alta calidad con rapidez, principalmente mediante el uso de iteración por prototipos (en cualquier etapa de desarrollo). Asimismo, se promueve la participación de los usuarios y el uso de herramientas de desarrollo computarizadas. Estas herramientas pueden ser: - Interfaz Gráfica de Usuario (GUI). - Ingeniería de Software Asistida por Computador (CASE 60). - Sistemas de Gestión de Base de Datos (DBMS 61). - Lenguajes de programación de cuarta generación. - Generadores de código. - Técnicas orientadas a objetos. 4. Se hace especial énfasis en el cumplimiento de la necesidad comercial, mientras que la ingeniería tecnológica pasa a segundo plano. 5. El control del proyecto implica el desarrollo de prioridades y la definición de los plazos de entrega. Aunque durante el proceso se pueden realizar ajustes, jamás se puede extender (aplazar) la fecha límite. 60 61 CASE: Computer Aided Software Engineering “Ingeniería de Software Asistida por Computador”. DBMS: DataBase Management System “Sistemas de Gestión de Base de Datos”. 41 6. Generalmente se incluye el JAD62 (Joint Application Development “Desarrollo Conjunto de Aplicaciones”), donde los usuarios participan arduamente en el diseño del sistema, ya sea a través de la creación de un consenso estructurado en talleres, o por vía electrónica. 7. Es fundamental la participación activa de los usuarios. 8. Iterativamente se realiza la producción de software, sin enfocarse de manera alguna en un prototipo. 9. Finalmente se realiza la documentación necesaria para facilitar el futuro desarrollo y mantenimiento. 62 JAD: “Es un proceso usado en el área del ciclo de vida de prototipado del DSDM (Dynamic Systems Development Method “Método de Desarrollo de Sistemas Dinámicos”) para reunir requerimientos en el desarrollo de nuevos sistemas de información para una compañía.” 42 CAPÍTULO II DISEÑO DE LA APLICACIÓN PARA UN WALL VIEW 2.1 CONSIDERACIONES PREVIAS 2.1.1 METODOLOGÍA DE DESARROLLO DE SOFTWARE SELECCIONADA La metodología de desarrollo de software seleccionada para el diseño e implementación de la aplicación fue la Metodología Incremental. NOTA: Los detalles sobre del proceso de desarrollo de la aplicación con la metodología incremental se describen en el Anexo B de este documento. 2.1.1.1 Justificación Las aplicaciones multimedia63 en la actualidad experimentan cambios constantes, cuya finalidad es mantenerse a la par con la vanguardia tecnológica tanto de software, como de hardware, sin perder de vista el factor humano (los usuarios finales). Esto sugiere que una aplicación, orientada en este sentido, deba ser versátil y escalable. Por lo tanto la Metodología Incremental es la que más se ajusta a dicho propósito. Con esta consideración, se justifica también que la aplicación sea presentada como un prototipo final y no como una versión definitiva, ya que posteriormente podrían ser necesarios cambios y/o ajustes (en la aplicación) conforme a las nuevas demandas y tendencias64 que se presenten más adelante. 2.1.2 ALTERNATIVAS DE SERVIDORES DE STREAMING DE AUDIO/VIDEO 65 En principio no es necesario contar con un servidor especial para realizar streaming de audio/video. Cualquier servidor normal puede mandar la información y es el cliente quien se encarga de procesarla y mostrarla conforme se vaya 63 El término multimedia se emplea para hacer referencia a cualquier sistema que utilice múltiples medios de expresión para presentar determinada información. Estos medios pueden ser texto, imágenes, animaciones, sonido y/o video. 64 Estas demandas y tendencias también deben incluir los requerimientos de los usuarios. 65 Las alternativas consideradas están orientadas netamente al entorno de software. 43 recibiendo. Sin embargo, el servidor debe cumplir algunas características particulares que se detallan a continuación: · Soporte unicast y multicast. · Flexibilidad para posibles cambios. · Documentación suficiente de la herramienta (servidor). · Compatibilidad con FFmpeg (específicamente a nivel de comandos). · Licencia GNU/GPL (software libre). Con los condicionantes mencionados, se destacan las siguientes alternativas: FFserver [PW12] [PW13] [M3] FFserver es un servidor de streaming de audio/video que está habilitado para recoger varias fuentes de entrada (normalmente aplicaciones FFmpeg), para luego transcodificar, remultiplexar, y/o difundir cada una de ellas utilizando múltiples flujos de salida, distribuyéndolos a uno o varios clientes para su visualización (ver Figura 2.1). Figura 2.1 FFserver. FFserver es una herramienta de software libre bajo licencia GPL o LGPL que viene embebida dentro de FFmpeg. Es por esto que ambas herramientas conforman un entorno sin conflictos de compatibilidad entre sí. Además, el 44 desempeño de FFserver se ajusta a las peticiones de los clientes de manera predefinida66 o dinámica67 a través de un archivo de configuración simple “/etc/ffserver.conf”. FFserver presenta una ligera desventaja con respecto al menor número de códecs que soporta, entre ellos AVI, FLV y MPEG. Sin embargo, esto no representa una limitante crítica o de consideración que impida el correcto funcionamiento de un streaming de audio/video. VideoLAN “VLC” [PW39] VideoLAN, también conocida como VLC68, es una solución de software para audio/video streaming, desarrollada por estudiantes del Ecole Centrale Paris, bajo licencia GPL. Esta herramienta está diseñada fundamentalmente para fuentes de video mpeg en redes que soporten grandes anchos de banda (ver Figura 2.2). Figura 2.2 VideoLAN “VLC” Streaming. 66 Modo Predefinido: Supone regirse a una configuración estricta de FFserver para el streaming de audio/video. 67 Modo Dinámico: Permite configurar tan solo las listas de acceso y el modo de operación de FFserver, dejando el resto de parámetros, como formato, tamaño y capacidad del búfer, para que se adapten dinámicamente. 68 VLC es el nombre comercial de la herramienta. No confundir con VideoLAN Client. 45 VideoLAN incluye: · VideoLAN Server, que funciona únicamente como servidor de archivos MPEG-1, MPEG-2 y MPEG-4, DVDs, canales satelitales, televisión digital y videos en vivo sobre una red ya sea en modo unicast o modo multicast. · VideoLAN Client, que puede ser usado como servidor para archivos MPEG-1, MPEG-2 y MPEG-4, DVDs y videos en vivo sobre redes en modo unicast o modo multicast; y a su vez, ser usado como cliente para recibir, decodificar y mostrar streams mpeg, en diversos sistemas operativos. El VideoLAN Server se programa en C++, con un framework completamente independiente. Esto significa que VLC no usa las Bibliotecas de Clases estándar tales como iostreams o vectors. El framework interno de VLC es completamente autosuficiente, y está orientado a que nada deba ser escrito fuera de él (excepto, quizás, su portabilidad para otros sistemas operativos). Helix Universal Media Server [PW40] Helix Universal Media Server funciona bajo sistemas operativos 32-bit de UNIX o de Windows. Tiene soporte multicast y/o unicast, utilizando los protocolos TCP o UDP. La arquitectura abierta de Helix Universal Media Server proporciona algunas características útiles que se detallan a continuación: · El archivo de configuración basado en XML 69 permite controlar las características básicas del servidor y crear sus propias características modificadas para requisitos particulares. · La autenticación permite modificar el comportamiento del servidor para verificar alguna conexión o el archivo de peticiones cifrado en una lista de passwords. En la Figura 2.3 se ilustra el modo en que opera Helix Universal Media Server. 69 XML: eXtesible Markup Language “Lenguaje de Marcas eXtensible”. 46 Figura 2.3 Helix Universal Media Server. Helix Universal Media Server al comunicarse con RealPlayer 70, por defecto utiliza el protocolo RTSP para los esquemas de control y RealNetworks 71 RDP 72 como su protocolo propietario de paquete. Helix Universal Media Server también soporta el protocolo estándar RTP, para facilitar a los clientes la interacción con el servidor. Darwin Streaming Server [PW41] [PW42] Darwin Streaming Server contempla, para su desempeño, un proceso padre que se divide en varios procesos hijos, los cuales constituyen el núcleo del servidor. De existir algún error en las salidas del proceso hijo, el proceso padre creará un nuevo proceso hijo. El núcleo del servidor actúa como una interfaz entre clientes de la red que usan RTP y RTSP para enviar las peticiones y recibir las respuestas, y módulos del servidor, los cuales procesan las peticiones y envían los paquetes al cliente. Este núcleo maneja cuatro tipos de hilos: 1. Hilo Principal. Verifica si el servidor necesita reiniciarse, mostrando información del estado de login o imprimiendo estadísticas. 70 RealPlayer: Software de gestión/reproducción multimedia. RealNetworks: Es un proveedor de software para Internet. 72 RDP: Remote Desktop Protocol “Protocolo de Escritorio Remoto”. Protocolo de Microsoft. 71 47 2. Hilo de Tarea Idle73. Maneja una cola de tareas que ocurren periódicamente. Allí los tipos de colas de tarea pueden ser de timeout o de socket. 3. Hilo de Evento. Escucha por eventos de socket tales como una petición RTSP recibida o un paquete RTP, y los envía a un hilo de tarea. 4. Hilos de Tarea Múltiples. Los hilos de tareas reciben peticiones RTSP y RTP desde el hilo de evento. Los hilos de tarea envían peticiones al módulo del servidor apropiado para procesar y enviar los paquetes al cliente. Por defecto, el núcleo del servidor crea un hilo de tarea por cada proceso. Figura 2.4 Darwin Streaming Server. Puesto que el servidor es principalmente asíncrono, se necesita un mecanismo de comunicación para los eventos. Por ejemplo, cuando un socket es usado para una conexión RTSP, algunos eventos han de ser notificados de manera que los datos pueden ser procesados; por lo que, una tarea objeto se constituiría como un mecanismo generalizado para realizar esta comunicación. Finalmente cabe recalcar que Darwin Streaming Server está orientado principalmente a sesiones Web (ver Figura 2.4) y su herramienta de reproducción es QuickTime Player 74. 73 74 Idle: Refleja un estado de eventual inactividad. QuickTime Player: Reproductor multimedia que forma parte del framework QuickTime de Apple. 48 2.1.2.1 Selección y Justificación Vistas las alternativas para streaming de audio/video, se seleccionó FFserver como la opción más apropiada por efectos de compatibilidad (con FFmpeg), versatilidad y escalabilidad. Además, en FFserver destacan también las siguientes características: · Facilidad en la configuración. · Soporte multiplataforma (Linux, Windows, MacOS). · Soporte multiprocolo para streaming de audio/video. · Transmisión de audio y video de forma simultánea y/o por separado. · Captura cualquier fuente de entrada que pueda ser manejada con FFmpeg. · Puede ejecutarse en segundo plano (configurando los parámetros adecuados en el archivo “/etc/ffserver.conf”) como tarea predeterminada desde el arranque del sistema. 2.1.3 REPRODUCTOR DE STREAMING DE AUDIO/VIDEO SELECCIONADO El reproductor multimedia seleccionado para visualizar las transmisiones (video, livestream, y/o screencast) fue FFplay. 2.1.3.1 Justificación FFplay es un reproductor multimedia ligero que, al igual que FFserver, viene embebido en FFmpeg. Por esta razón, no existen inconvenientes de compatibilidad en el esquema global “streaming75 – procesamiento76 – reproducción77” de la aplicación para conformar el Wall View. Además, FFplay es capaz de reproducir casi cualquier formato de audio y video (combinados o por separado), ya que cuenta con varias bibliotecas que manejan apropiadamente la mayoría de códecs de este tipo de archivos multimedia. 75 Streaming con FFserver. Procesamiento con FFmpeg. 77 Reproducción con FFplay. 76 49 2.2 CONFIGURACIONES INICIALES 2.2.1 ARCHIVO DE CONFIGURACIÓN XORG.CONF Este archivo se localiza en “/etc/X11/xorg.conf”, y en él fundamentalmente se configura la ubicación geométrica de las pantallas (monitores) que conformarán el Wall View. Asimismo, en dicho archivo se registran otros dispositivos de entrada/salida de un computador determinado. A continuación se muestra la configuración sugerida para conformar un Wall View de cuatro monitores: Section "ServerLayout" ... Screen 0 "Screen0" 0 0 Screen 1 "Screen1" RightOf "Screen 0" Screen 2 "Screen2" Below "Screen 0" Screen 3 "Screen3" RightOf "Screen 2" ... Option "Xinerama" "false" EndSection ... 78 Section "Monitor" Identifier "Monitor0" VendorName "Unknown" ModelName "LG Electronics W1943C" HorizSync 30.0 - 61.0 VertRefresh 56.0 - 75.0 Option "DPMS" EndSection ... Section "Device" 78 Identifier "Device0" Driver "nvidia" VendorName "NVIDIA Corporation" Los puntos suspensivos “…” representan configuraciones reiterativas y/o no relevantes para este caso. 50 BoardName "GeForce 210" BusID "PCI:1:0:0" Screen 0 EndSection ... Section "Screen" Identifier "Screen0" Device "Device0" Monitor "Monitor0" DefaultDepth 24 Option "Stereo" "0" Option "nvidiaXineramaInfoOrder" "CRT-0" Option "metamodes" "CRT-0: nvidia-auto-select +0+0" SubSection "Display" Depth 24 EndSubSection EndSection ... NOTA: Para las secciones “Monitor” y “Device” se deben considerar características e información técnicas, propias de la casa fabricante tanto de los monitores, como de las tarjetas de video. 2.2.2 ARCHIVO DE CONFIGRUACIÓN FFSERVER.CONF Este archivo se localiza en “/etc/ffserver.conf”, y en él se configuran los parámetros relativos al streaming de audio/video ya sea en modo predefinido o en modo dinámico. Puesto que la aplicación maneja tres modos de operación (video, livestream, y/o screencast), la configuración más conveniente para realizar el streaming de audio/video es el modo dinámico. Por lo tanto, la configuración debería ser la siguiente: Port ">1023" #Cualquier puerto(s) mayor(es) a 1023. BindAddress 0.0.0.0 51 #MaxClients 100 #Se comenta esta línea para indicar que pueden #existir un número indefinido de clientes. #MaxBandwidth 100000 #Se comenta esta línea para administrar de forma #dinámica el ancho de banda para el streaming. CustomLog #NoDaemon #Se comenta esta línea para que el servidor opere en #segundo plano como tarea predeterminada al arrancar #el sistema. <Stream status> Format status </Stream> <Feed feed.ffm> File /tmp/feed.ffm #FileMaxSize 50M #Se comenta esta línea para que el tamaño del #archivo se maneje dinámicamente. ACL allow 192.168.0.0 192.168.255.255 #Identifica el rango de #direcciones IP que #tienen acceso. </Feed> 2.2.3 ARCHIVOS DE CONFIGURACIÓN “*.DS” DE DEVIL’S PIE En Devil’s Pie se debe crear un archivo de configuración por cada una de las ventanas y/o aplicaciones que se desea administrar. Estos archivos de configuración se localizan en el directorio $HOME/.devilspie/ (donde $HOME representa el directorio o carpeta personal y el signo de punto “.” de /.devilspie/ indica que se trata de un directorio oculto). Tras dichas consideraciones, para el correcto desempeño de la aplicación, tanto en cliente como en servidor, se destinaron seis archivos de configuración para el manejo de las ventanas pertinentes: 1. “minimizar.ds”: Para minimizar las ventanas correspondientes a la aplicación Nautilus. 52 2. “audio.ds”: Para minimizar la ventana de reproducción de audio para un screencast o livestream. 3. “leftup.ds”: Para ubicar la sección de video superior izquierda en el monitor superior izquierdo. 4. “rightup.ds”: Para ubicar la sección de video superior derecha en el monitor superior derecho. 5. “leftdown.ds”: Para ubicar la sección de video inferior izquierda en el monitor inferior izquierdo. 6. “rightdown.ds”: Para ubicar la sección de video inferior derecha en el monitor inferior derecho. NOTA: Estos seis archivos de configuración se generan apropiada y automáticamente tras la instalación de los pre-requisitos contenidos en el archivo PreReq.sh. 53 2.3 DIAGRAMA DE FLUJO DE LA APLICACIÓN 2.3.1 SERVIDOR En la Figura 2.5 se muestra un diagrama de flujo que representa las etapas por las que pasa la aplicación, vistas desde el servidor. Figura 2.5 Diagrama de flujo de la aplicación para el servidor. 54 2.3.2 CLIENTE 79 En la Figura 2.6 se muestra un diagrama de flujo que representa las etapas por las que pasa la aplicación, vistas desde el cliente. Figura 2.6 Diagrama de flujo de la aplicación para el cliente. 79 El tener dos clientes responde a parámetros de optimización y aprovechamiento de una infraestructura de red ya existente. En el caso de no poseer dicha infraestructura, lo más recomendable es contar con un solo cliente (mismo que debería soportar y manejar dos GPUs). 55 2.4 PROGRAMACIÓN Y COMANDOS Vistos los diagramas de flujo de la aplicación, y una vez realizadas las configuraciones iniciales, se desarrollaron los códigos80 (scripts) pertinentes, para cliente y servidor, que permitan el correcto funcionamiento y desempeño del Wall View. En este punto cabe mencionar que a dicha aplicación se le asignó el nombre de FFWallView. 2.4.1 DESCRIPCIÓN DE COMANDOS EMPLEADOS EN FFWALLVIEW La descripción que se presenta a continuación, solo considera los puntos esenciales de los scripts desarrollados, es decir, se omiten segmentos de código reiterativos y también aquellos que son de dominio general 81. 2.4.1.1 Script de instalación de pre-requisitos “PreReq.sh” Este es el único script que deberá ser ejecutado 82 fuera de la aplicación, tanto en el cliente, como en el servidor. Su finalidad es instanciar, de manera automática, algunos archivos de configuración, e instalar determinados paquetes que son necesarios para el correcto funcionamiento de FFWallView. 3 xrandr | grep -i "*" | awk '{print $1}' > /tmp/res.txt ... 6 cut -b 1,2,3,4 /tmp/res.txt > /tmp/width.txt 2>&1 7 cut -b 6,7,8,9 /tmp/res.txt > /tmp/height.txt 2>&1 ... 9 x=`cat /tmp/width.txt` ... 11 y=`cat /tmp/height.txt` ... 14 mkdir $HOME/.devilspie 15 mkdir $HOME/FFVideos ... Espacio de Código 2.1 Instalación de pre-requisitos (1). 80 El lenguaje de programación seleccionado, para desarrollar la aplicación para el Wall View, fue bash scripting. 81 Los segmentos de código omitidos se representan con tres puntos suspensivos “…”. 82 La ejecución debe realizarse por consola. 56 EXPLICACIÓN Líneas 3 – 12: La finalidad de estas líneas es leer la información de resolución de los monitores 83 (comando xrandr), la cual es enviada a un archivo temporal (res.txt), para luego ser filtrada (comandos grep y awk) y ordenada de manera que se obtengan automáticamente las dimensiones, tanto el largo (height.txt), como el ancho (width.txt), necesarias para manejar adecuadamente la geometría del Wall View. Líneas 14 – 15: Se realiza un procedimiento que asegure la creación de los directorios .devilspie 84 y FFVideos 85 dentro de la carpeta personal del usuario. El directorio FFVideos solo debe existir en el servidor, por lo que al ejecutarse el script principal del cliente dicho directorio es automáticamente removido. 104 echo "¿Con qué distribución de Linux está trabajando?" 106 echo "Seleccione una opción:" 107 echo "1) Debian/Ubuntu/LinuxMint o similar" 108 echo "2) RedHat/Fedora/CentOS/ClearOS o similar" 109 echo "3) No estoy seguro... CONSULTAR" 110 echo "4) SALIR" 111 echo "" 112 read option 113 case $option in 114 1) 115 sudo apt-get install -y devilspie zenity libnotify-bin notify-osd fping ; echo "" ;; 116 2) 117 su -c 'yum install -y devilspie zenity notify-osd fping' ; echo "" ;; 118 3) 119 echo "" ; echo "Su distribución de Linux es: `cat /etc/issue.net`" ; echo "" ; exit 0 ;; ... Espacio de Código 2.2 Instalación de pre-requisitos (2). 83 Tomar en cuenta que todos los monitores destinados al funcionamiento de FFWallView deben ser de similares características, para así tener la misma resolución en cada uno de ellos. 84 En este directorio se alojan todos los archivos de configuración “.ds”. 85 En este directorio se alojan los videos remasterizados que se utilizarán para el streaming. 57 EXPLICACIÓN Líneas 104 – 119: Se muestra un menú que tiene como objeto instalar los paquetes adicionales, Devil’s Pie, Zenity, Notify Send y Fping, necesarios para el funcionamiento de FFWallView, en función de la distribución de Linux que se esté utilizando. En caso de no conocer con certeza la distribución de Linux con la cual está trabajando el usuario, la opción 3 (de la línea 119) permite realizar dicha consulta mostrando el contenido del archivo issue.net, que es donde se recopila esta información del sistema. 2.4.1.2 Script de selección del modo de ejecución “MODE.sh” Este script es común para cliente y servidor; y muestra un diálogo de selección para seleccionar el modo de ejecución de FFWallView (modo gráfico o modo consola). ... 2 zenity --question --width=350 --height=120 --title "MODO DE \ EJECUCIÓN" --ok-label="GRÁFICO" --cancel-label="CONSOLA" \ --text "¿En qué modo desea ejecutar la aplicación?" ... Espacio de Código 2.3 Selección del modo de ejecución. EXPLICACIÓN Línea 2: Se lanza un diálogo (comando zenity) que permite seleccionar el modo de ejecución de la aplicación. 2.4.1.3 Script para remasterización de video. Este procedimiento se realiza con la finalidad de ajustar las características del video a los parámetros adecuados con los cuales funcionará el Wall View. 58 MODO CONSOLA 86 “RemasterC.sh” 26 if [ -e $HOME/Vídeos ]; then 27 ls $HOME/Vídeos/ > /tmp/ls.txt 28 echo "" 29 echo "Seleccione un video de la lista:" 30 sleep 1 31 cat -n /tmp/ls.txt 32 echo "" 33 echo "Escriba el número del video que desea remasterizar:" 34 read line ... Espacio de Código 2.4 Remasterización de video, modo consola (1). EXPLICACIÓN Líneas 26 – 31: Se comprueba la existencia del directorio “$HOME/Vídeos”, en caso de no existir, realizará la comprobación del directorio “$HOME/Videos”, para luego con el comando ls listar los videos existentes en dicho directorio. Esta información es enviada a un archivo temporal (ls.txt), para luego ser numerada (comando cat) y mostrada al usuario. Líneas 32 – 34: Se selecciona un video según su numeración; dicho número es almacenado en la variable line, para luego de realizar un filtrado del archivo temporal ls.txt, y almacenar el nombre del video seleccionado en función del número correspondiente. 64 ffmpeg -i $HOME/Vídeos/$FILE -s $scale -aspect $aspect $HOME/FFVideos/$NEWFILE"_R".$format ... Espacio de Código 2.5 Remasterización de video, modo consola (2). EXPLICACIÓN Línea 64: o -i $HOME/Vídeos/$FILE Se define como entrada al video original. 86 La consola (terminal) en que se despliega la aplicación es gnome–terminal. 59 o -s $scale Establece la resolución de salida del video. o -aspect $aspect Señala la relación de aspecto del video. o $HOME/FFVideos/$NEWFILE“_R” En el nuevo directorio por defecto asignado por FFWallView ($HOME/FFVideos) se alojarán todos los videos ya remasterizados. o $format De acuerdo a la opción seleccionada, FFmpeg realizará la codificación al formato indicado. MODO GRÁFICO “RemasterG.sh” 14 FILE=`zenity --file-selection --title="ELIJA EL VIDEO A REMASTERIZAR" --filename="$HOME/Vídeos/*.*"` ... 33 ffmpeg -i $FILE -s $scale -aspect $aspect $HOME/FFVideos/$NEWFILE"_R".$format ... Espacio de Código 2.6 Remasterización de video, modo gráfico. EXPLICACIÓN Línea 14: Con la ayuda del comando zenity se despliega una interfaz que permite seleccionar un video del directorio de por defecto de la carpeta personal. Línea 33: o -i $HOME/Vídeos/$FILE Se define como entrada al video original. o -s $scale Establece la resolución de salida del video. o -aspect $aspect Señala la relación de aspecto del video. o $HOME/FFVideos/$NEWFILE“_R” En el nuevo directorio por defecto asignado por FFWallView ($HOME/FFVideos) se alojarán todos los videos ya remasterizados. o $format De acuerdo a la opción seleccionada, FFmpeg realizará la codificación al formato indicado. 60 2.4.1.4 Script principal para el servidor FFWallView MODO CONSOLA “SMainC.sh” 24 echo " Opción: " 25 read option 26 case $option in 27 1) 28 clear ; sh SendVidC.sh ;; 29 2) 30 clear ; sh SendLiveC.sh ;; 31 3) 32 clear ; sh SendScrC.sh ;; 33 4) 34 clear ; exit 0 ;; Espacio de Código 2.7 Servidor FFWallView, modo consola. EXPLICACIÓN Líneas 24 – 34: La opción seleccionada se almacena en la variable read, a la cual se le da el tratamiento pertinente mediante una estructura case, misma que ejecutará el script correspondiente a la tarea seleccionada. MODO GRÁFICO “SMainG.sh” 5 if [ "$action" = "Transmitir Video" ]; then 6 sh SendVidG.sh 7 elif [ "$action" = "Transmitir LiveStream" ]; then 8 echo "$action" 9 sh SendLiveG.sh 10 elif [ "$action" = "Transmitir ScreenCast" ]; then 11 sh SendScrG.sh 12 elif [ "$action" = "Salir" ]; then 13 exit 0 14 else 15 exit 0 16 fi Espacio de Código 2.8 Servidor FFWallView, modo gráfico. 61 EXPLICACIÓN Líneas 5 – 16: Se despliega un diálogo en modo gráfico (empleando zenity) que muestra las opciones relativas al modo de operación de FFWallView; siendo la variable action donde se almacena la opción seleccionada. Adicionalmente se observa una estructura condicional (if), en función de la variable action, para realizar la llamada al script pertinente. 2.4.1.5 Script de streaming de video para el servidor FFWallView Una vez que se ha cumplido con el proceso de remasterización, se debe seleccionar un video del directorio por defecto asignado por FFWallView ($HOME/FFVideos). MODO CONSOLA “SendVidC.sh” ... 69 ls $HOME/FFVideos > /tmp/lsvid.txt 70 echo "" 71 echo "Seleccione un video de la lista:" 72 sleep 2 73 cat -n /tmp/lsvid.txt 74 echo "" 75 echo "Escriba el número del Video:" 76 read line 77 FILE=`head -n $line /tmp/lsvid.txt | tail -1` ... 90 ffmpeg -i $HOME/FFVideos/$FILE -f mpegts udp://$IP1:1500 -f mpegts udp://$IP1:1502 -f mpegts udp://$IP1:1504 -f mpegts udp://$IP1:1506 Espacio de Código 2.9 Streaming de video, modo consola. EXPLICACIÓN Líneas 69 – 73: El comando ls lista los archivos existentes en el directorio “$HOME/FFVideos”, cuyo contenido es enviado a un archivo temporal (lsvid.txt), luego, dicha lista es numerada (comando cat) y mostrada al usuario. 62 Líneas 75 – 77: Se selecciona un video según su numeración; esta selección se almacena en la variable line, con la cual, luego de realizar un filtrado del archivo temporal lsvid.txt (comandos head y tail), se almacena la información requerida (nombre del archivo) en la variable FILE. Línea 90: o -i Indica el archivo de entrada. o $HOME/FFVideos/$FILE Variable donde se almacena el nombre del video seleccionado. o -f Para forzar el formato del archivo de salida. o mpegts Formato de video para realizar el streaming. o udp Indica el protocolo utilizado para el streaming. $IP1, $IP2 Dirección IP del o los clientes. o o 1500-1506 Números de puerto que el cliente deberá estar “escuchando” 87 para recibir el streaming. MODO GRÁFICO “SendVidG.sh” 24 FILE=`zenity --file-selection --title="ELIJA EL VIDEO A TRANSMITIR" --filename="$HOME/FFVideos/*.*"` ... 28 ffmpeg -i $FILE -f mpegts udp://$IP1:1500 -f mpegts udp://$IP1:1502 -f mpegts udp://$IP2:1504 -f mpegts udp://$IP2:1506 Espacio de Código 2.10 Streaming de video, modo gráfico. EXPLICACIÓN Línea 24: Con el comando zenity se lanza una ventana en la que se observa el contenido del directorio “$HOME/FFVideos”. En la variable FILE se guarda la ruta completa del video seleccionado. Línea 28: o -i Indica el archivo de entrada. o $FILE Variable donde se almacena el nombre del video seleccionado. 87 El término “escuchando” se utiliza para hacer referencia a la espera de una señal de streaming. 63 o -f Para forzar el formato del archivo de salida. o mpegts Formato de video para realizar el streaming. o udp Indica el protocolo utilizado para el streaming. o $IP1, $IP2 Dirección IP del o los clientes. o 1500-1506 Números de puerto que el cliente deberá estar “escuchando” para recibir el streaming. 2.4.1.6 Script de streaming de un evento en vivo para el servidor FFWallView “SendLiveC.sh” y “SendLiveG.sh” A continuación se muestran los parámetros del comando ffmpeg que permiten realizar el streaming en modo de operación livestream. ffmpeg -f x11grab -r 12 -s $scale -i :0.0+0"+"0 -f mpegts udp://$IP:1508 ... ffmpeg -f alsa -ac 2 -i pulse -f mpegts udp://$IP:1516 Espacio de Código 2.11 Streaming en modo livestream. EXPLICACIÓN o -f x11grab Como auxiliar para realizar el livestream que captura la webcam88. o -s $scale Establece la resolución de salida del livestream. o -f alsa Para forzar el formato del archivo de salida, utilizando el dispositivo alsa (Advanced Linux Sound Architecture). o -ac 2 Establece el número de canales de audio; 2 para la aplicación. o -i pulse Entrada de audio gestionada por PulseAudio 89. o -f Para forzar el formato del archivo de salida. o mpegts Formato de video para realizar el streaming. o udp Indica el protocolo utilizado para el streaming. o 88 $IP Dirección IP del o los clientes. Para la captura de la webcam se utiliza el comando ffplay correlacionándolo con el dispositivo correspondiente (“/dev/video0” en este caso). 89 PulseAudio: Servidor de sonido que permite redirigir todos los flujos de audio a través de sí mismo. 64 o 1508-1516 Números de puerto que el cliente deberá estar “escuchando” para recibir el streaming. 2.4.1.7 Script de streaming de un screencast para el servidor FFWallView “SendScrC.sh” y “SendScrG.sh” A continuación se muestran los parámetros del comando ffmpeg que permiten realizar el streaming en modo de operación screencast. Para evitar los desfases inherentes a la sincronización de audio y video, se realiza por separado el streaming de estos dos elementos multimedia. ffmpeg -f x11grab -r 25 -s $scale -i :0.0+0"+"0 -f mpegts udp://$IP:1508 ... ffmpeg -f alsa -ac 2 -i pulse -f mpegts udp://$IP:1516 Espacio de Código 2.12 Streaming en modo screencast. EXPLICACIÓN o -f x11grab Para capturar todas las acciones del entorno de escritorio (X1190) del servidor. o -r 25 Indica el frame rate, en cuadros por segundo (fps). o -i :0.0+0“+”0 Indica la pantalla de la cual se realiza la captura (la pantalla 0 en el monitor 0) y sus coordenadas de referencia (punto 0,0). o -s $scale Establece la resolución de salida del screencast. o -f alsa Para forzar el formato del archivo de salida, utilizando el dispositivo alsa. o -ac 2 Establece el número de canales de audio; 2 para la aplicación. o -i pulse Entrada de audio gestionada por PulseAudio. o -f Para forzar el formato del archivo de salida. o mpegts Formato de video para realizar el streaming. o udp Indica el protocolo utilizado para el streaming. o 90 $IP Dirección IP del o los clientes. X11: Versión 11 del protocolo X Windows System, que provee una interfaz gráfica a los sistemas operativos basados en Unix. 65 o 1508-1516 Números de puerto que el cliente deberá estar “escuchando” para recibir el streaming. 2.4.1.8 Script principal para el cliente FFWallView MODO CONSOLA “MainC.sh” 24 read option 25 case $option in 26 1) 27 clear ; sh DivTxVidC.sh ;; 28 2) 29 clear ; sh DivTxLiveC.sh ;; 30 3) 31 clear ; sh DivTxScrC.sh ;; 32 4) 33 clear ; exit 0 ;; Espacio de Código 2.13 Cliente FFWallView, modo consola. EXPLICACIÓN Líneas 24 – 33: Se lee la opción seleccionada para, en función de aquello, realizar la llamada al script correspondiente. Modo Gráfico “MainG.sh” 5 if [ "$action" = "Transmitir Video" ]; then 7 elif [ "$action" = "Transmitir LiveStream" ]; then 8 echo "$action" 9 sh DivTxLiveG.sh 10 elif [ "$action" = "Transmitir ScreenCast" ]; then 11 sh DivTxScrG.sh 12 elif [ "$action" = "Salir" ]; then 13 exit 0 14 else 15 exit 0 16 fi Espacio de Código 2.14 Cliente FFWallView, modo gráfico. 66 EXPLICACIÓN Líneas 5 – 16: Se despliega un diálogo en modo gráfico (empleando zenity) que muestra las opciones relativas al modo de operación de FFWallView; siendo la variable action donde se almacena la opción seleccionada. Adicionalmente se observa una estructura condicional (if), en función de la variable action, para realizar la llamada al script pertinente. 2.4.1.9 Script de transmisión de video para el cliente FFWallView “DivTxVidC.sh” y “DivTxVidG.sh” Este script, indistintamente del modo de ejecución, se ocupa de la segmentación (en 4 partes) y transmisión de un video almacenado en el servidor. La descripción que se muestra a continuación no distingue el modo de ejecución ya que se enfoca estrictamente en los comandos necesarios para cumplir la tarea requerida. Los segmentos de código que se omiten corresponden a mensajes, diálogos y comandos que manejan los esquemas de presentación para modo gráfico o modo consola. ... 30 fping $IP ... 52 w=`expr $x / 2` ... 54 h=`expr $y / 2` Espacio de Código 2.15 Pruebas de conectividad. EXPLICACIÓN Línea 30: Se realiza una prueba básica de conectividad (comando fping) con el servidor, ingresando por teclado su dirección IP. En caso de existir alguna falla en la conexión, se repetirá la prueba, con la posibilidad de corregir la IP del servidor. Contrariamente, si la conexión es exitosa se continúa con la ejecución de las líneas subsiguientes del script. 67 Línea 52: Se obtiene el valor del ancho de cada segmento y se lo almacena en la variable w. Línea 54: Se obtiene el valor de la altura de cada segmento y se lo almacena en la variable h. ... 69 echo "1) Transmitir ahora" 70 echo "2) Transmitir duplicados" ... 73 read tx Espacio de Código 2.16 Modo de transmisión (presentación). EXPLICACIÓN Líneas 69 – 73: Se muestra un menú que permite seleccionar el modo de transmisión de video (Transmitir ahora91 o Transmitir duplicados92). La opción seleccionada se almacena en la variable tx, misma que será procesada a través de una estructura condicional (if). 74 if [ $tx = 1 ] ; then ... 76 ffplay -vf crop=w:h:x:y -window_title MonitorLftUp -loop 0 udp://$IP:1500 ... 81 elif [ $tx = 2 ] ; then ... 83 ffplay -window_title MonitorLftUp -loop 0 udp://$IP:1500 & ... 95 fi Espacio de Código 2.17 Segmentación y transmisión. 91 Transmitir ahora: Esta opción permite transmitir el streaming repartiendo cada uno de los 4 segmentos al monitor correspondiente que conforma el Wall View. 92 Transmitir duplicados: Esta opción permite transmitir exactamente el mismo streaming en cada monitor que conforma el Wall View. 68 EXPLICACIÓN Líneas 74 – 80: Se realiza el proceso de segmentación y transmisión del video en función de la geometría que maneja el Wall View. o -vf crop=w:h:x:y Para indicar las dimensiones del segmento (ancho por altura, wxh) y su posición geométrica (abscisas y ordenadas, x e y). o udp Indica el protocolo utilizado para el streaming. o $IP Dirección IP del servidor. o 1500–1506 Números de puerto por los cuales el cliente espera una señal de streaming. Líneas 81 – 87: Se realiza un proceso similar al anterior con la diferencia de que se omite la tarea referente a la segmentación. NOTA: Los scripts para los modos de operación livestream y screencast difieren del script de transmisión de video en determinadas opciones 93 94 para el comando ffplay y en la asignación de números de puerto para esperar la señal de streaming. Es decir, el esquema general (de forma y de contenido) se mantiene, razón por la cual no se precisa describir los segmentos de código de los modos de operación restantes (DivTxLiveC.sh, DivTxLiveG.sh, DivTxScrC.sh y DivTxScrG.sh). 2.4.1.10 Script para terminar la ejecución de FFWallView “OFFWV.sh” Este script se encarga de terminar la ejecución de FFWallView en cualquier instante. 2 killall ffplay 3 killall devilspie 4 killall ffmpeg 5 killall -STOP ffmpeg 6 killall gnome-terminal Espacio de Código 2.18 Terminación de FFWallView. 93 94 Opción -vn: Para omitir la señal de video del streaming. Opción -an: Para omitir la señal de audio del streaming. 69 EXPLICACIÓN Línea 2: Se envía una señal de terminación (comando killall) para todas las reproducciones FFplay que estén ejecutándose. Línea 3: Se envía una señal de terminación a la aplicación Devil’s Pie que corre en segundo plano. Líneas 4 – 5: Se envía una señal de parada (comando killall -STOP) y terminación a todos los procesos FFmpeg. Línea 6: Se envía una señal de terminación a todas las consolas (gnometerminal) abiertas. 2.5 HARDWARE RECOMENDADO PARA EL FUNCIONAMIENTO DE LA APLICACIÓN FFWALLVIEW 2.5.1 SERVIDOR Para un correcto funcionamiento de la aplicación FFWallView no se puede asignar como servidor a un computador de características básicas. Considerando las tareas que debe cumplir de acuerdo al diseño, se tienen las siguientes particularidades: · Interfaz gráfica. Acorde a las soluciones presentadas, el computador que realiza las funciones de servidor debe ser capaz de mostrar los resultados del proceso de remasterización de los videos, por lo cual un servidor con tan solo interfaz de línea de comandos no sería de utilidad. · Procesador. Estableciendo como parámetro la capacidad para manejar tareas simultáneas tanto de procesamiento de audio/video, como de reproducción; sin guiarse únicamente por los requerimientos mínimos para funcionamiento de las distribuciones de Linux. el 70 · Memoria RAM. Al igual que en las consideraciones para el procesador, los requerimientos mínimos para el funcionamiento de las distribuciones de Linux no serán suficientes para el correcto desempeño de la aplicación FFWallView. · Disco duro. El dispositivo de almacenamiento debe tener capacidad para alojar la distribución de Linux, la aplicación, y los videos a transmitir. En la Tabla 2.1 se resumen los requerimientos generales para Ubuntu y Fedora. APLICACIÓN Ubuntu 12.10 (Quantal Quetzal) 95 CARACTERÍSTICAS · Procesador x86 a 700 MHz. · Memoria RAM de 512 MB. · Disco Duro de 5 GB (swap incluida). · Tarjeta gráfica y monitor capaz de soportar una resolución de 1024x768. Fedora release 17 (Beefy Miracle) 96 · Lector de DVD o puerto USB. · Un procesador de 400MHz o más rápido · Como mínimo 768 MB de memoria RAM, aunque para un mejor desempeño se recomienda 1 GB. · Como mínimo 10 GB de espacio en el disco duro (necesario sólo para la instalación). Tabla 2.1 Requerimientos generales de las distribuciones Ubuntu y Fedora. Tamaño de un Video. [PW43] Para calcular el tamaño de un video y estimar el espacio que ocupara en el disco duro de almacenamiento, se utiliza la fórmula: 95 96 Fuente: https://help.ubuntu.com/12.10/installation-guide/amd64/minimum-hardware-reqts.html Fuente: http://fedoraproject.org/es/ 71 ܶܽ݉ܽÓ ൌ ݊×݅ܿܽݎݑܦሾݏ݀݊ݑ݃݁ݏሿ݁ݐܽݎݐܾ݅ݔሾݏܾܭሿ Ecuación 2.1 Cálculo de espacio en disco de un video. Cálculo del bit rate. ݁ݐܽݎݐ݅ܤሺݏܾܭሻ ൌ ሺܰï݉݁ݏ݈݁݁ݔ݅݁݀ݎሻݔ ሺ݂ܽܿݐ݊݁݅݉݅ݒ݉݁݀ݎݐሻͲݔǤͲ ͳͲͲͲ Ecuación 2.2 Cálculo del bit rate. Dónde: o Número de pixeles = resolución del video (ancho x alto) por fps. o Factor de movimiento 97 = 1, 2 ó 4. Características de video: o Resolución = 1360 x 768 o Frames por segundo = 24 o Factor de movimiento = 2 Reemplazando en la Ecuación 2.2: ݁ݐܽݎݐ݅ܤൌ ͳ͵ͲݔͺʹݔͶͲݔʹݔǤͲ ൌ ͵ͷͲͻǤͶ ݏܾܭൌ ͵Ǥͷݏܾܯ ͳͲͲͲ Considerando: o Duración del video 5 minutos. o La tasa de bits es de 3.5 Mbps. Con la Ecuación 2.1 se obtiene: ܶܽ݉ܽÓ ൌ ͷ݉݅݊ݔݏݐݑ Ͳݏ݀݊ݑ݃݁ݏ ͳ݁ݐݕܤ ͵ݔǤͷݔݏܾܯ ൌ ͳ͵ͳǤʹͷܤܯ ͳ݉݅݊ݐݑ ͺܾ݅ݏݐ Tras estos cálculos, en la Tabla 2.2 se muestra un aproximado de la capacidad de almacenamiento que se necesitaría en disco duro, tanto para la distribución de Linux, como para la aplicación FFWallView y sus utilitarios adicionales. 97 Factor de movimiento: Depende de la cantidad de movimiento en el video. Por ejemplo, con 24 fps, no se puede tener un factor de movimiento mayor a 2. 72 APLICACIÓN CAPACIDAD DE ALMACENAMIENTO Ubuntu ó Fedora 10 GB Videos (considerando 1000) 131,25 GB Aplicación FFWallView y < 50 MB utilitarios de software Total 141,3 GB Tabla 2.2 Resultados de cálculo para capacidad de almacenamiento. · Tarjeta de red. La cantidad de tráfico estimado a procesar por la aplicación es la siguiente: o Transmisión de Video: Generalmente un video ya remasterizado tiene las siguientes características: formato mp4, 5 minutos de duración (promedio), y un espacio en disco de aproximadamente 131 MB (promedio). ܽ݀݊ܽܤ݄݁݀ܿ݊ܣൌ ܶܽ݉ܽÓܸ݈݁݀݅݁݀ ܶ݅݁݉݊×݅ܿܽݎݑܦ݁݀ Ecuación 2.3 Cálculo de ancho de banda para streaming. Con la Ecuación 2.3 se obtiene: ܽ݀݊ܽܤ݄݁݀ܿ݊ܣൌ ͳ݉݅݊ݐݑ ͺܾ݅ݏݐ ͳ͵ͳܤܯ ݔ ݔ ൌ ͵Ǥͷݏܾܯ ͷ݉݅݊ ݏݐݑͲ݁ݐݕܤͳ ݏ݀݊ݑ݃݁ݏ o LiveStream: Con los parámetros establecidos en el diseño de la aplicación, para un correcto funcionamiento al momento de transmitir un evento en vivo, se considera que en promedio 1 minuto de transmisión tiene un tamaño de aproximadamente 5 MB. 73 Con la Ecuación 2.3 se obtiene: ܽ݀݊ܽܤ݄݁݀ܿ݊ܣൌ o ScreenCast: ͷܤܯ ͳ݉݅݊ݐݑ ͺܾ݅ݏݐ ݔ ݔ ൌ ͲǤݏܾܯ ͳ݉݅݊ ݏݐݑͲ݁ݐݕܤͳ ݏ݀݊ݑ݃݁ݏ Considerando los parámetros generales de configuración se tiene que, en una transmisión de este estilo, 1 minuto necesita aproximadamente de un espacio en disco de 20 MB. Con la Ecuación 2.3 se obtiene: ܽ݀݊ܽܤ݄݁݀ܿ݊ܣൌ ͳ݉݅݊ݐݑ ͺܾ݅ݏݐ ʹͲܤܯ ݔ ݔ ൌ ʹǤݏܾܯ ͳ݉݅݊ ݏݐݑͲ݁ݐݕܤͳ ݏ݀݊ݑ݃݁ݏ Con dichas estimaciones de tráfico que maneja la aplicación y considerando las tarjetas de red existentes en el mercado actual, que ofrecen tasas de transmisión de 10/100/1000 Mbps, no se prevé inconvenientes en este sentido. · Monitores. Necesarios para las tareas de remasterización, y administración de la aplicación. · Fuente de poder. Debe proveer la energía suficiente para el correcto funcionamiento del CPU y de sus dispositivos adicionales como las tarjetas de video, sin que sufra daños y/o averías por recalentamiento. · Unidad de disco óptico. Necesaria para copiar información al disco duro desde dispositivos externos CD/DVD. · Sistema operativo. Si bien FFmpeg es una plataforma cruzada, la aplicación está diseñada para sistemas operativos basados en Linux. 74 Con lo expuesto anteriormente y considerando las tendencias actuales (a nivel tecnológico – informático) en el mercado ecuatoriano, en la Tabla 2.3 se resumen los requerimientos para el servidor FFWallView. DESCRIPCIÓN CANTIDAD Computador de Escritorio: Procesador Intel® Core i7, 1 Disco Duro de 1 TB, Memoria RAM de 4 GB, Tarjeta de red 100/1000 MB, y Periféricos de E/S Tarjeta de Video DualHead (opcional) 1 Monitor 98 (opcional) 1 Tabla 2.3 Hardware recomendado para el servidor FFWallView. 2.5.2 CLIENTE El (los) cliente(s) de la aplicación FFWallView, deben tener la infraestructura física adecuada para manejar los cuatro monitores que conforman el Wall View. Para este efecto se tienen que considerar parámetros similares a los establecidos en el servidor, como son los requerimientos de procesador, memoria RAM, y tarjeta de red; que en prestaciones, deben ser tal como las planteadas anteriormente. La razón fundamental para lo expuesto responde a las tareas de procesamiento y reproducción multimedia que se requieren cumplir. Los factores adicionales a tomar en cuenta son: 98 Para este caso pueden darse dos escenarios. El primero donde se debería ajustar, manualmente, en el servidor la resolución del streaming, manipulando el script correspondiente. En contraparte la segunda opción sería adquirir un monitor que posea las mismas características de los monitores que conformarán el Wall View. 75 · Tarjeta de video. Se requieren dos tarjetas de video (GPUs) de similares características, que particularmente sean, al menos, de la misma marca o casa fabricante. Cada GPU debe proveer salidas para dos monitores. · Monitores. La resolución global del Wall View se acopla automáticamente a la resolución de los monitores. El único requerimiento es que los cuatro monitores sean de iguales características. En la Tabla 2.4 se exponen los requerimientos para el cliente FFWallView. DESCRIPCION CANTIDAD Computador de Escritorio: Procesador Intel® Core i7, 1 Disco Duro de 1 TB, Memoria RAM de 4 GB, Tarjeta de red 100/1000 MB, y Periféricos de E/S Tarjetas de Video DualHead 2 Monitores con iguales características 4 Tabla 2.4 Hardware recomendado para el cliente FFWallView. 76 CAPÍTULO III PRUEBAS, RESULTADOS Y COSTOS 3.1 PRUEBAS Y RESULTADOS EN EL SERVIDOR 3.1.1 REMASTERIZACIÓN DE VIDEO La remasterización es un procedimiento previo al cual deben someterse todos los videos que se almacenarán en el servidor para posteriormente ser transmitidos hacia el cliente. La finalidad de este proceso es evitar fallas por compatibilidad de resolución entre los videos y los monitores (ver Figura 3.1 y la Figura 3.2). Figura 3.1 Video original sin remasterizar. 77 Recorte en tiempo de presentación de las secciones laterales derechas y de las secciones inferiores. Figura 3.2 Transmisión de video sin remasterizar. Contrariamente, al realizar el proceso de remasterización, no se presentan este tipo de fallas al momento de transmitir y presentar un video (ver Figura 3.3 y Figura 3.4). Figura 3.3 Video original remasterizado. 78 Figura 3.4 Transmisión de video remasterizado. En la Figura 3.5 se muestra las propiedades del video (antes y después de remasterizar) y en la Figura 3.6 la resolución del monitor a la cual debe ajustarse. Figura 3.5 Propiedades del video antes y después de remasterizar. 79 Figura 3.6 Resolución del monitor. 3.1.2 MODO DE OPERACIÓN “TRANSMITIR VIDEO” En este modo de operación se realiza el streaming de un archivo de video almacenado en el servidor, utilizando para dicho efecto el protocolo UDP, a través de los puertos 1500, 1502, 1504, 1506 (ver Figura 3.9). Figura 3.7 Lista de videos almacenados en el servidor. 80 La aplicación FFWallView despliega una lista con los videos almacenados en el directorio $HOME/FFVideos (ver Figura 3.7). En la Figura 3.8 se observan las características del video para realizar el streaming. En este ejemplo el directorio home es /home/tesis/ Parámetros del archivo (video). Parámetros del archivo (audio). Figura 3.8 Parámetros del archivo de video para realizar el streaming. 81 Streaming para el monitor superior izquierdo enviado por el puerto 1500. Streaming para el monitor superior izquierdo enviado por el puerto 1502. Streaming para el monitor superior izquierdo enviado por el puerto 1504. Streaming para el monitor superior izquierdo enviado por el puerto 1506. En cada flujo de salida enviado FFmpeg identifica los contenidos de audio y video con sus respectivas características. Figura 3.9 Salidas de streaming. 82 Figura 3.10 Streaming en curso. El streaming se realiza de forma ininterrumpida (ver Figura 3.9 y Figura 3.10), es decir, el video seleccionado se envía repetidamente utilizando el esquema de un bucle infinito. Para detener dicho streaming se utiliza la aplicación OFFWallView (ver Figura 3.11 y Figura 3.12). Figura 3.11 Aplicación OFFWallView 99. Figura 3.12 Notificación de terminación de FFWallView. Las pruebas de funcionamiento de FFWallView se realizaron en un computador con las características que se muestran en la Figura 3.13. 99 OFFWallView detiene las funciones de streaming (en el servidor) o de reproducción (en el cliente), independientemente del modo de operación. 83 Figura 3.13 Características generales del sistema (servidor). A continuación se presentan los parámetros de consumo de recursos del sistema al inicio (ver Figura 3.14), durante (ver Figura 3.15) y después de terminar el streaming (ver Figura 3.16). En promedio se consume un 45,03% de CPU. Figura 3.14 Consumo de recursos al inicio del streaming. 84 En promedio se consume un 45,16% de CPU. Figura 3.15 Consumo de recursos durante el streaming. En promedio se consume un 4.8% de CPU. Figura 3.16 Consumo de recursos al terminar el streaming. 85 Adicionalmente se probó el funcionamiento de FFWallView en computadores con distintos componentes de hardware, con el objetivo de estimar las características que permitan un correcto funcionamiento de la aplicación. De la Figura 3.17 a la Figura 3.22 se muestra un resumen de las características y el consumo de recursos del sistema conforme a las pruebas adicionales realizadas. Intel Core 2 Duo: Figura 3.17 Características generales del sistema (servidor, prueba 1). En promedio se consume un 66.2% de CPU. Figura 3.18 Consumo de recursos durante el streaming (prueba 1). 86 AMD Turion II Dual – Core: Figura 3.19 Características generales del sistema (servidor, prueba 2). En promedio se consume un 73.3% de CPU. Figura 3.20 Performance durante el streaming (prueba 2). Intel Core i3: Figura 3.21 Características generales del sistema (servidor, prueba 3). 87 En promedio se consume un 56.4% de CPU. Figura 3.22 Consumo de recursos durante el streaming (prueba 3). 3.1.3 MODO DE OPERACIÓN “LIVESTREAM” La captura de video de un evento en vivo se realiza a través de una sola webcam100 (incorporada o externa), mientras que la captura de audio puede ser realizada desde dos fuentes: un micrófono (incorporado o externo), y/o audio interno del sistema101. El efecto visual es evidente, desfase y congelamiento de algunas secciones durante la presentación. Esto debido al desajuste y posterior pérdida de paquetes como consecuencia de forzar el envío de la fuente de captura (webcam) hacia 4 flujos de salida. Figura 3.23 Efecto por envío de 4 flujos directamente desde la webcam. 100 Este es el motivo fundamental para utilizar como auxiliar la captura X11, puesto que esta última, puede repartirse en varios flujos de salida. 101 Audio interno del sistema: Supone tomar como fuente de audio, cualquier sonido que esté siendo reproducido de manera local en un host. 88 En la Figura 3.25 y Figura 3.26 se presenta el funcionamiento del modo de operación “LiveStream”, el cual inicia luego de una comprobación de conexión exitosa (ver Figura 3.24). Figura 3.24 Inicio de streaming en modo de operación livestream. Captura de sonido del dispositivo “alsa”. Streaming exclusivo para audio enviado por el puerto 1516. Origen del streaming “x11grab” con la resolución del monitor utilizado en el servidor. Figura 3.25 Parámetros de FFmpeg para realizar un livestream. 89 Streaming de video enviado por los puertos 1508 – 1510 – 1512 – 1514 hacia las salidas 0 – 1 – 2 – 3. Dispositivo de captura de video (webcam). Figura 3.26 Parámetros de FFmpeg para realizar un livestream (continuación). Finalmente en la Figura 3.27 se resalta el consumo de recursos del presente modo de operación. En promedio se consume un 22,16% de CPU. Figura 3.27 Consumo de recursos durante el streaming de un evento en vivo. 90 3.1.4 MODO DE OPERACIÓN “SCREENCAST” La razón para enviar las señales de audio y video por separado (ver Figura 3.28) es superar los desfases inherentes a la sincronización. La captura de sonido puede ser realizada desde el audio interno del sistema, y/o desde un micrófono. Captura de sonido del dispositivo “alsa”. Streaming exclusivo para audio enviado por el puerto 1516. Origen del streaming “x11grab” con la resolución del monitor utilizado en el servidor. Streaming de video enviado por los puertos 1508 – 1510 – 1512 – 1514 hacia las salidas 0 – 1 – 2 – 3. Figura 3.28 Parámetros de FFmpeg para realizar un screencast. 91 Finalmente en la Figura 3.29 se resalta el consumo de recursos del presente modo de operación. En promedio se consume un 33,04% de CPU. Figura 3.29 Consumo de recursos durante el streaming de un screencast. 3.2 PRUEBAS Y RESULTADOS EN EL CLIENTE Previo a la descripción de las pruebas y resultados en el lado del cliente, es importante señalar que las características del equipo donde se probó FFWallView (cliente), son similares a las del servidor; esto conforme a lo notado en las evaluaciones adicionales realizadas previamente 102. 3.2.1 MODO DE OPERACIÓN “TRANSMITIR VIDEO” En este modo de operación el cliente se encuentra a la espera del streaming de audio/video generado desde el servidor (ver Figura 3.30). El flujo de datos que se recibe y se despliega en el cliente es en tiempo real, utilizando para dicho efecto 102 Los resultados de dichas evaluaciones son similares a los obtenidos en el servidor tras probar la aplicación en computadores con los componentes de hardware citados anteriormente (Intel Core 2 Duo, AMD Turion II Dual – Core, e Intel Core i3). 92 el protocolo UDP a través de los puertos 1500, 1502, 1504 y 1506 (ver Figura 3.32). Figura 3.30 Espera de señal de transmisión. Figura 3.31 Inicio de transmisión. El mensaje “Unable to seek back to the start” (ver Figura 3.31) que aparece en cada flujo indica que no se puede retroceder la reproducción al principio. Esto se debe a que tanto el streaming, como la reproducción son continuos; es decir, el streaming se reenvía cada vez que llega al final del video, y homólogamente en el cliente, la reproducción es indefinida (siempre a la espera de una señal de streaming). 93 Streaming para el monitor superior izquierdo recibido por el puerto 1500. Streaming para el monitor superior derecho recibido por el puerto 1502. Streaming para el monitor inferior izquierdo recibido por el puerto 1504. Streaming para el monitor inferior derecho recibido por el puerto 1506. Recepción y presentación del streaming en la misma resolución. En este caso 1360 x 768. Figura 3.32 Entradas de streaming para transmitir video. 94 En la Figura 3.33 y Figura 3.34 se muestran los resultados de presentación del modo de operación “Transmitir Video”. Figura 3.33 Presentación del Wall View con créditos iniciales. Figura 3.34 Instante aleatorio durante la presentación del Wall View. Puesto que la ejecución de FFWallView puede interrumpirse en cualquier instante (ya sea en el cliente y/o en el servidor), en la Figura 3.35 se muestra el efecto que causaría terminar el streaming desde el servidor durante una presentación en curso 103. 103 El efecto visual de terminar el streaming desde el servidor es un congelamiento de la imagen en la reproducción que se realiza en el cliente. Asimismo se debe tomar en cuenta que, al mismo tiempo, la señal de audio se corta al ocurrir este evento. 95 En primer lugar se recibe una notificación de desajuste en la recepción de paquetes, y finalmente se muestra una advertencia que indica la ausencia de Vectores de Movimiento (MVs). Figura 3.35 Efecto por terminación del streaming desde el servidor 104. En el caso eventual de querer presentar exactamente lo mismo en los cuatro monitores que conforman el Wall View, el streaming no sufre segmentación alguna, y en cambio, cada flujo pasa directamente a mostrarse en cada monitor (ver Figura 3.36). Figura 3.36 Presentación de duplicados en el Wall View. 104 Este efecto se reproduce en los modos de operación restantes (“LiveStream” y “ScreenCast”). 96 Finalmente de la Figura 3.37 a la Figura 3.40 se muestran los parámetros de consumo de recursos que representa el uso de FFWallView en el cliente. Figura 3.37 Características generales del sistema (cliente). En promedio se consume un 9,35% de CPU. Figura 3.38 Consumo de recursos al inicio de la presentación. 97 En promedio se consume un 11,43% de CPU. Figura 3.39 Consumo de recursos durante la presentación. En promedio se consume un 12.05% de CPU. Figura 3.40 Consumo de recursos al cancelar la presentación. 98 3.2.2 MODO DE OPERACIÓN “LIVESTREAM” En este modo de operación el cliente se encuentra a la espera del streaming de un evento en vivo (livestream) emitido desde el servidor (ver Figura 3.41). En la Figura 3.42 se muestra el flujo de datos que se recibe y se despliega en el cliente es en tiempo real, utilizando para dicho efecto el protocolo UDP a través de los puertos 1508, 1510, 1512, 1514 y 1516 (exclusivo para audio). En la presentación del modo livestream se percibe un ligero desfase de 4 segundos entre audio y video (retraso del audio). Se podría sugerir el uso de la opción “itsoffset 105” de FFmpeg; sin embargo, el único efecto que produce es un retardo en la llegada del streaming hacia el cliente, y no una compensación para provocar un ajuste entre audio y video. A diferencia del modo de operación anterior, en este caso, se reciben 5 flujos de entrada. El flujo adicional corresponde al canal exclusivo que se ha dispuesto para el streaming audio. Figura 3.41 Espera de señal de livestream. En la Figura 3.43 y la Figura 3.44 se muestran los resultados de recepción de entradas y presentación del modo de operación “LiveStream”. 105 itsoffset: Opción del comando ffmpeg que permite establecer un tiempo de desfase en segundos. 99 Streaming exclusivo de audio recibido por el puerto 1516. Streaming para el monitor superior izquierdo recibido por el puerto 1508. Streaming para el monitor superior derecho recibido por el puerto 1510. Streaming para el monitor inferior izquierdo recibido por el puerto 1512. Streaming para el monitor inferior derecho recibido por el puerto 1514. Figura 3.42 Entradas de streaming para livestream. 100 Espacios sin información debido a las características de captura propias de la webcam. Figura 3.43 Presentación de un evento en vivo en el Wall View. En la Figura 3.44 se muestra el resultado de la presentación de duplicados para este modo de operación. Figura 3.44 Presentación de duplicados de un evento en vivo en el Wall View. Para concluir, en la Figura 3.45 se distinguen los parámetros de consumo de recursos de FFWallView para este modo de operación. 101 En promedio se consume un 17,38% de CPU. Figura 3.45 Consumo de recursos durante la presentación de un evento en vivo. 3.2.3 MODO DE OPERACIÓN “SCREENCAST” En este modo de operación el cliente se encuentra a la espera del streaming de un screencast emitido desde el servidor (ver Figura 3.46). En la Figura 3.47 se muestra el flujo de datos que se recibe y se despliega en el cliente es en tiempo real, utilizando para dicho efecto el protocolo UDP a través de los puertos 1508, 1510, 1512, 1514 y 1516 (exclusivo para audio). Además, para el modo screencast no se aprecian desajustes entre audio y video puesto que previamente se tomaron los correctivos pertinentes para evitar los inconvenientes de sincronización inherentes a este esquema de operación. Figura 3.46 Recepción de señal de screencast. 102 Figura 3.47 Entradas de streaming para screencast. 103 La única particularidad del modo screencast, es que tiene un desfase de 1 segundo entre la señal original enviada desde el servidor y la señal presentada en el cliente (ver Figura 3.48). Figura 3.48 Desfase señal recibida vs. señal original. 104 A continuación se muestran los resultados de presentación del modo de operación “ScreenCast”, en transmisión normal (ver Figura 3.49) y transmisión de duplicados (ver Figura 3.50). Figura 3.49 Presentación de un screencast en el Wall View. Figura 3.50 Presentación de duplicados de un screencast en el Wall View. 105 Por último, en la Figura 3.51 se recalcan los parámetros de consumo de recursos de FFWallView para este modo de operación. En promedio se consume un 11,98% de CPU. Figura 3.51 Consumo de recursos durante la presentación de un screencast. NOTA: Para una ilustración a profundidad sobre el uso e instalación de FFWallView, referirse a la Guía de Usuario detallada en el Anexo A de este documento. 3.3 COSTOS Los costos que se detallan a continuación contemplan los elementos necesarios para el funcionamiento e implementación del Wall View, distinguiendo dos alternativas, la que se basa en productos del mercado ecuatoriano, y la solución dedicada que se ofrece en el mercado extranjero. 106 3.3.1 PRECIO DE LA APLICACIÓN FFWALLVIEW DETALLE DE LOS COSTOS Y PORCENTAJE DE UTILIDAD RMU/hora U.S.$5,11 Horas empleadas 300 Gastos varios al mes U.S.$40,00 Meses empleados 8 Margen de retribución 10% DETERMINACIÓN DEL COSTO DE VENTAS106 Costo de FFWallView U.S.$1.853 DETERMINACIÓN DEL PRECIO DE VENTA107 Precio final de FFWallView U.S.$2.038,30 Tabla 3.1 Precio de la aplicación FFWallView. NOTAS: La moneda empleada es el dólar americano (U.S.D. o U.S.$). La jornada laboral considerada para el cálculo de la Remuneración Mensual Unificada “RMU” de U.S.$817,00 [PW46] contempla el salario asignado a un servidor público principiante (con estudios superiores pero sin experiencia laboral) en el horario de lunes a viernes, 8 horas diarias; es decir, 40 horas semanales. De aquí se desprende que la RMU por hora sea de U.S.$5,11. 106 Este resultado se obtiene de sumar la RMU/hora por las horas empleadas, y los gastos varios al mes por los meses empleados. 107 Este resultado se obtiene de multiplicar el costo de FFWallView por el margen de retribución. 107 3.3.2 COTIZACIÓN DE LA ALTERNATIVA DEL MERCADO ECUATORIANO Proveedor Principal: XPC No. 1 2 3 4 5 6 7 8 9 10 11 PRODUCTO CANTIDAD SONY TV 46" KDL-46EX655 LED FHD-TV * Computador ARI AMD X4640, 500GB en disco, 4GB en RAM, DVDRW ** XTRATECH INTEL CI7 3.4GHz/8GB/2TB/DVDWR/TMP/WIN 8 *** Teclado Genius KB-110X, color Negro, conexión USB Mouse Nobutech Ergonomic Optical USB Parlantes Genius SP-S110 (OPCIONAL) Switch HP J9794A 8 port 10/100/1000 Base-T 110-220V (OPCIONAL) Patch Cord newlink cat 6a de 7ft 50um azul *** Adaptadores DVI-I Dual Link (macho) a VGA (hembra) **** Accesorio Argom tv wallmount 32-63 pulgadas fixed for lcd/led br-0461 Software aplicación FFWallView TOTALES 4 1 1 1 1 1 1 2 2 4 1 VALOR SUBTOTAL UNITARIO 1.126,00 4.504,00 855,02 855,02 891,96 891,96 5,70 5,70 4,23 4,23 5,34 5,34 59,94 59,94 5,36 10,72 6,43 12,86 17,24 68,96 2.038,30 2.038,30 5.015,52 8.457,03 IVA (12%) 540,48 102,60 107,04 0,68 0,51 0,64 7,19 1,29 1,54 8,28 244,60 1.014,84 TOTAL 5.044,48 957,62 999,00 6,38 4,74 5,98 67,13 12,01 14,40 77,24 2.282,90 9.471,87 Tabla 3.2 Cotización mercado ecuatoriano. * El proveedor de este producto es TecnoMega ® C.A. ** Este producto incluye tarjeta de video AMD Radeon™ HD6700 con 6 salidas 108. *** El proveedor de estos productos es COMPUTRON S.A. En el caso del computador, se incluye monitor, mouse, teclado y parlantes. **** El proveedor de este producto es TECNOSERSIETE CIA. LTDA. 3.3.3 COTIZACIÓN DE LA ALTERNATIVA DEL MERCADO EXTRANJERO La cotización mostrada en la Tabla 3.3 tiene como referencia valores estimados de distintos proveedores en el mercado internacional (considerando los de menor precio). Estos costos se ajustan a la conformación de un Wall View de 4 monitores de 46”. No. 1 2 3 PRODUCTO CANTIDAD World-Leading Multi-Screen Technology, Ergonomic Design, 9X Media GPU PC-1604 NEC Display MultiSync X462UN 46" LCD Monitor with VUKUNET free CMS (X462UN) Soporte Ergotech Quad (2 Over 2) Lcd Desk Stand - Up To 25.00 Lb - Up To 21" Monitor - Black - Desk Mountable TOTALES Tabla 3.3 Cotización mercado extranjero. 108 Las 6 salidas que permite esta GPU pueden utilizarse simultáneamente. VALOR UNITARIO TOTAL 1 4.800,00 4.800,00 4 3.636,18 14.544,72 1 390,00 8.826,18 390,00 19.734,72 108 NOTA: Para verificar pormenores de los proveedores (ver Tabla 3.2) y los costos resumidos en la Tabla 3.1 y la Tabla 3.3, referirse al apartado de Cotizaciones, detallado en el Anexo C de este documento. 3.3.4 COMPARATIVA DE PRECIOS Una vez descritos los costos asociados a la implementación de un Wall View de 4 monitores desde dos ópticas (nacional y extranjera), a continuación se expone la diferencia de precios entre ambas alternativas: o: U.S.$9.471,87 Ø Alternativa del Mercado Ecuatoriano: Ø Alternativa del Mercado Extranjero: ro: U.S.$19.734,72 s: U.S.$10.262,85 Ø Diferencia entre alternativas: 109 CAPÍTULO IV CONCLUSIONES Y RECOMENDACIONES 4.1 CONCLUSIONES C1. FFmpeg utiliza varias bibliotecas de códecs de audio y video, permitiendo de esta forma tener soporte para una amplia variedad de formatos comerciales, por ejemplo los manejados por Apple QuickTime (.MOV), por RealNetwok (.RV, .RAM, .RM, .ODER .RMVB), o por Microsoft Windows Media Player (.WMV); por tal motivo, FFmpeg inicialmente podría ser considerada como una herramienta netamente orientada a edición multimedia. Sin embargo, se debe recordar que FFmpeg va más allá, siendo una completa plataforma que abarca tareas tan sencillas como transformar el formato de un archivo de audio/video, hasta tareas complejas como realizar un streaming administrando flujos y puertos de salida, en base a protocolos de comunicación en tiempo real. C2. Dado que FFmpeg provee herramientas integrales para la gestión de archivos multimedia (FFmpeg y FFprobe), para su transmisión en la red (FFserver) y para su reproducción (FFplay), no es necesario el uso de aplicaciones adicionales para dichos efectos. C3. FFWallView en base al uso adecuado de herramientas como FFmpeg, hace posible brindar una solución para la implementación, incluso doméstica, de un Wall View capaz de mostrar una gran cantidad de información con un alto impacto visual; escenario que antes era manejado como tecnología exclusiva para operaciones de monitoreo de tráfico aéreo, estaciones de televisión, y sistemas de seguridad y vigilancia; es decir que dicha tecnología tenía como destinatarios principales a empresas con capacidad de realizar inversiones significativas, debido a los costos y complejidad de toda la infraestructura física que esto implica. Es por esto que FFWallView surge con el propósito de tener una alternativa basada en software que no se vea limitada por las características del hardware, lo cual significa que se puede 110 trabajar con cualquier tipo de pantalla (LCD, LED, CRT, plasma) de diferentes tamaños y resoluciones, con cualquier tipo de PC, y con interfaces de red Ethernet convencionales. Además, con la ayuda de aplicaciones sencillas de software libre como Zenity, se brinda la posibilidad de contar con una interfaz gráfica simple y amigable con el usuario final. C4. En las configuraciones iniciales, fundamentalmente en la concerniente al archivo xorg.conf se debe citar que, aunque se recomienda habilitar la opción Xinerama para los esquemas multi-monitor, esto puede causar errores en el gestor de ventanas del entorno de escritorio; fallas como el ocultamiento de la barra que contiene los botones minimizar, maximizar/restaurar y salir, lo cual impide la manipulación de ventanas. Esta es la razón principal para que FFWallView no considere habilitar dicha opción en la configuración de xorg.conf. C5. Para verificar el desempeño de la aplicación se estableció el uso de 4 monitores que conformen el Wall View, sin embargo es posible realizar un escalamiento con el objetivo de utilizar más monitores, teniendo como único condicionante la utilización de tarjetas gráficas (comunes) pertinentes para dicho efecto. C6. El proceso de remasterización de videos (FFRemaster), para el modo de operación “Transmitir Video” de FFWallView, es fundamental en la intención de presentar un video correctamente ajustado a las características de los monitores que conforman el Wall View, esencialmente en lo que se refiere a resolución y aspecto. C7. A través de los cálculos y pruebas de funcionamiento realizadas para determinar el consumo de ancho de banda, se observa un rango que oscila entre los 500 Kbps y 4 Mbps (en función de los 3 modos de operación de FFWallView), por lo que, en un ambiente de red local, no se prevé una eventual saturación del canal. En este punto se debe hacer hincapié en que FFWallView no está enfocada a un uso a través de Internet. 111 C8. El intervalo típico de 1 a 5 segundos de desfase entre el envío y recepción de un streaming de audio/video, se debe al tiempo que demora FFmpeg en estabilizar la tasa de frames por segundo “fps” con la cual se está enviando un archivo multimedia por la red. La tasa por defecto considerada por FFmpeg es 25 fps, y toma alrededor de 4 segundos en estabilizarse. C9. Para los modos de operación “LiveStream” y “ScreenCast” de FFWallView, donde el streaming de audio y video se realiza por separado, FFmpeg siempre da prioridad al tratamiento del audio, independientemente del número de flujos de video que se estén enviando al mismo tiempo por la red local. C10. FFWallView está diseñada de tal forma que quienes operen los equipos cliente y servidor, no deban configurar parámetros adicionales dentro de la aplicación, es decir, desde la óptica del (los) usuario(s) final(es), FFWallView cumple de manera fácil y sencilla las tareas para las cuales fue programada. C11. En FFWallView es importante verificar el estado de conexión entre cliente y servidor, es por esto que siempre, al inicio de la aplicación y para cada modo de operación, se comprueba que exista conectividad en ambos sentidos (servidor/cliente y cliente/servidor). Asimismo, se debe resaltar que, para brindar flexibilidad, las direcciones IP de cliente y servidor se ingresan por teclado, es decir, en el caso de eventual de que se cambien las direcciones IP de los equipos terminales, FFWallView no tendrá limitación por dicha causa para su correcto funcionamiento. C12. Por su versatilidad y gracias al impacto visual que generan los muros de pantallas en el público, FFWallView está orientada a varios ámbitos de aplicación, como educación, publicidad, información, entretenimiento, entre otras. C13. En este proyecto (FFWallView) no se han considerado posibilidades complementarias como acceso remoto al programa, esquemas de autenticación (adicionales) embebidos en la aplicación, redundancia y/o virtualización del servidor. 112 C14. Las características relativas a autenticación y seguridad, son manejadas por otras capas del sistema, y no a nivel de capa aplicación. 4.2 RECOMENDACIONES R1. Para el adecuado funcionamiento y utilización de la aplicación FFWallView, es fundamental realizar una correcta compilación de FFmpeg en el proceso de instalación, ya que si existen defectos en dicho procedimiento, esto podría causar fallas y/o errores de desempeño al momento de invocar bibliotecas que permiten dar tratamiento a los archivos multimedia. Con la finalidad de evitar posibles inconvenientes al instalar FFmpeg, es recomendable seguir a detalle cada uno de los pasos descritos en la Guía de Compilación de FFmpeg, misma que se expone en la página oficial de la herramienta. Para dicho efecto se deben conocer con certeza parámetros como sistema operativo (Linux en este caso), arquitectura del sistema, y la distribución de Linux (incluyendo su versión o release) con la que se esté trabajando. R2. FFWallView fue diseñada bajo la versión 1.0 (estable) de FFmpeg, por lo que se recomienda, en lo posible, instalar esta versión de la herramienta, lo cual garantiza plena compatibilidad entre FFWallView y FFmpeg a nivel de comandos y bibliotecas para el tratamiento multimedia. R3. Respecto de los paquetes (utilitarios) adicionales que utiliza la aplicación, se debe mencionar que la instalación de los mismos, aunque sencilla, no debe realizarse manualmente por el usuario, basta con ejecutar el script que, tras la instalación de FFWallView, se localizará en la ruta “/usr/share/PreReq.sh”. R4. El proceso de remasterización de videos (FFRemaster), para el modo de operación “Transmitir Video” de FFWallView, es fundamental en la intención de presentar un video correctamente ajustado a las características de los monitores que conforman el Wall View, esencialmente en lo que se refiere a resolución y aspecto. 113 R5. Para mejorar el impacto visual del Wall View, es posible utilizar pantallas específicas para dicho propósito, las cuales cuentan con bordes ultra delgados con el objeto de destinar mayor superficie geométrica al video. Sin embargo, su costo es relativamente alto respecto a los monitores convencionales que existen en el mercado. REFERENCIAS BIBLIOGRÁFICAS LIBROS [L1] SMITH, Roderick W., “LPIC-1 Linux Professional Institute Certification STUDY GUIDE”, “GNU’s Not Unix (GNU)”, Pág. 525, Editorial SYBEX, 2nd Edition, febrero 2009. [L2] MACKIE, David, “Streaming Video & MPEG4IP”, Cisco Technology Center, 2002. MANUALES DE COMANDOS DE LINUX [M1] Linux Man Page, FFmpeg developers, “ffmpeg”, versión 1.0. [M2] Linux Man Page, FFmpeg developers, “ffplay”, versión 1.0. [M3] Linux Man Page, FFmpeg developers, “ffserver”, versión 1.0. [M4] Linux Man Page, FFmpeg developers, “ffprobe”, versión 1.0. [M5] Linux Man Page, BURTON, Ross, “zenity”, versión 3.4.0. [M6] Linux Man Page, BURTON, Ross, “devilspie”, versión 0.22. [M7] Linux Man Page, DE ASUNCAO E BRITO, Andre Filipe, SETTI, Ricardo, VAN TILBURG, Paul, “notify-send”, versión 0.2.2. PUBLICACIONES (PAPERS, REVISTAS, NOTICIAS) [P1] UNGEMACH, Mario A., DUQUE, Sebastián U., “Transmisión de multimedia en internet usando proyecto FFmpeg.”, Universidad Técnica Federico Santa María, 2008. [P2] Cisco Networking Academy CCNA Exploration 4.0, “Conmutación y conexión inalámbrica de LAN”, 2008. [P3] Cisco Networking Academy CCNA Exploration 4.0, “Acceso a la WAN”, 2008. FOLLETOS [F1] HIDALGO, Pablo, “Redes de Área Extendida”, 2011. [F2] VINUEZA, Mónica, “Redes de Área Local”, 2009. INTERNET [PW1] Wikipedia, “GNU”, [12 de enero de 2013] http://es.wikipedia.org/wiki/GNU [PW2] Free Software Foundation Inc., Traducción: SILVA, Emilio, 2004, “¿Qué es GNU?”, “¿Qué es el software libre?”, [12 de enero de 2013] http://www.gnu.org/home.es.html [PW3] Wikipedia, “GNOME”, [12 de enero de 2013] http://es.wikipedia.org/wiki/GNOME [PW4] Wikipedia, “KDE”, [12 de enero de 2013] http://es.wikipedia.org/wiki/KDE [PW5] Wikipedia, “LXDE”, [12 de enero de 2013] http://es.wikipedia.org/wiki/LXDE [PW6] Wikipedia, “Xfce”, [12 de enero de 2013] http://es.wikipedia.org/wiki/Xfce [PW7] Wikipedia, “Slackware”, [12 de enero de 2013] http://es.wikipedia.org/wiki/Slackware [PW8] FFmpeg, “FFmpeg”, [16 de junio de 2012] http://ffmpeg.org/ffmpeg.html [PW9] Graphcomp, “Grafman's FFMPEG Developer Info”, [16 de junio de 2012] http://graphcomp.com/ffmpeg/ [PW10] FFmpeg, “ffmpeg-poster-final2-downscaled.jpg”, [19 de enero de 2013] http://ffmpeg.org/trac/ffmpeg/attachment/ticket/994/ffmpeg-poster-final2downscaled.jpg [PW11] FFmpeg, “FFplay”, [12 de enero de 2013] http://ffmpeg.org/ffplay.html [PW12] FFmpeg, “FFserver”, [12 de enero de 2013] http://ffmpeg.org/ffserver.html [PW13] FFmpeg, “Streaming media with ffserver”, [12 de enero de 2013] https://ffmpeg.org/trac/ffmpeg/wiki/Streaming media with ffserver [PW14] FFmpeg, “ffprobe”, [12 de enero de 2013] http://ffmpeg.org/ffprobe.html [PW15] Definición, “Definición de multimedia”, [12 enero de 2013] http://definicion.de/multimedia/ [PW16] Definición, “Definición de sonido”, [12 de enero de 2013] http://definicion.de/sonido/ [PW17] Desarrollo Multimedia, “Tipos de formatos o archivos de audio”, [21 de enero de 2013] http://www.desarrollomultimedia.es/articulos/tipos-deformatos-o-archivos-de-audio-y-codecs.html [PW18] Desarrollo Web, “Los formatos de audio”, [21 de enero de 2013] http://www.desarrolloweb.com/articulos/formatos-audio.html [PW19] Wikipedia, “Compresión de audio”, [12 de enero de 2013] http://es.wikipedia.org/wiki/Compresión_de_audio [PW20] Wikipedia, “Algoritmo de compresión sin pérdida”, [14 de enero de 2013] http://es.wikipedia.org/wiki/Algoritmo_de_compresión_sin_pérdida [PW21] Wikipedia, “Algoritmo de compresión con pérdida”, [14 de enero de 2013] http://es.wikipedia.org/wiki/Algoritmo_de_compresión_con_pérdida [PW22] Kioskea, “Video”, [14 de enero de 2013] http://es.kioskea.net/contents/video/video.php3 [PW23] Instituto Nacional de Tecnologías Educativas y de Formación del Profesorado, “Formatos de archivos de vídeo”, España, [14 de enero de 2013] http://www.ite.educacion.es/formacion/materiales/107/cd/video/video010 2.html [PW24] H264 info, “h264”, [14 de enero de 2013] http://www.h264info.com/h264.html [PW25] Bioelectrinik Blogspot, LÓPEZ JILLO, Camilo, 22 de febrero de 2012, “Definición de LAN, MAN Y WAN”, [22 de enero de 2013] http://bioelectrinik.blogspot.com/2012/02/definicion-de-lan.html [PW26] Universidad de Antioquia, PASTOR, Patricio, “Intranet: un sistema para la gestión de información”, [23 de enero de 2013] http://caribe.udea.edu.co/~hlopera/intranet.html#Def [PW27] Wikipedia, “Streaming”, [12 de enero de 2013] http://es.wikipedia.org/wiki/Streaming [PW28] Oposicionestic, “Arquitectura Cliente - Servidor”, [15 de enero de 2013] http://oposicionestic.blogspot.com/2011/06/arquitectura-clienteservidor.html [PW29] Wikipedia, “Multi-monitor”, [8 de Julio de 2012] http://en.wikipedia.org/wiki/Multi-monitor [PW30] Intel, “Múltiples monitores: Descripción de las opciones de múltiples pantallas”, [8 de julio 2012] http://www.intel.com/support/sp/graphics/intel945gm/sb/cs-022119.htm [PW31] Tech-faq, “How to set up dual monitores”, [8 de Julio 2012] http://www.tech-faq.com/how-to-set-up-dual-monitors.html [PW32] Informática Moderna, “Tarjetas de video”, [6 de Octubre de 2012] http://www.informaticamoderna.com/Tarjetas_de_video.htm [PW33] Gnome, “Zenity”, [15 de noviembre de 2012] http://library.gnome.org/users/zenity/stable/index.html.es [PW34] Ubuntu help, “Devilspie”, [1 de noviembre de 2012] https://help.ubuntu.com/community/Devilspie [PW35] Burtonini, “Devil's Pie”, [1 de noviembre de 2012] http://burtonini.com/blog/computers/devilspie [PW36] FFmpeg, “Compile FFmpeg on Ubuntu”, [28 de Noviembre 2012] http://ffmpeg.org/trac/ffmpeg/wiki/UbuntuCompilationGuide [PW37] FFmpeg, “Compile FFmpeg on CentOS 6.0”, [30 de Noviembre] http://ffmpeg.org/trac/ffmpeg/wiki/CentosCompilationGuide [PW38] Wikipedia, “Enfoques de desarrollo de software”, [26 de noviembre de 2012] http://es.wikipedia.org/wiki/Metodología_de_desarrollo_de_software [PW39] VideoLAN Organization, “VideoLAN Streaming Solution”, [19 de octubre de 2012] http://www.videolan.org/vlc/streaming.html [PW40] Real Networks, “Helix Universal Media Server”, [20 de octubre de 2012] http://www.realnetworks.com/helix/streaming-media-server/ [PW41] MacOS Forge, “Darwin Streaming Server”, [20 de octubre de 2012] http://dss.macosforge.org/ [PW42] Superhua, 21 de marzo de 2006, “How to set up web streaming for free”, [21 de octubre de 2012] http://superhua.wordpress.com/2006/03/21/howto-set-up-web-streaming-for-free/ [PW43] Ezs3, “What bitrate should I use when encoding my video?, how do I optimize my video for the web?”, [18 de febrero de 2013] http://www.ezs3.com/public/What_bitrate_should_I_use_when_encoding _my_video_How_do_I_optimize_my_video_for_the_web.cfm [PW44] Ubuntu Official Documentation, “Meeting Minimum Hardware Requirements”, [18 de febrero de 2013] https://help.ubuntu.com/12.10/installation-guide/amd64/minimumhardware-reqts.html [PW45] Fedora, “Requerimientos de Instalación Recomendados”, [18 de febrero de 2013] http://fedoraproject.org/es/ [PW46] Finanzas Populares Y Solidarias, enero 2013, “Remuneración Mensual por Puestos”, [9 de abril de 2013] http://www.finanzaspopulares.gob.ec/images/stories/PDF/LEY DE TRANSPARENCIA/Remuneración mensual.pdf Anexo A Guía de Usuario FFWallView Esta guía le orientará sobre el uso, instalación y funcionamiento de FFWallView de forma práctica y sencilla. FFWallView tiene dependencia directa de la plataforma cruzada FFmpeg, por tanto el primer paso es instalar correctamente dicha herramienta. Este procedimiento debe realizar manualmente en función de la distribución de Linux que usted utiliza. Para tal efecto se recomienda seguir los pasos descritos en la Guía de Instalación de FFmpeg descrita en su sitio oficial: https://ffmpeg.org/trac/ffmpeg/wiki/CompilationGuide FFWallView cuenta con cuatro paquetes para su instalación: ü FFWallViewC CLIENTE ü FFWallViewS SERVIDOR ü OFFWallView CLIENTE y SERVIDOR ü FFRemaster SERVIDOR (Recomendado) Figura 1 Paquetes .DEB. Figura 2 Paquetes .RPM. Dependiendo de su distribución, debe seleccionar el paquete .DEB (para distribuciones basadas en DEBIAN) o .RPM (para distribuciones basadas en REDHAT) correspondiente. Basta con dar doble click en el paquete, ingresar su password para tareas de instalación (generalmente es la contraseña de usuario) y comenzará el proceso. Las figuras que se muestran en adelante responden a un proceso de instalación de FFWallView realizado bajo la distribución de Linux -Ubuntu 12.10 “Quantal Quetzal”-. Anexo A Guía de Usuario FFWallView Figura 3 Instalación de FFWallViewC. Anexo A Guía de Usuario FFWallView Figura 4 Instalación de FFWallViewS. Figura 5 Instalación de FFRemaster. Anexo A Guía de Usuario FFWallView Figura 6 Instalación de OFFWallView. En caso de aparecer alguna advertencia sobre el paquete, ignórela y continúe con la instalación. Figura 7 Posible advertencia. Tras completar el proceso de instalación los iconos correspondientes se ubicarán automáticamente en el “Lanzador de Aplicaciones”. En caso de mostrar inadecuadamente el ícono, o si simplemente este no aparece, diríjase a la “Zona de Aplicaciones”, identifique el ícono pertinente y ubíquelo en cualquier posición del lanzador. Anexo A Guía de Usuario FFWallView Figura 8 Error al mostrar el ícono de la aplicación. Figura 9 Ubicación del ícono en el “Lanzador de Aplicaciones”. Figura 10 Presentación adecuada de los íconos tras una instalación exitosa. Luego de haber instalado exitosamente FFWallView, es necesario instanciar algunos paquetes adicionales. Para esto basta con ejecutar el script “PreReq.sh”, seleccionar la distribución de Linux con la que está trabajando, escribir su password para tareas de instalación y listo, los paquetes se instalarán automáticamente. Instalación de Pre-Requisitos Desde una terminal ejecute el siguiente comando: sh /usr/share/PreReq.sh Anexo A Guía de Usuario FFWallView Figura 11 Instalación de pre-requisitos (1). A continuación se muestra un menú donde para seleccionar la distribución de Linux que usted está usando, y así instalar las dependencias adecuadas, en caso de no conocer el tipo de distribución, podrá realizar una consulta (opción 3) para averiguarlo. Figura 12 Instalación de pre-requisitos (2). Anexo A Guía de Usuario FFWallView Figura 13 Consulta de la distribución de Linux. Figura 14 Petición de password para tareas de instalación. Anexo A Guía de Usuario FFWallView Figura 15 Instalación de pre-requisitos en proceso. FFRemaster (en el servidor) La aplicación inicia con la opción de continuar o cancelar. Figura 16 FFRemaster inicio. Figura 17 Selección del modo de ejecución. Anexo A Guía de Usuario FFWallView Posteriormente se muestra la lista de videos almacenados en su directorio o carpeta personal, donde podrá seleccionar uno de los archivos para remasterizarlo. Figura 18 Lista de videos. La remasterización del video seleccionado se realizará de acuerdo al tipo de formato que se seleccione. Para una mejor percepción en la calidad de imagen, se recomienda utilizar el formato “mp4”. Anexo A Guía de Usuario FFWallView Figura 19 Tipos de formato. Durante el proceso de remasterización se mostrará un video introductorio de FFWallView. Figura 20 Video introductorio de FFWallView. Al finalizar correctamente el proceso de remasterización, terminará la reproducción del video introductorio y se verá una notificación indicando el directorio donde se almacenan los videos remasterizados. Anexo A Guía de Usuario FFWallView Figura 21 Directorios Videos & FFVideos. FFWallView (en el servidor) Al igual que en FFRemaster, FFWallView arranca con la opción de continuar o cancelar. Figura 22 Inicio de FFWallView (servidor). Seleccione modo de operación: Figura 23 Modo de ejecución para el servidor FFWallView. Anexo A Guía de Usuario FFWallView Menú principal que muestra los 3 modos de operación disponibles. Figura 24 Menú principal servidor FFWallView, modo consola. Figura 25 Menú principal servidor FFWallView, modo gráfico. Independientemente del modo de operación seleccionado (Transmitir Video, Transmitir LiveStream o Transmitir ScreenCast) y del lado donde se ejecute FFWallView (ya sea en el cliente o en el servidor), la aplicación realizará una prueba de conectividad bidireccional entre los hosts, en modo consola o en modo gráfico. Anexo A Guía de Usuario FFWallView Seleccione el número de clientes: Figura 26 Número de clientes, modo consola. Figura 27 Número de clientes, modo gráfico. Ingreso de direcciones IP de los clientes a contactar para realizar el streaming. Figura 28 Ingreso direcciones IP, modo consola. Anexo A Guía de Usuario FFWallView Figura 29 Ingreso direcciones IP, modo gráfico. En caso de existir algún problema con la conexión, sea físico, por direcciones incorrectas y/o no disponibles, se mostrará el siguiente mensaje, para luego reiniciar las pruebas de conectividad. Figura 30 Error de conexión, modo consola. Figura 31 Error de conexión, modo gráfico. Anexo A Guía de Usuario FFWallView Si la conexión es exitosa, usted podrá continuar con el modo de operación seleccionado. MODO DE OPERACIÓN “TRANSMITIR VIDEO” En este modo de operación usted podrá ver la lista de videos remasterizados disponibles para realizar el streaming de video, mismo que se ejecutará de manera ininterrumpida. Figura 32 Lista de videos remasterizados, modo consola. Figura 33 Lista de videos remasterizados, modo gráfico. Anexo A Guía de Usuario FFWallView En modo consola se muestra cuál es el video seleccionado antes de realizar el streaming. Figura 34 Video seleccionado. En modo gráfico una vez iniciada la transmisión se lanzará una notificación indicando el correcto arranque de la misma. Figura 35 Notificación de envío del streaming. En el modo consola durante el streaming identificará algo como esto: Figura 36 Streaming, modo consola. Anexo A Guía de Usuario FFWallView MODO DE OPERACIÓN “LIVESTREAM” En modo consola, para el inicio del LiveStream usted deberá dar confirmación presionando la tecla ENTER. Figura 37 Inicio del LiveStream. En modo gráfico, el LiveStream iniciará automáticamente luego de finalizar la prueba de conectividad. MODO DE OPERACIÓN “SCREENCAST” En modo consola, el ScreenCast iniciará al confirmar pulsando ENTER. Figura 38 Inicio del ScreenCast. En el modo gráfico, el ScreenCast comenzará automáticamente al finalizar la prueba de conectividad. Anexo A Guía de Usuario FFWallView FFWallView (en el cliente) Aplicación FFWallView en el cliente: Figura 39 Aplicación FFWallView Cliente. Tal como en el servidor, FFWallView arranca con la opción de continuar o cancelar. Figura 40 Inicio de FFWallView (cliente). Usted puede escoger entre 2 modos de ejecución. Figura 41 Modo de ejecución para el cliente FFWallView. Según el modo de ejecución que seleccione, se desplegará un menú que muestra los 3 modos de operación disponibles. Anexo A Guía de Usuario FFWallView Figura 42 Menú principal cliente FFWallView, modo consola. Figura 43 Menú principal cliente FFWallView, modo gráfico. NOTA: Como se mencionó anteriormente, en el cliente FFWallView también se realizan pruebas de conectividad, como las indicadas en el servidor. Anexo A Guía de Usuario FFWallView MODO DE OPERACIÓN “TRANSMITIR VIDEO” Se tienen 2 opciones: TRANSMITIR AHORA.- El streaming recibido es segmentado y presentado en 4 monitores, conformando así el Wall View. TRANSMITIR DUPLICADOS.- El streaming recibido se reproduce en cada uno de los 4 monitores (misma imagen en los 4). Figura 44 Modo de transmisión, modo consola. Figura 45 Modo de transmisión, modo gráfico. Anexo A Guía de Usuario FFWallView Luego que usted haya seleccionado un modo de transmisión (presentación del Wall View), indistintamente del modo de operación (“Transmitir Video”, “LiveStream” o “ScreenCast”), siempre estará en espera de recibir una señal de streaming desde el servidor, y así presentarlo en el Wall View. Figura 46 Esperando señal. Figura 47 Presentación de “Video” remasterizado en el Wall View. Anexo A Guía de Usuario FFWallView Figura 48 Presentación de duplicados de “Video” en el Wall View. Figura 49 Presentación de “LiveStream” en el Wall View. Anexo A Guía de Usuario FFWallView Figura 50 Presentación de duplicados de “LiveStream” en el Wall View. Figura 51 Presentación de “ScreenCast” en el Wall View. Anexo A Guía de Usuario FFWallView Figura 52 Presentación de duplicados de “ScreenCast” en el Wall View. OFFWallView (en cliente y en servidor) Para finalizar la actividad de FFWallView en cualquier instante, y en cualquiera de sus modos de operación, es suficiente con que dé un click en OFFWallView y terminará con la ejecución. Esto ocurre por igual tanto en el cliente, como en el servidor. Figura 53 Terminación de FFWallView. Anexo A Guía de Usuario FFWallView Para desinstalar la aplicación FFWallView en una terminal digite los siguientes comandos y escriba su password para tareas de instalación: Para distribuciones basadas en DEBIAN sudo sudo sudo sudo dpkg dpkg dpkg dpkg --purge --purge --purge --purge ffwallviewc ffwallviews ffremaster offwallview Para distribuciones basadas en REDHAT su su su su –c –c –c –c ‘rmp ‘rmp ‘rmp ‘rmp -e -e -e -e FFWallViewC’ FFWallViewS’ FFRemaster’ OFFWallView’ Finalmente para garantizar la desinstalación, reinicie su sistema. Anexo B Ciclo de la Metodología Incremental para FFWallView 1) Para el análisis de requisitos se consideró fundamentalmente las tareas principales que debe cumplir la aplicación: Ø Capturar la información multimedia (básicamente audio y video). Ø Segmentar el video en función del número de monitores (empleando las opciones propias de la herramienta FFmpeg). Ø Hacer uso del sistema operativo para controlar las tarjetas de video pertinentes, lo cual corresponde a un procesamiento y ajuste en la imagen. Ø Codificar los esquemas pertinentes de audio y video. Ø Insertar la información dentro del servidor. Ø Realizar la transmisión al cliente (con previa verificación de conectividad), respondiendo al tipo de petición del mismo. 2) En la etapa de diseño se consideró el esquema general que debía manejarse tanto en cliente como en servidor. Figura 1 Esquema general de diseño para FFWallView. Anexo B Ciclo de la Metodología Incremental para FFWallView 3) En la programación el conflicto central respondía a la problemática sobre qué lenguaje de programación utilizar. En consecuencia, desde la primera iteración, se optó por el lenguaje bash script en conjunto con el utilitario Zenity para proveer una interfaz gráfica sencilla. 4) Finalmente, en función del avance del proyecto, se realizaron pruebas para evaluar el desempeño de la aplicación en cada iteración. EN TOTAL SE REALIZARON 5 ITERACIONES, HASTA DEFINIR EL PROTOTIPO FINAL. Figura 2 Ciclo empleado para la aplicación FFWallView (Metodología Incremental). Criterio Insatisfactorio: Etapa de diseño. En este punto inicialmente se pretendió iniciar de forma remota al cliente, desde el servidor, conforme al flujograma de la Anexo B Ciclo de la Metodología Incremental para FFWallView Figura 3. Por añadidura el resto de etapas no cumplieron las expectativas planteadas; siendo necesaria una segunda iteración. Figura 3 Diagrama de flujo de la iteración 1. Criterio Insatisfactorio: Etapa de diseño. En este punto se buscaba la manera más apropiada para realizar la prueba de conectividad bidireccional entre cliente y servidor. La prueba se realizaba antes de seleccionar el modo de operación, lo Anexo B Ciclo de la Metodología Incremental para FFWallView cual no garantizaba que durante todo el proceso se constate un estado exitoso de conexión. Por tal motivo, se planteó una tercera iteración. En la Figura 4 y en la Figura 5 se describe el proceso pretendido bajo este esquema. Figura 4 Diagrama de flujo para el servidor (iteración 2). Anexo B Ciclo de la Metodología Incremental para FFWallView Figura 5 Diagrama de flujo para el cliente (iteración 2). Criterio Insatisfactorio: Etapa de programación. Tras superar las inconformidades en la etapa de diseño109, en este punto el declive se traducía en el hecho de enviar los cuatro flujos ya divididos desde el servidor. Lo que se pudo percibir fueron ciertos desajustes en aspecto y resolución de la imagen en el instante de reproducción en el cliente. Este hecho motivó una cuarta iteración en el proceso. 109 En la Figura 6 y en la Figura 7 se muestran los flujogramas definitivos tanto para servidor, como para cliente de la aplicación FFWallView. Anexo B Ciclo de la Metodología Incremental para FFWallView Figura 6 Diagrama de flujo de FFWallView para el servidor. Anexo B Ciclo de la Metodología Incremental para FFWallView Figura 7 Diagrama de flujo de FFWallView para el cliente. Criterio Insatisfactorio: Etapa de programación. Pese a llegar a la acertada conclusión de que los flujos debían segmentarse en el lado del cliente (en el instante de reproducción), al mismo tiempo se buscaba mejorar el tiempo de respuesta para iniciar la presentación del streaming en los monitores; para lo cual se consideró el uso del protocolo experimental de streaming SAP (Session Announcement Protocol “Protocolo de Aviso de Sesión”), mismo que presentó errores en el envío de flujos simultáneos a través de varios puertos. Este particular abrió paso a una quinta iteración. Anexo B Ciclo de la Metodología Incremental para FFWallView Criterio Insatisfactorio: Ninguno. El inconveniente presentado con el protocolo SAP, fue solventado con el empleo del protocolo UDP en su lugar. Luego de las pruebas realizadas, finalmente se concluyó que el esquema general era el esperado, conforme a los requerimientos planteados en la etapa de análisis. Esta iteración se traduce en el prototipo final presentado en este proyecto. Anexo C Cotizaciones Sitio web: www.xpc.com.ec Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones A D A T A 1T B N H13 2 .5" U SB 3 .0 SILV ER - B LA C K A D A T A 50 0 GB HD 6 10 2 .5" U SB 3 .0 B K- B L C A SE QU A SA D SX C - 3 0 72 C C OM B O T E, M O, PA ,C R E4 5,0 0 C A SE QU A SA D SX C - 9 8 0 2 A C OM B O T E, M O, PA ,C R E4 2 ,0 0 C A SE SEN T EY C S1- 13 9 9 W IT H PS B C PC - 4 50 - OC A D A T A SD D 12 0 GB SA T A III N OT . PA C K 155,50 14 7,0 0 C A SE SEN T EY SPID ER GS- 6 70 0 B LA C K N O PS 9 3 ,0 0 6 4 ,0 0 C A M A R A GEN IU S D IGIT A L G- SHOT 14 0 0 77,78 GEN IU S SP- U 150 X U SB B LA C K- GR EEN C A M A R A SON Y D SC - H9 0 X X + EST U C HE+M EM . 4 GB 114 ,0 0 110 ,0 0 12 2 ,0 0 IN T EL D H77EB LGA 1155,D D R 3 ,V ID ,SON ,LA N B U LK IN T EL D H77KC LGA 1155,D D R 3 ,V ID ,SON ,LA N B U LK ND ND R OU T ER D LIN K D IR - 9 0 5L N 3 0 0 C lo ud R OU T ER D LIN K D IR - 9 0 0 L N 150 C lo ud R OU T ER D LIN K D IR - 6 57A R OU T ER D LIN K D IR - 6 15A R OU T ER D LIN K D IR - 6 10 A R OU T ER D LIN K D IR - 6 0 0 A R OU T ER D LIN K D IR - 50 5 POC KET R OU T ER D LIN K D IR - 3 2 0 A ROUTER, ACCESS POINT V ID EO Z OGIS GT X - 550 T I 2 GB PC I- EX P. V ID EO Z OGIS GT - 6 4 0 2 GB PC I- EX P. V ID EO Z OGIS GT - 6 4 0 1GB PC I- EX P. V ID EO Z OGIS GT - 6 3 0 2 GB PC I- EX P. V ID EO Z OGIS GT - 6 3 0 1GB PC I- EX P. 13 ,6 0 13 ,6 0 6 ,8 0 6 ,3 0 4 ,9 0 9 ,8 0 6 ,70 6 ,4 0 58 6 ,0 0 6 3 5,0 0 SA M SU N G I5- 3 2 10 ,4 GB ,50 0 GB ,14 " ,W C ,D W ,W 7HB HP Laser Jet Pr o 2 0 0 C o lo r M 2 76 nw PN :C F 14 5A SW IT C H D LIN K D GS- 10 16 D 16 P R J4 5 SW IT C H D LIN K KV M - 12 1 W IT H C A B LES 2 7,0 0 14 9 ,0 0 2 58 ,0 0 Sucursal Mayor Guayaquil PBX: 229 3755 FA X: 229 3666 / Ext.: 222 SA M SU N G LA SER M L- 2 16 5 * N EW HP Of f iceJet Pr o K8 6 0 0 PN :C B 0 15A HP Of f iceJet Pr o 8 6 0 0 PN :C M 74 9 A HP Of f iceJet 750 0 A PN :C 9 3 0 9 A HP Laser Jet Pr o P110 2 w PN :C E6 58 A Centro de Servicios Técnicos PBX: 255 4210 / 290 8202 FA X: 290 2981 SW IT C H D LIN K KV M - 4 4 0 8 POR T PS2 / U SB 6 2 ,0 0 3 5,0 0 HP Laser Jet Pr o C o lo r C P10 2 5nw PN :C E9 18 A 4 6 1,0 0 2 2 6 ,0 0 3 6 9 ,0 0 4 3 9 ,0 0 2 4 9 ,0 0 8 6 6 ,0 0 9 2 ,0 0 114 ,0 0 SA M SU N G T V 55" 3 D LED 55ES70 0 0 GX 2F.9HD 6 7,0 0 SA M SU N G T V 55" 3 D LED 55ES6 50 0 GX 2F.19 HD2 ,0 0 SA M SU N G T V 51" 3 D PLA SM A 51E4 9 0 B 4 9G4HD 6 ,0- 0T V SA M SU N G T V 4 6 " 3 D LED 4 6 ES70 0 0 GX2 .16 F HD 8 ,0 - T0V SA M SU N G T V 4 3 " 3 D PLA SM A 4 3 E4 9 0 B 84 0G6HD ,0 0- T V SA M SU N G T V 4 0 " LED 4 0 EH50 0 0 GX F HD76 - T 8V,0 0 SA M SU N G 2 0 " LS0 B 3 0 0 N S LED SA M SU N G 18 .5" LS19 A 10 N S LC D LG T V 55" 55LM 6 2 0 0 3 D LED F U LL- HD T V2 .13 1,0 0 LG T V 50 " 50 PA 4 50 0 PLA SM A F U LL- HD T V 8 4 9 ,0 0 LG T V 4 7" 4 7LM 6 2 0 0 3 D LED F U LL- HD T V 1.6 15,0 0 LG T V 4 2 " 4 2 LS4 6 0 0 LED F U LL- HD T V SON Y T V 3 2 " KD L- 3 2 EX 4 55 LED F HD - T V 4 8 5,0 0 SON Y T V 3 2 " KD L- 3 2 B X 3 9 5 LC D HD - T V 4 0 5,0 0 4 1,0 0 3 4 1,0 0 18 7,0 0 4 .0 75,0 0 2 4 1,0 0 2 2 5,0 0 2 17,0 0 18 5,0 0 14 9 ,0 0 3 14 ,0 0 175,0 0 2 0 2 ,0 0 59 ,0 0 2 .8 72 ,0 0 12 4 ,0 0 6 4 6 ,0 0 HP Laser Jet EN T ER PR IC E C P552 D N PN :C # E70 # # #8 #A # HP Laser Jet EN T ER PR IC E 6 0 0 M 6 0 2 n PN :C 9 9E9 9 ,09 01A HP D eskJet A IO 2 0 50 J510 a PN :C H3 50 C HP D esing jet 510 10 6 7mm PN :C H3 3 7A EPSON W OR K- PLA C E T 4 2 W D EPSON T M U - 9 50 P- 2 52 EPSON T M U 2 2 0 D - 6 53 PA R . W IT H A D A P. 18 B K2 ,0 0 EPSON ST Y LU S T 50 EPSON ST Y LU S PR O 9 70 0 GF EPSON ST Y LU S M U LT . T X - 73 0 W EPSON ST Y LU S M U LT . L3 55 * N EW EPSON ST Y LU S M U LT . L3 50 * N EW EPSON ST Y LU S M U LT . L2 10 * N EW EPSON PIC T U R E M A T E PM - 2 2 5 EPSON PHOT O L8 0 0 EPSON LX - 50 M A T R IC IA L EPSON LX - 3 0 0 M A T R IC IA L EPSON LA B EL W OR KS LW - 4 0 0 EPSON F X - 8 9 0 M A T R IC IA L IMPRESORAS EPSON,HP,LEX MARK,SAMSUNG SON Y T V 55" KD L- 55HX 755 3 D LED F HD -1.8 T V10 ,0 0 SON Y T V 4 6 " KD L- 4 6 HX 755 3 D LED F HD1.179 - T V ,0 0 SON Y T V 4 6 " KD L- 4 6 EX 6 55 LED F HD - T V1.12 6 ,0 0 SON Y T V 4 0 " KD L- 4 0 HX 755 3 D LED F HD1.0 -TV 12 ,0 0 SON Y T V 4 0 " KD L- 4 0 EX 6 55 LED F HD - T V 8 9 0 ,0 0 SON Y T V 4 0 " KD L- 4 0 EX 4 55 LED F HD - T V 79 4 ,0 0 SON Y T V 4 0 " KD L- 4 0 B X 4 55 LC D F HD - T V 6 71,0 0 Sucursal Sur Guayaquil PBX: 234 0479 / 233-1137 233-8475 / 233 2924 / 234-9043 6 3 ,0 0 2 2 0 ,0 0 18 2 ,0 0 2 3 6 ,0 0 10 4 ,0 0 HP Laser Jet Pr o M ult . C o lo r 4 0 0 M 4 75d n PN :C E8 6 3 A 756 ,0 0 HP Laser Jet Pr o 4 0 0 M 4 0 1d w PN :C F 2 8 5A HP Laser Jet Pr o 4 0 0 C o lo r M 4 0 1n PN :C Z 19 5A T V B OX Z OGIS R A 4 0 0 U U SB 2 .0 A N A LOG T U N ER 2 6R,0 0 SW IT C H D LIN K D ES- 10 2 4 D 2 4 P R J4 5 18 9 ,0 0 114 ,0 0 19 2 ,0 0 118 ,0 0 73 8 ,0 0 554 ,0 0 8 4 9 ,0 0 53 4 ,0 0 1.0 50 ,0 0 1.19 5,0 0 1.79 8 ,0 0 2 .2 54 ,0 0 HP Laser Jet Pr o 10 0 C o lo r M ult . M 175nw PN :C E8 6 6 A 3 55,0 0 HP Laser Jet M ult . M 12 12 nf P110 2 w PN :C E8 4 1A IMPRESORA SAMSUNG, HP SC A N N ER M ET R OLOGIC S V OY A GER 12 0 0 g SC A N N ER EPSON PHOT O V 50 0 SC A N N ER EPSON PHOT O V 3 3 0 SCANNER HP, EPSON PR OY EC T OR EPSON PR ESEN T ER L R EPR . D V D PR OY EC T OR EPSON POW ER LIT E X 12 PR OY EC T OR EPSON POW ER LIT E W 12 + PR OY EC T OR EPSON POW ER LIT E S12 + PR OY EC T OR EPSON POW ER LIT E 9 10 W PR OY EC T OR EPSON POW ER LIT E 9 0 5 PR OY EC T OR EPSON POW ER LIT E 4 75I+ PR OY EC T OR EPSON EB - G59 0 0 52 0 0 LU M . PROY ECTORES EPSON, SONY ,SAMSUNG T A R JET A T V Z OGIS R A 2 2 0 PC I T U N ER F M R / C 2 1,0 0 SW IT C H D LIN K D ES- 10 16 D 16 P R J4 5 4 0 9 ,0 0 2 59 ,0 0 2 53 ,0 0 2 0 9 ,0 0 79 ,0 0 159 ,0 0 14 2 ,0 0 LG T V 4 2 " 4 2 LM 6 2 0 0 3 D LED F U LL- HD T1.3 V 0 2 ,0 0 LG T V 3 2 " 3 2 C S4 6 0 LC D HD - T V LG 2 3 " IPS2 3 V - PN LED LG 2 3 " E2 3 4 1V - B N LED LG 2 1.5" E2 2 4 2 C - B N LED LG 15.6 " E16 4 2 C - B N LED HP 2 0 " LE2 2 0 2 X M LED PN :A 2 U 6 3 A A HP 18 .5" LV 19 11 LED PN :A V 5V 72 A A A OC 19 " E9 4 3 F W S LED W IT H W A LL M OU N9T3 ,8 0 T OSHIB A X 8 75- SP72 0 1SL I7- 3 6 10 QM ,6 GB ,1T B ,17.3 " ,B 1.72 R ,W 9 ,0 7HPR 0 SON Y T V 3 2 " KD L- 3 2 EX 555 LED F HD - T V 557,0 0 SON Y SV S15115F LB I5- 3 2 10 ,6 GB ,6 4 0 GB ,15.5" ,W C ,B R1.179 ,W 7HP ,0 0 HP Laser Jet Pr o 4 0 0 C o lo r M 4 51d n PN :C E9 57A SW ITCH DLINK 10 / 0 4 / 2 0 13 MONITORES (TVs) LG,SAMSUNG,SONY ,HP,AOC SON Y SV E14 A 16 F LP- S- W I5- 2 4 50 ,4 GB ,6 4 0 GB ,14 " ,W C8,D79W,0,W 0 7HPSA M SU N G T V 55" 3 D LED 55ES8 0 0 0 GX3F.3HD 0 5,0 0 SON Y SV E14 A 15F LB I5- 2 4 50 ,4 GB ,6 4 0 GB ,14 " ,W C ,D W ,W 787HP 9 ,0 0 SON Y SV E14 117F LB I5- 2 4 50 ,4 GB ,6 4 0 GB ,14 " ,W C ,D W ,W 787HP 9 ,0 0 4 4 8 ,0 0 3 8 4 ,0 0 6 0 2 ,0 0 716 ,0 0 6 8 9 ,0 0 SA M SU N G I3 - 2 3 70 ,4 GB ,50 0 GB ,14 " ,W C ,D W ,D OS SA M SU N G B 8 15,2 GB ,50 0 GB ,14 " ,W C ,D W ,W 7HB HP g 4 - 2 2 10 A 6 - 4 4 0 0 ,6 GB ,750 GB ,14 " ,D W ,W C ,W 8 HP g 4 - 2 0 8 2 I5- 2 4 50 ,4 GB ,6 4 0 GB ,14 " ,D W ,W C ,W 7HP HP g 4 - 2 0 55 I5- 2 4 50 ,8 GB ,750 GB ,14 " ,D W ,W C ,LN X HP g 4 - 2 0 50 I3 - 2 3 50 ,6 GB ,6 4 0 GB ,14 " ,D W ,W C ,LN X HP g 4 - 13 57 A M D E2 - 18 0 0 ,2 GB ,50 0 GB ,14 " ,W C ,W 7HB 4 8 5,0 0 HP EB 8 570 w I7- 3 6 10 ,8 GB ,50 0 GB ,15.6 " ,D W ,W C ,W 7PR 1.8 3 0 ,0 0 HP d v6 - 72 8 0 I7- 3 6 3 0 ,8 GB ,1T B ,15.6 " ,V D 2 GB ,D W ,W 81.3 2 9 ,0 0 T V B OX Z OGIS R A HD 19 2 0 ST A N D A LON E W / R C 4 5,0 0 TARJETA DE TV PCI , TV BOX T A R JET A D E R ED D LIN K D W A - 56 6 W IR . PC I- EX P4 1,0 0 T A R JET A D E R ED D LIN K D W A - 12 5 U SB W IR T A R JET A D E R ED D LIN K D W A - 52 5 PC I W IR TARJETA DE RED CNET,ADV,DLINK F LA SH M EM OR Y KIN GST ON D T 10 1G2 8 GB U SB F LA SH M EM OR Y HP v16 5W 8 GB U SB F LA SH M EM OR Y HP v16 5W 4 GB U SB F LA SH M EM OR Y HP v16 5W 16 GB U SB F LA SH M EM OR Y A D A T A U V 10 0 8 GB PIN K- PU R F LA SH M EM OR Y A D A T A U V 10 0 8 GB B LA C K Sucursal Sur Quito PBX: 265 1977 / 261 5364 265 3056 / 261 3063 4 4 ,0 0 3 1,0 0 9 8 ,0 0 3 8 ,0 0 2 2 ,0 0 19 ,9 0 3 8 ,0 0 55,0 0 2 4 5,0 0 110 ,0 0 10 1,0 0 76 ,0 0 6 9 ,0 0 55,0 0 8 2 ,0 0 V ID EO Z OGIS GT - 4 4 0 1GB PC I- EX P. V ID EO Z OGIS GT - 6 10 2 GB PC I- EX P. 3 4 ,0 0 58 ,0 0 3 6 ,0 0 V ID EO Z OGIS GT - 2 10 1GB PC I- EX P. V ID EO Z OGIS A X - 6 4 50 2 GB PC I- EX P. V ID EO Z OGIS 6 2 0 0 A 2 56 KB A GP. TARJETA DE VIDEO ZOGIS D V D - R W R IT ER SA M SU N G SH- 2 2 4 B B 2 2 X SA T A IN T .16 ,50 8 ,8 0 F LA SH M EM OR Y A D A T A S10 2 8 GB GR A Y F LA SH M EM OR Y A D A T A U V 10 0 4 GB B LA C K - PIN K4 ,6 0 D V D - R W R IT ER SA M SU N G SE- 2 0 8 A B SLIM 8 X U SB 2 9 ,0 0 8 ,8 0 F LA SH M EM OR Y A D A T A 8 GB S8 0 5 GR A Y 3 8 ,0 0 Sucursal Colón Quito PBX: 256 3036 / 056 / 058 / 074 222 3036 FA X: 256 2488 SO- D IM M KIN GST ON 8 GB PC - 13 3 3 Principal Quito PBX: 222 8218 / 250 2209 FA X: 2540 746 11,9 0 2 1,0 0 4 0 ,3 0 SO- D IM M KIN GST ON 2 GB PC - 13 3 3 SO- D IM M KIN GST ON 4 GB PC - 13 3 3 3 ,70 6 ,2 0 M IC R O- SD A D A T A 3 2 GB W HIT H A D A PT . M IC R O- SD A D A T A 8 GB W HIT H A D A PT . M IC R O- SD A D A T A 16 GB W HIT H A D A PT . M IC R O- SD A D A T A 4 GB W HIT H A D A PT . 13 ,8 0 12 ,9 0 2 3 ,2 0 M IC R O- SD A D A T A 16 GB S10 W HIT H A D A PT . 11,9 0 2 1,3 0 4 0 ,0 0 D IM M KIN GST ON 8 GB PC - 13 3 3 3 4 ,0 0 D IM M A D A T A 8 GB PC - 13 3 3 D IM M KIN GST ON 2 GB PC - 13 3 3 18 ,0 0 D IM M A D A T A 4 GB PC - 13 3 3 D IM M KIN GST ON 4 GB PC - 13 3 3 2 4 ,0 0 2 6 ,0 0 D IM M A D A T A 1GB PC - 4 0 0 D IM M A D A T A 2 GB PC - 8 0 0 MEMORIA ADATA, KINGSTON, ADATA 75,0 0 3 4 5,0 0 IN T EL C OR E I5- 3 770 3 .4 GHZ 6 M B 6 6 ,0 0 2 2 1,0 0 IN T EL C OR E I5- 3 4 70 3 .2 GHZ 6 M B IN T EL G8 50 2 .9 GHZ 2 M B 2 12 ,0 0 IN T EL C OR E I5- 3 4 50 3 .1GHZ 6 M B IN T EL G6 4 5 2 .9 GHZ 3 M B 2 0 0 ,0 0 IN T EL C OR E I5- 3 3 3 0 3 .2 GHZ 6 M B HP, KINGSTON, ADATA C A M A R A SON Y HA N D Y C A M HD R - C X 19 0 B C +H50 0 GB 4 8+EST 1,0 0 .+MFLASH EM 4 GB MEMORY 13 4 ,0 0 4 8 ,0 0 12 9 ,0 0 4 4 8 ,0 0 T A B LET C OB Y M ID - 9 74 0 - 8 W IF I,9 .7" ,8 GB ,A N D 2- 40.0 4 ,0 0 T A B LET A OC M W 0 711- E W IF I,7" ,4 GB ,A N D - 4 .0 IPA D 3 A PPLE M D 3 6 9 EA 16 GB W i- F i +4 G W hit e 72 1,0 0 IN T EL C OR E I3 - 3 2 2 0 3 .3 GHZ LGA 1155 IN T EL G550 2 .6 GHZ 2 M B 19 ,4 0 19 ,3 0 7,3 0 5,10 5,3 0 14 ,50 53 ,0 0 6 ,0 0 IPA D 3 A PPLE M C 70 7EA 6 4 GB W i- F i W hit e o B lack 78 4 ,0 0 C A M A R A SON Y HA N D Y C A M D C R - - C X 19 0 B C PJ5B C50 +H50 8 ,0 0 GBT+M A BEM LET4 GB T OSHIB A A T 3 0 5- SP0 2 0 1L 2 GB ,6 4 GB D V D PLA Y ER SA M SU N G D 3 6 0 K KA R A OKE 5,10 8 ,10 9 2 6 ,0 0 HP d m1- 4 19 0 A M D E3 0 0 ,4 GB ,50 0 GB ,11.6 " ,W C ,W 7HB 3 4 6 ,0 0 HP 6 4 70 b I5- 3 2 10 ,4 GB ,50 0 GB ,14 " ,D W ,W C ,W 7PR 3 59 ,0 0 8 3 9 ,0 0 HP 4 4 4 0 s I5- 3 2 10 ,4 GB ,50 0 GB ,14 " ,D W ,W C ,W 7PR HP 4 55 A M D E1- 12 0 0 ,2 GB ,50 0 GB ,15.6 " ,W C ,D W ,LN X 8 14 ,0 0 76 4 ,0 0 4 71,0 0 HP 4 4 4 0 s I3 - 3 110 ,4 GB ,50 0 GB ,14 " ,D W ,W C ,W 7PR HP 14 - B 0 6 4 I5- 3 2 17,4 GB ,750 GB ,14 " ,W C ,W 8 HP 10 0 0 - 12 10 B 8 2 0 ,2 GB ,50 0 B ,14 " ,D W ,W C ,W 8 A C ER M IN I- N OT E A SPIR E ON E N 2 6 0 0 ,2 GB ,50 0 GB ,10 2.1" 6 4,B,0L0 A C ER M IN I- N OT E A SPIR E ON E N 2 6 0 0 ,2 GB ,50 0 GB ,10 2.1" 6 4,B,0K0 NOTEBOOK HP, SONY , TOSHIBA, SAMSUNG IPA D 2 A PPLE M D 773 EA 16 GB W i- F i +3 G W hit e o 6 r14B,0lack 0 SON Y SV S13 115F LB I5- 3 2 10 ,4 GB ,6 4 0 GB ,13 .3 " ,W C ,D W9,W 4 97HP ,0 0 PROCESADORES AMD, INTEL C A M A R A SON Y D SC - W X 1 SC - B C + EST U C HE+M EM3. 14 4 GB ,0 0 C A M A R A SON Y D SC - W 10 0 SC - B C + EST U C HE+M EM 3 14 . 4,0GB 0 C A M A R A SON Y A LF A N EX 5K B Q- SQ IN T EL D H6 7B L LGA 1155,C OR E- I7,D D R 3 ,V ,S,R B U LK 9 9 ,0 0 9 ,8 0 56 ,0 0 IN T EL D H6 1HO LGA 1155,C OR E- I7,D D R 3 ,V ,S,R B U LK IN T EL D H77EB LGA 1155,D D R 3 ,V ID ,SON ,LA N C A M A R A GEN IU S V ID . C ON F . I- LOOK 3 0 0 TABLET APPLE, AOC, SAMSUNG, HP C A M A R A GEN IU S V ID . C ON F . F A C E C A M 3 2 0 X GS 10 ,6 0 GEN IU S SW - J2 .1 50 0 U S 12 0 V 6 0 ,0 0 154 ,11 GEN IU S SP- S110 B LA C K GEN IU S SP- U 115 B LU E- W HIT E- R ED U SB IN T EL D H6 1HO LGA 1155,C OR E- I7,D D R 3 ,V ,S,R C A M A R A GEN IU S D IGIT A L G- SHOT HD - 58 5 GEN IU S SP- I6 0 0 ID F OR IPA D GEN IU S SP- J3 3 0 ELEGA N T 2 .0 C H M U L. GEN IU S SW - S 2 .1 3 55 3 PIEC E U S 12 0 V 71,0 0 8 8 ,0 0 3 8 4 ,0 0 157,0 0 PARLANTES GENIUS T EC L. GEN IU S SLIM ST A R 110 U SB B LA C K SP C A M A R A GEN IU S V ID . C ON F . F A C E C A M 3 11 B LIST ER 10 ,2 0 8 7,0 0 IN T EL D B 8 75EN B LGA 1155,D D R 3 ,V ID ,SON ,LA N IN T EL D H6 1C R LGA 1155,C OR E- I7,D D R 3 ,V ,S,R C A M A R A D LIN K D C S- 9 3 0 A C A M A R A D LIN K D C S- 7110 C A M A R A D LIN K D C S- 2 13 0 A T EC L. GEN IU S KB - 110 X PS2 B LA C K SP 5,50 5,0 0 3 ,50 3 ,10 3 ,9 0 5,3 0 5,3 0 T EC L. GEN IU S KM S- 110 U SB + M OU OPT +PA R U 110 15,3 0 T EC L. GEN IU S KB - 2 2 0 E M U LT . U SB B LA C K SP IN T EL D H6 1C R LGA 1155,C OR E- I7,D D R 3 ,V ,S,R B U LK 6 7,0 0 6 0 ,50 6 9 ,6 0 GIGA B Y T E H6 1M - S2 PV C OR E I7,S1155,D D R 3 ,V ,S,R 4 8 ,50 GIGA B Y T E H6 1M - S1PV C OR E I7,S1155,D D R 3 ,V ,S,R IN T EL D 2 50 0 HN + A T OM D 2 50 0 D D R 3 ,V ,S,R 72 ,0 0 GIGA B Y T E E3 50 N A M D - E3 50 ,D D R 3 .V ,S,R U SB 4 13 6 ,0 0 B LU E- R A Y R - W R IT ER LG B P4 0 N S2 0 9 X 3 D SU P. EX 12T4. ,0 0 72 ,2 0 GIGA B Y T E B 75M - D 3 H C OR E I7,S1155,D D R 3 ,V ,S,R C A M A R A D LIN K D C S- 2 10 3 A CAMARAS,DVDW s,CDRW s,PHOTO GIGA B Y T E A 55M D S2 A M D A &E2 ,D D R 3 ,V ,S,R ,U SB 4 59 ,0 0 ND 8 8 ,0 0 SEA GA T E 50 0 GB SA T A 72 0 0 R PM T OSHIB A 1T B SA T A 54 0 0 R PM N OT . T OSHIB A 50 0 GB SA T A 54 0 0 R PM N OT . 78 ,0 0 B IOST A R G4 1D 3 G + C ELER ON .D 3 4 7 GIGA B Y T E 78 LM PHE- A T HL,A M D 3 +,D D R 3 ,S,R ,U SB 4 51,70 T EC L. GEN IU S KB - 0 6 PS2 B LA C K SP 158 ,0 0 B IOST A R N M 70 I- 8 4 7M ini A T X C el- 8 4 7,D D R 3 ,SON ,V ID 76,R ,0ED 0 M OU SE GEN IU S X SC R OLL U SB B LA C K SEA GA T E 1T B SA T A 72 0 0 R PM M OD : ST 3 10 0 0 52 4 A 76 ,0 0 T EC L. GEN IU S KB - 0 6 U SB B LA C K SP SEA GA T E 1T B SA T A 72 0 0 R PM M OD : ST 10 0 0 D M 0 0 38 2 ,0 0 SEA GA T E 3 T B SA T A 72 0 0 R PM 70 ,0 0 M OU SE GEN IU S X SC R OLL PS2 B LA C K M OU SE GEN IU S N ET SC R OLL 3 10 X U SB B LA C K M OU SE GEN IU S M IC R O T R A V . U SB SILV ER M OU SE GEN IU S M IC R O T R A V . U SB R U B Y 5,10 M OU SE GEN IU S M IC R O T R A V . 9 0 0 U SB B LA C K 11,4 0 M OU SE GEN IU S M IC R O T R A V . U SB B LA C K B IOST A R B 75M U 3 + LGA 1155,C OR E- I7,D D R 3 ,V ,S,R 115,0 0 6 9 ,0 0 6 4 ,0 0 9 9 ,0 0 10 1,0 0 TECLADOS, MOUSE MOTHER BOARDS INTEL, BIOSTAR, ECS, MSI C A SE SEN T EY W OLF GS- 6 6 0 0 B LA C K N O PS A D A T A 50 0 GB HD 710 2 .5" U SB 3 .0 B LA C K - B LU E C A SE SEN T EY OPT IM U S GS- 6 50 0 B B LA C K PS EPR 50 174 0W ,0 0 3 9 ,50 A D A T A 1T B HV 6 10 2 .5" U SB 3 .0 B K- B L, W H- B L A D A T A 1T B HV 710 2 .5" U SB 3 .0 B K- B L C A SE QU A SA D SX C - 3 0 56 A C OM B O T EC L, M OU , PA R4 1,0 0 DISCOS DUROS SEAGATE, W D, ADATA CASE QUASAD, SENTEY , AGILER, ZOGIS LISTA DISTRIBUIDOR Anexo C Cotizaciones Sitio web: www.tecnomega.com Anexo C Cotizaciones Sitio web: www.compu-tron.net Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Sitio web: www.novicompu.com Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Sitios web: pinsoft.ec gruposie7e.com www.compugamer.com.ec www.mercadolibre.com.ec www.tecnit.com.ec Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Anexo C Cotizaciones Sitio web: http://ec.traetelo.com/matrox-m9140-e512laf-the-matrox-m9140-lp-pcie-x16-quadhead-graphics-card-offers-512mb-of-memory-and-p-196436.html Anexo C Cotizaciones Sitio web: www.videowallsolutions.net/video-wall-controller-hardware.html?limit=10 Anexo C Cotizaciones 110 Sitio web: www.9xmedia.com/new/products/servers.php 110 El hardware adicional al que se hace referencia tan solo supone los extras necesarios para el funcionamiento de la tarjeta gráfica (GPU), y no para el funcionamiento completo del Wall View. Anexo C Cotizaciones Anexo C Cotizaciones Sitio web: www.amazon.com/Display-MultiSync-X462UN-MonitorVUKUNET/dp/B00BMQ6KDM/ref=sr_1_1?ie=UTF8&qid=1362348311&sr=81&keywords=multisync+x… Anexo C Cotizaciones Sitio web: www.compsource.com/ttechnote.asp?part_no=100D28B22&vid=2445&src=PG Anexo C Cotizaciones Sitio web: latam.preciomania.com/search_getprod.php/masterid=41284237/search=ergotron+lx+w all/no_sps=1#tab=details Anexo C Cotizaciones Sitio web: www.ekrano.es/plasmawall.html Anexo C Cotizaciones Sitio web: www.sonicolor.es/productos/videoproyectores/videowall/videowall.html Anexo C Cotizaciones Sitio web: www.necdisplay.com/p/product-bundles/x462un-tmx4d Sitio web: www.bhphotovideo.com/c/product/820855-REG/NEC_X551UN_TMX4D_55_2_x_2.html Instalación Manual de Controladores de Tarjetas Gráficas Anexo D GeForce en Ubuntu Fuente: www.ubuntu-guia.com/2010/04/instalar-driver-de-tarjetas-nvidia-en.html Advertencia: Al instalar el controlador manualmente, cada vez que se actualice el Kernel, se debe volver a instalar el controlador de nuevo, manualmente. 1º Descargar el driver propietario de la página oficial de NVIDIA: Abrir el navegador e ingresar a la página oficial de descarga de controladores de NVIDIA: http://www.nvidia.es/Download/index.aspx?lang=es Aparecerá un cuadro de diálogo donde buscar la tarjeta específica. En este caso sería una "GeForce 210". Se lo haría de la siguiente forma: Tipo de producto -> GeForce Serie del producto -> GeForce 2 Series Sistema Operativo -> Linux 64-bit Idioma -> Español (Latino América) Antes de descargarlo dar click en la pestaña "PRODUCTOS SOPORTADOS" y asegurarse que esté la tarjeta indicada (de cometer algún error con el driver descargado, podrían darse muchos conflictos y problemas). Luego se debe dar click en "Descargar ahora". Saldrá un diálogo de aceptación de la licencia, click en "aceptar y descargar". IMPORTANTE: · · Guardar el paquete descargado en la carpeta personal para que su instalación sea más fácil y con menos comandos. El nombre del archivo en este caso es: "NVIDIA-Linux-x86_64-310.19.run" y para facilitar su instalación a la hora de escribir los comandos, renombrarlo como "NVIDIA.run". 2º Dar permisos de ejecución al paquete descargado: Digitar en una terminal: sudo chmod 777 -R NVIDIA.run Instalación Manual de Controladores de Tarjetas Gráficas Anexo D GeForce en Ubuntu 3º Instalar las herramientas y paquetes necesarios: Será necesario instalar dos paquetes para que el script compile el módulo, ejecutando en una terminal el siguiente comando: sudo apt-get install build-essential linux-headers-$(uname -r) 4º Desinstalar cualquier versión previa del controlador: Es necesario desinstalar todo el software previo relacionado con la tarjeta gráfica. En una terminal ejecutar: sudo sh NVIDIA.run --uninstall Desinstalar el driver privativo nvidia con: sudo apt-get remove --purge sudo apt-get remove --purge nvidia* Desinstalar el driver libre nouveau con: xserver-xorg-video-nouveau Añadir nouveau a la blacklist para que en el arranque del sistema no se monte y permita arrancar luego sin él. Para ello se edita el archivo blacklist.conf con: sudo gedit /etc/modprobe.d/blacklist.conf Añadir al final del archivo las siguientes lineas: blacklist blacklist blacklist blacklist blacklist vga16fb nouveau rivafb nvidiafb rivatv Guardar y cerrar el archivo. 5º Salir del entorno gráfico y reiniciar el sistema: Para Ubuntu 11.10, que utiliza lightdm, ejecutar el siguiente comando: sudo service lightdm stop Para Ubuntu 11.04 y anteriores, que utiliza gdm, ejecutar el siguiente comando: sudo service gdm stop Instalación Manual de Controladores de Tarjetas Gráficas Anexo D GeForce en Ubuntu Quedará la pantalla en negro, por lo que se debe pulsar la combinación de teclas CTRL+ALT+F1 para accedemos a la terminal. Saldrá en la última fila: "usuario-desktop login" para ingresar el nombre de usuario. Al pulsar ENTER pedirá la contraseña, escribirla y pulsar ENTER nuevamente. Reiniciar el sistema con: sudo reboot now 6º Instalación del controlador: · · En Ubuntu 10.04 y anteriores: Arranca el sistema y parecerá el mensaje "Ubuntu está funcionando en modo de resolución baja", pulsar "Aceptar". Saldrán varias opciones de arranque, seleccionar: "Iniciar una sesión en modo consola", esto hará que arranque en modo texto sin la gráfica (X11). En Ubuntu 10.10 y posteriores: Arranca directamente en modo consola sin gráfica (X11). En ambos casos, realizar el login nuevamente, como antes. Instalar el driver con: sudo sh NVIDIA.run Aparecerá la pantalla de instalación de NVIDIA dando varias opciones a elegir. Normalmente se da "SI, acepto" a todo. Para desplazarse por las opciones de “aceptar” “si” o “no”, usar la tecla TAB. Reiniciar el entorno gráfico con: sudo service gdm start sudo service lightdm start Ubuntu 10.04 y anteriores Ubuntu 10.10 y posteriores IMPORTANTE: · Durante el proceso de instalación se crea el archivo “/etc/X11/xorg.conf”, respaldando cualquier versión anterior del mismo. Finalmente instalar el paquete Nvidia-Settings (herramienta para la configuración de la tarjeta gráfica) con: sudo apt-get install nvidia-settings