Sistema web semi-automático para anotação colaborativa de média
Transcrição
Sistema web semi-automático para anotação colaborativa de média
Faculdade de Engenharia da Universidade do Porto Sistema web semi-automático para anotação colaborativa de média H.264 e Flash Vídeo Luis Alberto de Sousa Rangel das Neves VERSÃO PROVISÓRIA Dissertação realizada no âmbito do Mestrado Integrado em Engenharia Electrotécnica e de Computadores Major Telecomunicações Orientador: Prof. Dr. Jaime dos Santos Cardoso Co-orientador: Eng.º Vítor M. Coutinho Soares Janeiro de 2010 © Luis Alberto de Sousa Rangel das Neves 2010 ii Sistema web semi-automático para anotação colaborativa de média H.264 e Flash Vídeo Luis Alberto de Sousa Rangel das Neves Tese de Dissertação realizada no âmbito do Mestrado Integrado em Engenharia Electrotécnica e Computadores Aprovado em provas públicas pelo Júri: Presidente: Prof. Dr. Artur Pimenta Alves Arguente: Prof. Doutor José Torres Vogal: Prof. Doutor Jaime Cardoso 30 de Janeiro de 2010 iii Resumo O avanço tecnológico ocorrido nas últimas décadas, protagonizados pelo aumento da capacidade de armazenamento de dados, pelo aumento exponencial da velocidade e capacidade de processamento dos computadores (aliados à subvalorização e por conseguinte à sua massificação) e à proliferação das redes de dados de alto débito, originou um gigantesco fluxo de produção e distribuição de conteúdos audiovisuais. Isto despoletou um grande problema, quer para a indústria dos conteúdos, quer para o utilizador comum, surgindo várias questões: como organizar uma vasta colecção de vídeos ou musicas, ou ainda, como encontrar uma determinada música ou vídeo? A resposta torna-se simples, sendo necessário efectuar uma pesquisa manual ou que utilize técnicas bastante rudimentares o que a torna relativamente lenta e morosa. Mas com os recentes desenvolvimentos tecnológicos e com a interligação de várias áreas de investigação, anteriormente dispersas, surgem condições reais para o aparecimento de soluções tecnológicas que auxiliam no tratamento inteligente de informação, permitindo às instituições e aos utilizadores aumentar a sua produtividade, e por conseguinte evoluir a Web para um contexto de Web semântica. O objectivo desta dissertação é a elaboração de uma aplicação informática capaz de realizar a anotação colaborativa, como forma de permitir a catalogação e pesquisa de conteúdos audiovisuais. O sistema foi projectado para aceitar diferentes tipos de dados, vídeos codificados em Flash Vídeo e na norma H.264. Para acelerar o processo de anotação, foi incorporado um módulo de pré-anotação automática, usufruindo da capacidade tecnológica da empresa ao nível dos algoritmos de reconhecimento automático. Para atingir os objectivos propostos foi desenvolvido um software com uma arquitectura modular, com alta capacidade de integração e consistência para permitir a organização de colecções públicas ou privadas de dados audiovisuais, de forma inteligente e baseada nos conteúdos semânticos. iv Abstract The boost of the technology over the last decade led to several technological advances such as the increase of the storage capacity of digital devices, the outstanding development of the microprocessors industry and the overwhelming market of high-speed and low cost networks, resulted in a massive flow of production and distribution of audiovisual content. This triggered a major problem, either for the content industry or the home user: how to organize a large collection of videos or music, or even how to find a particular song or video? The answer is simple. A plain search or some other that uses some rough techniques which make it relatively slow and time consuming. Recent developments in several research areas that were previously scattered and now merged, brought hard evidence for the arise of technological solutions that could assist the task of processing information in a intelligent way, allowing the institutions and users to increase productivity and therefore evolve to a semantic context the web. The aim of this thesis is to develop a web application capable of performing collaborative annotation, in order to allow the cataloging and research of media content. The system is designed to accept different types of data, video encoded in Flash Video and H.264 standard. To speed up the annotation process, we have incorporated a pre-automatic annotation module, taking advantage of the technological know-how of the company in terms of algorithms for automatic recognition. To achieve the goal, the software was developed with a modular architecture, highly consistency, embeddable and enables the organization of public and private collections of audiovisual data by an intelligently and with semantic content way. v Agradecimentos Em primeiro lugar, gostaria de agradecer ao Prof. Dr. Jaime dos Santos Cardoso, orientador da FEUP e ao Eng. Vítor Soares, responsável pelo acompanhamento na empresa, por todo o apoio dado ao longo da dissertação. Gostaria também de agradecer à ClusterMedia Labs, em particular ao Eng. Tiago Araújo, que forneceu todo os esclarecimentos necessários ao desenvolvimento do sistema de anotação e da elaboração da presente dissertação. Finalmente, agradeço à minha família e amigos, em especial à minha namorada Eduarda, pelo apoio e paciência que demonstraram durante a realização desta dissertação. vi Índice Resumo ......................................................................................................................................... iv Abstract ..........................................................................................................................................v Agradecimentos ............................................................................................................................ vi Índice ............................................................................................................................................ vii Lista de Figuras ............................................................................................................................. xi Abreviaturas ................................................................................................................................ xiii Capítulo 1 ...................................................................................................................................... 1 Introdução ..................................................................................................................................... 1 1.1. Apresentação da ClusterMedia Labs ................................................................................. 1 1.2. Enquadramento do projecto ............................................................................................... 2 1.3. Objectivos ........................................................................................................................... 3 1.4. Organização e temas abordados ....................................................................................... 4 1.5. Contribuições relevantes .................................................................................................... 4 Capítulo 2 ...................................................................................................................................... 6 Estado da Arte ............................................................................................................................... 6 2.1. Revisão Científica .............................................................................................................. 6 2.1.1. Vídeo ............................................................................................................................... 6 2.1.2. Anotação ......................................................................................................................... 7 2.1.3. Problema ......................................................................................................................... 8 2.1.4. Solução ........................................................................................................................... 8 2.1.5. Áudio ............................................................................................................................... 9 2.1.5.1. Reconhecimento da fala ........................................................................................ 10 vii 2.1.5.2. Música .................................................................................................................... 11 2.1.6. Imagem ......................................................................................................................... 13 2.2. Revisão tecnológica ......................................................................................................... 17 2.2.1. Soluções existentes .................................................................................................. 17 2.2.1.1. Tunatic .................................................................................................................... 18 2.2.1.2. Midomi .................................................................................................................... 18 2.2.1.3. iChords ................................................................................................................... 18 2.2.1.4. Mojiti ....................................................................................................................... 19 2.2.1.5. IBM MPEG-7 Annotation Tool ................................................................................ 19 2.2.1.6. SPIDIR ................................................................................................................... 20 2.2.1.7. VideoCittà – Sistema de Armazenamento, Anotação e Acesso a Vídeos............. 21 2.2.1.8. Ricoh MovieTool..................................................................................................... 21 2.2.1.9. VIDETO Video Description Tool............................................................................. 23 2.2.1.10. Microsoft Research Annotation System (MRAS) ................................................. 24 2.2.1.11. FilmEd Project ...................................................................................................... 25 2.2.1.12. Sony Sound Forge ® ............................................................................................ 26 2.2.1.13. LabelMe ................................................................................................................ 27 2.2.2. Linguagens de programação ........................................................................................ 28 2.2.2.1. ActionScript 3 ......................................................................................................... 28 2.2.2.2. C++ ......................................................................................................................... 28 2.2.2.3. Ruby ....................................................................................................................... 28 2.2.3. Software para desenvolvimento de aplicações multimédia .......................................... 29 2.2.3.1 Adobe Flash ............................................................................................................ 29 2.2.3.2. Adobe Flex ............................................................................................................. 30 2.2.3.3. Adobe Air ................................................................................................................ 30 2.2.3.4. Ruby on Rails ......................................................................................................... 31 2.2.3.5. Microsoft Silverlight ................................................................................................ 31 2.2.4. Ambientes de desenvolvimento integrado .................................................................... 31 2.2.4.1. Microsoft Visual Studio ........................................................................................... 31 2.2.5. Tecnologias para EAI (Enterprise Application Integration) ........................................... 32 viii 2.2.5.1. Sockets Assíncronas .............................................................................................. 32 2.2.6. Tecnologias multimédia e broadcasting ........................................................................ 34 2.2.6.1. Red5 ....................................................................................................................... 34 2.2.6.2. RTMP ..................................................................................................................... 35 2.2.6.3. Ffmpeg ................................................................................................................... 35 2.2.6.4. FLV – Flash Video .................................................................................................. 35 2.2.7. Sistema de gestão de base de dados ........................................................................... 36 2.2.8. Sistema de gestão de versões ...................................................................................... 36 2.2.8.1. Subversion (SVN)................................................................................................... 36 2.2.8.2. Tortoise SVN .......................................................................................................... 37 2.2.9. Tecnologias de encriptação de dados .......................................................................... 37 2.2.9.1. RSA ........................................................................................................................ 37 2.2.9.2. MD5 ........................................................................................................................ 37 2.2.10. Formato de informação enviada entre aplicações ...................................................... 38 2.2.10.1. CSV (Comma Separated Values) ........................................................................ 38 2.2.10.2. XML (eXtensible Markup Language) ................................................................... 38 2.2.10.3. Wave .................................................................................................................... 38 Capítulo 3 .................................................................................................................................... 40 Solução Proposta ........................................................................................................................ 40 3.1. Arquitectura ...................................................................................................................... 40 3.2. Cliente .............................................................................................................................. 41 3.3. Casos de utilização .......................................................................................................... 44 3.4. Back-end .......................................................................................................................... 45 Capítulo 4 .................................................................................................................................... 47 Implementação ............................................................................................................................ 47 4.1. Arquitectura Geral ............................................................................................................ 48 4.2. Base de dados ................................................................................................................. 49 4.3. Segurança e Autenticação ............................................................................................... 50 4.4. Cliente .............................................................................................................................. 51 4.4.1. Espectrograma .......................................................................................................... 53 ix 4.4.2. Cálculo computacional .............................................................................................. 54 4.4.3. Processo de anotação .............................................................................................. 55 4.5. Servidor de sockets .......................................................................................................... 57 4.6. Protocolo de comunicação ............................................................................................... 58 4.7. Testes realizados ............................................................................................................. 59 Capítulo 5 .................................................................................................................................... 62 Conclusões .................................................................................................................................. 62 5.1. Avaliação dos resultados obtidos..................................................................................... 62 5.2. Conclusões sobre a dissertação ...................................................................................... 62 5.3. Perspectivas de trabalho futuro ....................................................................................... 63 Bibliografia ................................................................................................................................... 64 x Lista de Figuras Figura 1 - Logótipo da ClusterMedia Labs .................................................................................... 1 Figura 2 - Diagrama simplificado do MIR .................................................................................... 13 Figura 3 - Diagrama correlacional da visão computacional com outros campos ....................... 16 Figura 4 - Captura de ecrã do VideoAnnEx ................................................................................ 19 Figura 5 - Selecção de regiões ................................................................................................... 20 Figura 6 – Diagrama do sistema SPIDIR .................................................................................... 21 Figura 7 - Captura de ecrã do Ricoh MovieTool ......................................................................... 22 Figura 8 - XML-Schema do MPEG-7 .......................................................................................... 23 Figura 9 - Captura de ecrã do Videto .......................................................................................... 24 Figura 10 - Vista geral do sistema .............................................................................................. 25 Figura 11 - Captura de ecrã do MRAS........................................................................................ 25 Figura 12 - Captura de ecrã do Vannotea................................................................................... 26 Figura 13 - Captura de ecrã do Sound Forge ............................................................................. 27 Figura 14 - Captura de ecrã do LabelMe .................................................................................... 27 Figura 15 - Diagrama de um serviço de sockets ........................................................................ 34 Figura 16 - Formato do ficheiro Wave......................................................................................... 39 Figura 17 - Arquitectura proposta para o Sistema de Anotação ................................................. 41 Figura 18 - Captura de ecrã da aplicação em funcionamento .................................................... 42 Figura 20 - Pormenor da lista das regiões anotadas .................................................................. 43 Figura 19 - Pormenor do menu de opções ................................................................................. 43 Figura 21 - Diagrama dos Casos de Utilização .......................................................................... 44 Figura 22 - Diagrama da Arquitectura geral do sistema ............................................................. 48 Figura 23 - Diagrama da base de dados..................................................................................... 49 Figura 24 - Captura de ecrã: Secção superior do cliente ........................................................... 51 Figura 25 - Captura de ecrã: Scroller .......................................................................................... 51 Figura 27 - Captura de ecrã: Janela de ampliação ..................................................................... 52 Figura 26 - Forma de onda do áudio........................................................................................... 52 Figura 28 - Captura de ecrã: Janela de anotação após ampliação ............................................ 53 xi Figura 29 - Captura de ecrã do espectrograma .......................................................................... 53 Figura 30 - Captura de ecrã: Desenho da região ....................................................................... 55 Figura 31 - Captura de ecrã: Menu de opções de anotação ...................................................... 56 Figura 32 - Captura de ecrã com duas regiões anotadas........................................................... 56 Figura 33 - Captura de ecrã: cliente com anotações manuais e automáticas ............................ 57 xii Abreviaturas API Application Programming Interface ASR Automatic Speech Recognition CSS Cascading Style Sheets CSV Comma Separated Values CVS Concurrent Version System HE-AAC High-Efficiency Advanced Audio Coding ICR Intelligent Character Recognition IDE Integrated Development Environment MD5 Message-Digest algorithm 5 MIR Music Information Retrieval OCR Optical Character Recognition OMR Optical Music Recognition RIA Rich Internet Applications RTMP Real Time Messaging Protocol SDK Software Development Kit SQL Structured Query Language SWF Shockwave Flash UML Unified Modeling Language XML Extensible Markup Language xiii Capítulo 1 Introdução Este capítulo contém uma breve apresentação da empresa onde foi desenvolvido o projecto. Posteriormente faz-se uma caracterização do projecto, nomeadamente o seu enquadramento, enunciando os objectivos, a motivação e contribuições relevantes. No final do capítulo é apresentado o modo como o presente documento se encontra organizado. 1.1. Apresentação da ClusterMedia Labs Figura 1 - Logótipo da ClusterMedia Labs A ClusterMedia Labs (1) é uma empresa sediada na Incubadora de Empresas da Universidade de Aveiro (2), que surge da combinação do trabalho de investigação dos seus fundadores com o estímulo do prémio atribuído em 2004 pela Agência de Inovação (3). O core da ClusterMedia Labs configura-se fundamentalmente no desenvolvimento de algoritmos de reconhecimento automático de audiovisuais, a partir da conjugação de duas grandes áreas científicas: processamento digital de sinais áudio e vídeo com enfoque na análise e inteligência artificial / Machine Learning. O carácter inovador da sua tecnologia permite taxas de precisão elevadas com baixos custos computacionais (tempo-real) e em vários contextos semânticos. 1 O seu principal produto, o LiveMeans, ainda em fase de testes, é uma plataforma que permite gerir arquivos e indexar automaticamente conteúdos multimédia. Os algoritmos implementados no LiveMeans conseguem distinguir pessoas, objectos, animais, diálogos ou géneros musicais. O sistema, que será disponibilizado em várias versões, pode ser ensinado durante a utilização nos diversos arquivos. Os seus principais clientes - alvo são os broadcasters, tais como, estações de rádio, canais de televisão, agências de informação / comunicação e operadores de telemóvel. 1.2. Enquadramento do projecto O avanço tecnológico operado nas últimas décadas, com elevada relevância para a indústria do hardware, nomeadamente o aumento exponencial da velocidade e capacidade de processamento dos computadores, o aumento da capacidade de armazenamento de dados, seja ao nível das memórias como ao nível dos discos rígidos, a massificação da produção e consequente abaixamento dos preços, levaram que o computador deixa-se de ser um aparelho de trabalho e se transformasse num dispositivo utilitário. Com a proliferação das redes de dados de alto débito a preços acessíveis aliado à massificação do computador e seus dispositivos periféricos, originou um grande fluxo de produção e distribuição de conteúdos audiovisuais. E com isso a Internet tornou-se um veículo de comunicação primordial para as massas e quando algumas empresas aventuravam-se pela indústria dos conteúdos multimédia surge o YouTube™. O YouTube™ é um website de partilha de vídeos online que rapidamente se tornou num dos websites mais visitados e comentados de todo o mundo. Anteriormente os websites de partilha de vídeos online não eram muito valorizados. Mas porque teve o YouTube™ tanto sucesso? O YouTube™ permite o alojamento e partilha de vídeos com uma qualidade aceitável, mas a sua grande característica é o óptimo desempenho do sistema, mesmo para utilizadores com computadores ultrapassados. Basicamente, o segredo deve-se ao YouTube™ utilizar o Adobe Flash. Mas qual a vantagem? Uma das grandes vantagens e uma das razões pelo sucesso do Adobe Flash deve-se ao facto de ser uma tecnologia presente em quase todos os sistemas. Quase todos os navegadores possuem incorporado o Flash Player, o que faz do Adobe Flash ter uma capacidade de expansão tremenda. Vários estudos efectuados apresentam que as pessoas para navegarem na Internet usam basicamente três navegadores, o Internet Explorer, o Mozilla Firefox e o Opera, isto para o sistema operativo da Microsoft, para o sistema operativo da Apple usam o Safari, e todos estes navegadores possuem o Flash Player incorporado, o que torna, todos os utilizadores destes navegadores, potenciais utilizadores de produtos desenvolvidos em Flash e isso reflectiu-se nos produtores de conteúdos multimédia! A Adobe, actual proprietária do Flash, desenvolveu um conjunto de aplicações destinas à web authoring que representam uma das melhores soluções para o desenvolvimento de conteúdos multimédia no mercado. 2 Outra grande vantagem do YouTube™ foi o uso do Flash Vídeo, que é o formato proprietário da Adobe para transmissão de vídeo através da Internet que possui uma óptima relação qualidade / compressão, mesmo com taxa de transferência de bits reduzida. Actualmente são inúmeros os websites que disponibilizam vídeos em Flash Vídeo, nomeadamente o YouTube™ , Google Vídeo, Reuters.com, Yahoo!Vídeo e também cadeias de televisão. Mas a sociedade da informação está sempre em evolução, actualmente a indústria dos conteúdos, os broadcasters, estão a apostar na televisão de alta definição e não é apenas destinada aos consumidores tradicionais. Os consumidores via web também são alvo e recentemente a Adobe incorporou no Flash Player, a norma H.264, que é norma padrão para a compressão e codificação de vídeo em alta definição. Portanto, com a capacidade de expansão do Flash Player, os produtores de conteúdos multimédia geram grandes quantidades de dados e por conseguinte grandes arquivos de dados, surgindo grandes problemas quando se deparam com a necessidade de realizar uma pesquisa ou fazer uma indexação dos conteúdos. O âmbito deste projecto é o desenvolvimento de um sistema web semi-automático para anotação colaborativa de média H.264 e Flash Vídeo. Um sistema web é um sistema online associado a um recurso web, normalmente será uma página na Internet. Com um sistema de anotação online, o utilizador pode adicionar, modificar ou remover informação de um vídeo através da página web sem modificar o próprio vídeo e com a vantagem de o poder realizar a partir de qualquer lugar. Para auxiliar o processo de anotação é desenvolvido um módulo de pré-processamento automático de vídeos capaz de detectar eventos significativos, como entrevistas, programas de música, mudanças de orador. 1.3. Objectivos Após os elementos apresentados no parágrafo anterior, pode-se então lançar os objectivos para este projecto: • Desenvolvimento de uma ferramenta online de anotação colaborativa de media H.264 e Flash Vídeo • Estudo e integração de um módulo de pré-processamento automático de anotação • Integração desta ferramenta no contexto mais alargado, num sistema de organização automática de vídeo com base no seu conteúdo semântico Resumindo, o principal objectivo é o desenvolvimento de uma ferramenta online de anotação de vídeo colaborativa. 3 1.4. Organização e temas abordados O presente documento é composto por cinco capítulos que descrevem detalhadamente o projecto desenvolvido. No presente capitulo, faz-se uma introdução ao projecto desenvolvido, referindo-se o seu enquadramento, objectivos e contribuições relevantes. No segundo capítulo, Estado da Arte, é apresentada uma revisão tecnológica e científica dos procedimentos utilizados e plataformas adoptadas nos sistemas de anotação colaborativa de vídeo. No terceiro capítulo, Solução Proposta, faz-se uma apresentação detalhada do sistema desenvolvido, nomeadamente, a arquitectura do sistema, a sua constituição e a sua operacionalidade. No quarto capítulo, Implementação, consiste na descrição detalhada dos subsistemas e da implementação como a arquitectura geral, a base de dados desenvolvida para o protótipo, sistema de segurança e autenticação, o servidor de sockets, o protocolo de comunicação, entre outros. No último capítulo, Conclusões, faz-se uma análise crítica ao projecto e apresenta-se conclusões sobre as contribuições resultantes do trabalho desenvolvido. Será também apresentada uma discussão sobre o trabalho futuro. 1.5. Contribuições relevantes O sistema desenvolvido no seio da ClusterMedia Labs originou as seguintes contribuições: • Ferramenta online de anotação colaborativa Esta ferramenta comporta várias vantagens, nomeadamente de estar disponível em qualquer lugar (online), não necessita de instalação, apenas requer ao anotador um computador com ligação à Internet e um browser com o Flash Player instalado. Resumindo, esta ferramenta é uma interface desenvolvida em Flash CS3, que ao ser acedida pelo utilizador, liga-se automaticamente ao back-end onde vai buscar os todos os dados necessários. Depois liga-se ao servidor de streaming que disponibiliza o vídeo, ficando o anotador operacional. No final, o front-end envia os dados relativos à anotação para o back-end e este actualiza a base de dados. • Módulo de pré-processamento automático de anotação Este módulo usa vários algoritmos para processamento automático de anotação, usando a imagem e fundamentalmente o áudio dos vídeos para detectar entrevistas, programas de 4 música, mudanças de orador, etc. O funcionamento deste módulo, processa-se da seguinte forma: quando um novo vídeo é adicionado à base de dados, este módulo é notificado e faz um request do vídeo. Após o seu processamento, as anotações automáticas são adicionadas à base de dados, especificamente na tabela das Regions. • Base de dados multimédia com “ground truth” A base de dados existente possui uma tabela de vídeos e uma tabela de Regions que vai ser preenchida pelo módulo de anotação automático, assim como, pelo anotador. Esta base de dados poderá ser utilizada de várias maneiras, por exemplo, associada a um motor de pesquisa, onde se poderá pesquisar por assunto, comentário ou resposta de uma determinada pessoa, ou pode ser usada em processos de Machine Learning. O projecto realizado poderá futuramente ser integrado com o sistema de organização automática de vídeo com base no seu conteúdo semântico. Dessa forma, podemos disponibilizar ao utilizador uma solução integrada, simples e de fácil acesso (online) de toda uma panóplia de conteúdos, sejam eles de carácter literário, científico ou artístico. 5 Capítulo 2 Estado da Arte Neste capítulo será abordado o problema mencionado no capitulo anterior, assim como, possíveis soluções para o mesmo. Na revisão científica será apresentado uma visão global do estado da arte dos anotadores de vídeo, com enfoque para algoritmos e técnicas vulgarmente adoptadas em sistemas desta natureza. Na revisão tecnológica será realizada uma breve descrição das soluções existentes no mercado e às plataformas adaptadas, assim como, às tecnologias utilizadas neste tipo de sistema. Posteriormente, faz-se uma descrição da arquitectura e funcionalidades do sistema. 2.1. Revisão Científica 2.1.1. Vídeo Vídeo é um termo que denomina a tecnologia de processamento de sinais electrónicos ou digitais para capturar, armazenar, transmitir ou apresentar imagens em movimento. Com o tempo, o vídeo ganhou uma grande abrangência, com a gravação de imagens em movimento, animação composta por fotos sequenciais (imagem animada) e principalmente diversas formas para se gravarem imagens em fitas. O vídeo digital prosperou numa relação directa com a evolução informática, pois as limitações computacionais possuíam uma influência directa sobre a indústria multimédia, como por exemplo, o custo elevado, a disponibilidade limitada, a velocidade de processamento lenta, a memória interna reduzida e a incapacidade em manipular um grande volume de dados. Na última década, a evolução tecnológica operada na indústria do hardware aliada ao aparecimento dos acessos em banda larga, contribuiu para a globalização da Era da informação. A Era da informação pode traduzir-se pela utilização massiva da Web, da 6 proliferação de websites de conteúdo multimédia, assim como pela produção exponencial de informação audiovisual. Resultantes desta “revolução multimédia” surgiram vários problemas, dos quais pode-se salientar a dificuldade no acesso, tratamento e organização dessa enorme quantidade de informação dispersa. Um dos problemas mais complexos é modelizar o vídeo, para assim permitir uma indexação baseada no seu conteúdo e permitir aos utilizadores uma interface de acesso para pesquisa, consulta e navegação. Essas informações podem ser extraídas a partir de características visuais (cor, intensidade, movimento), do áudio associado ao vídeo, ou ainda da semântica do seu conteúdo representado sob a forma de anotações textuais. Portanto, um vídeo é um arquivo multimédia de carácter dinâmico, com grande riqueza de conteúdos e capaz de suportar vários formatos. Isso desperta muito interesse às comunidades de sistemas de informação, que assim lança desafios na investigação e desenvolvimento de soluções automatizadas de indexação e pesquisa de conteúdos audiovisuais. 2.1.2. Anotação A anotação é o acto de adicionar comentários a uma determinada secção de um documento. Esta actividade surgiu com o aparecimento da imprensa escrita e actualmente é alvo de estudo para documentos electrónicos sendo utilizada em várias ciências, torna-se uma ferramenta importante. Cada anotação é uma descrição de elementos que são codificados em palavras-chave e armazenada em estruturas de dados, para que sejam posteriormente utilizadas em inúmeras aplicações. Para vídeo, a anotação é habitualmente uma forma de descrever o conteúdo para posterior reutilização, permite adicionar informação a documentos existentes e servir múltiplos propósitos: salientar as partes mais relevantes ou adicionar notas quando o documento é apresentado, como por exemplo, numa aula ou conferência. Permite também reestruturar o documento de forma que seja relevante para um determinado domínio. Há assim duas funções principais dos mecanismos de anotação: 1) Descrição do conteúdo existente (metadados) 2) Adição de conteúdo por parte dos utilizadores A descrição de conteúdos, utilizando por exemplo a norma MPEG-7 que está relacionada com a descrição dos metadados (dados que descrevem a informação), é essencial para a sua 7 reutilização, pois permite caracterizar a informação de forma a saber-se como e onde pode ser utilizada. No entanto, convém realçar que o MPEG-7 apenas define um padrão para descrição da estrutura de um conteúdo multimédia, mas não a forma como estas descrições são geradas. Assim como as anotações em publicações impressas promovem a leitura activa, as anotações de conteúdo em vídeo promovem a visualização activa, facilitando a reflexão, a aprendizagem e a criação de versões personalizadas dos documentos. Portanto, com a massificação dos conteúdos audiovisuais, o volume de documentos a anotar aumentou exponencialmente, tornando a anotação manual uma tarefa impraticável, capaz de consumir imensos recursos, forçando o uso de algoritmos de tratamento inteligente de dados. Outro problema subjacente às anotações manuais é o facto de poderem ser imprecisas e incompletas, pois dependem da compreensão, estado de espírito ou cultura da pessoa que executa a anotação. A única vantagem das anotações manuais reside no facto de poderem adicionar mais conhecimento e semântica ao conteúdo do que as técnicas de análise computacional. 2.1.3. Problema Vários problemas se colocam à presente dissertação. Em primeiro, prende-se com o facto de identificar, incorporar e adaptar tecnologias de indexação automática de conteúdos para canais audiovisuais. Posteriormente, pretende-se criar uma ferramenta de anotação para ambiente Web que permita a anotação colaborativa, capaz de utilizar vídeos em alta definição (H.264). As anotações devem permitir a associação semântica às informações nos conteúdos multimédia, isto é, cumprir as normas de associação de metadados aos seus conteúdos. 2.1.4. Solução Será apresentado um conjunto de tecnologias capazes de reconhecer, catalogar e segmentar de forma inteligente e autónoma este tipo de conteúdos. Este tipo de tecnologias, após análise qualitativa, poderão ser utilizadas se demonstrar uma eficácia e precisão suficientemente elevadas, capazes de permitir a resolução dos problemas propostos. A automatização do processo de anotação dos vídeos tem como objectivo diminuir a quantidade de interacção humana, visando reduzir o trabalho repetitivo e por conseguinte diminuir a subjectividade. O processo de automatização da anotação pode ser traduzido em duas componentes, o processamento digital da sequência de imagens e do seu áudio associado. O processamento digital da sequência de imagens é um campo da área do processamento digital de sinal, onde o sinal é uma fotografia ou uma frame de um vídeo. É uma técnica que 8 envolve o tratamento da imagem como um sinal bidimensional, através do uso de algoritmos e cujo output pode ser uma imagem ou um conjunto de características ou parâmetros relacionados com a imagem original. Como um vídeo é uma sequência de imagens em movimento faz todo o sentido dividir esse processamento, no processamento do movimento e nas imagens propriamente ditas. Existem dois tipos de movimento: 1. Movimento local, que corresponde a um objecto a mover-se sobre um plano de fundo; 2. Movimento global, composto pelo quadro completo, normalmente equivalente a um movimento de câmara. O processo de análise de movimento está dividido em três estágios: • Detecção de objectos em movimento; • Trajectória de objectos • Análise final do movimento 2.1.5. Áudio O processamento do áudio associado ao vídeo é constituído pelo processamento de voz e de música. As principais áreas de aplicação do processamento de áudio são o armazenamento, nível de compressão, compressão de dados, transmissão e melhoramentos. Os melhoramentos podem ser: equalização, filtragem, cancelamento de ruído, adição ou remoção de ecos ou reverberação. O processamento de voz refere-se à aquisição, manipulação, armazenamento, transferência e output de expressões vocais por um computador (4). As principais aplicações são: reconhecimento, síntese e compressão do discurso humano. O reconhecimento foca-se na captura da voz humana como uma forma de onda digital e a sua conversão para um formato capaz de ser interpretável pelos sistemas informáticos. Este apresenta vários desafios devido ao número de palavras, estilo de discurso, pronúncia e outras características do orador, ruído ambiente, acústica do local, etc. Podia-se procurar realizar o reconhecimento usando características linguísticas como a fonética, a pronunciação, regras de morfologia, regras de gramática e restrições semânticas e pragmáticas mas é extremamente difícil conjugar todas estas variáveis da língua falada pelo que se opta pelo uso de Machine Learning, que é uma área da Inteligência Artificial dedicada ao desenvolvimento de algoritmos e técnicas que permitem ao computador aprender, isto é, aperfeiçoar o seu desempenho em algumas tarefas, neste caso extrair e codificar as regras linguísticas que cobrem toda a 9 linguagem. A síntese é outra aplicação com grande potencial. É responsável pela tradução de dados digitais em som perceptível com o objectivo de melhorar a usabilidade dos sistemas para pessoas com deficiências visuais. A compressão é muito importante para a indústria das telecomunicações, pois influencia a quantidade de informação transferida, armazenada e partilhada para um conjunto de especificações entre o tempo e o espaço. 2.1.5.1. Reconhecimento da fala O reconhecimento da fala surgiu recentemente como uma atracção para sistemas informáticos. A sua história está interligada com a evolução dos microcomputadores e com o processamento do sinal digital. No inicio, o reconhecimento era bastante rudimentar, sendo basicamente a conversão do som analógico para sinal digital e posterior comparação com uma memória de vocábulos, sendo depois disponibilizava para o utilizador a palavra escrita. À medida que se estudava as diferenças de frequência e intensidade da voz de uma pessoa para outra, descobria-se que já não era tão simples reconhecer a fala humana. Desde que surgiu o reconhecimento da fala foi considerado como uma subdivisão da inteligência artificial. Os primeiros modelos utilizados para reconhecer a fala foram os modelos escondidos de Markov, conhecidos como HMM. Apesar de ser um modelo de reconhecimento de voz simples, comparado com o conhecimento acumulado de especialistas em fonética acústica, mostrou o quanto é difícil formalizar o conhecimento desses especialistas em forma de um algoritmo de reconhecimento de fala, pelo que levou a que fosse o modelo mais utilizado, descartando a utilização de sistemas especializados para essa tarefa. No inicio da década de 80, o ressurgimento das redes neuronais artificiais deu um novo impulso à tecnologia de reconhecimento de padrões. O modelo de processamento HMM foi extensivamente usado pela IBM™, tendo sido substituído por redes neuronais no final dos anos 80, quando as redes apresentaram uma maior eficiência em reconhecer as palavras “bee”, “dee”, “ee” e “vee” (chamado de vocabulário confuso BDEV). Essas palavras são difíceis de distinguir porque possuem curta duração, baixa intensidade vocal e, praticamente, quase a mesma frequência. Sem entrar em detalhes de aquisição e processamento do sinal, o sistema da IBM, funcionando com o modelo HMM padrão, possuía uma performance de 80%. Ao realizar experiências com redes neuronais, os investigadores da IBM treinaram uma rede para reconhecer as mesmas quatro palavras e 10 obtiveram uma performance de 90,9% a mais próxima da performance humana de reconhecimento. Testes realizados pela IBM com seres humanos, concluíram que, com estas mesmas quatro palavras, a performance humana foi de 94%. As redes neuronais artificiais baseiam-se na neurotransmissão ocorrida no sistema nervoso dos animais para lançar as bases da sua fundamentação. Nesta linha, faz-se uma analogia entre células nervosas fisiologicamente vivas e o processo electrónico. Enfatizando a aprendizagem dos sistemas como forma de sintetizar o conhecimento, esta técnica vem sendo largamente utilizada para o reconhecimento de padrões, como a fala e a visão. 2.1.5.2. Música Segundo a sabedoria popular, a frase “isto é música para os meus ouvidos” indica que a música é agradável de ouvir. A definição de música já foi alvo de longos debates por parte de filósofos, lexicógrafos, compositores, críticos de música, músicos, semiologistas, linguistas, sociólogos e neurologistas. A criação, desempenho, importância e mesmo a definição de Música, variam de acordo com a cultura, o contexto social, localização geográfica e a evolução temporal. A música possui várias formas, desde composições rigorosamente organizadas até à música improvisada com recortes aleatórios. Pode ser dividida em géneros e subgéneros, embora as linhas divisórias e as relações entre os diferentes géneros musicais sejam por vezes muito subtis. No domínio das artes, a música pode ser classificada como uma bela arte do espectáculo. (5) Para muitas pessoas, de várias culturas e nacionalidades, a música é um aspecto muito importante nas suas vidas, é uma actividade comunicativa que transmite aos ouvintes diferentes humores, emoções, pensamentos, impressões, ou conceitos filosóficos, políticos ou sexuais. A música é também subjectiva na medida em que não se limita por ideias tradicionais como ser agradável ou melodiosa, mas desde que seja interpretada como um fenómeno natural, a sua interpretação é sujeita a processos cognitivos estéticos. No mundo da música, John Cage possui uma reputação lendária. Foi compositor, filósofo, poeta, teórico de música, artista e pintor. Foi um pioneiro da música aleatória, da música electrónica e do uso não - convencional de instrumentos musicais, como o piano “preparado” (piano com uma sonoridade diferente devido à existência de objectos presos às suas cordas). Numa entrevista, Cage afirmou: “I think it is true that sounds are, of their nature, harmonious. There is no noise, only sound” (6) (7). Os críticos elogiaram-no como um dos compositores mais influentes do século XX. Foi também fundamental no desenvolvimento da dança moderna, através da sua associação com o coreógrafo Merce Cunningham. Outra personalidade importante no meio musical, Jean-Jacques Nattiez, em tempos afirmou: 11 "just as music is whatever people choose to recognize as such, noise is whatever is recognized as disturbing, unpleasant, or both”. Segundo Edgard Varèse, música não é mais do que som organizado, por exemplo, o som produzido por quedas de água ou pássaros é considerado como “musical” mas raramente é considerado como música. A música pode ser definida por vários critérios, tais como a organização, a agradabilidade, a intenção, construção social, processos de percepção e envolvimento. Os elementos comuns da música são o pitch (que rege a melodia e harmonia), o ritmo e os seus elementos associados: tempo, métrica, e articulação), a dinâmica e as qualidades sonoras do timbre e textura. Segundo Patel, a investigação do processamento neuronal da música e a analise das regularidades e da estrutura da música, permite tirar várias conclusões entre as quais, a informação sobre os processos musicais em geral e que a sintaxe da música é comparável com a sintaxe linguística, dadas as suas semelhanças. Isso significa que, como as operações sintácticas são modulares, será possível decompor todo o processo de sintaxe musical e assim retirar informações sobre a estrutura musical. (8) Em suma, música é uma área extremamente difícil de analisar, pois é uma matéria altamente subjectiva e complexa. Com o aumento exponencial da oferta de conteúdos musicais ao público e a dificuldade em organizar a quantidade massiva de informação, surgiu a necessidade de se desenvolver o processamento de música e assim surgiram novos campos de investigação, onde se destaca o MIR (9), dada a sua nova abordagem aos problemas. O objectivo do MIR é recuperar informações sobre música, nomeadamente, criar uma definição ISO sobre a informação existente na música. Visto MIR ser uma disciplina bastante complexa, apresenta-se de seguida uma visão geral da mesma: 12 Figura 2 - Diagrama simplificado do MIR A MIR pode ser classificada pelas seguintes representações musicais: Representação Descrição Pesquisa Simbólica Notação (pautas e gráficos), Correspondência de temas e/ou gravações de eventos, melodias, análise musical, representações híbridas extracção e separação de voz Gravações, Streams de áudio, Encontrar sons e/ou músicas, Bibliotecas de instrumentos transcrições, classificação de Áudio timbre e análise musical Visual Pautas Leitura de pautas (OMR) Metadados Catálogos, bibliografias, Bibliotecas de bancos de ensaios, descrições Interoperabilidade, recuperação de informação 2.1.6. Imagem A tecnologia de processamento de imagem acompanhou a evolução operada na indústria informática pelo que proporcionou o desempenho mais sofisticado de tarefas simples, a implementação de métodos que seriam impossíveis de realizar por meios analógicos, o uso de algoritmos mais complexos de manipulação de imagem assim como a eliminação de problemas 13 de acumulação de distorção de sinal e ruídos passíveis de surgir em ambientes analógicos. O processamento de imagem é um caso particular do processamento de sinal, onde a sua entrada é uma imagem, como uma fotografia ou uma frame de um vídeo e o resultado pode ser uma imagem ou um conjunto de características ou parâmetros relacionados com a imagem. Dos vários processos existentes salienta-se a interpretação de imagens, que sem dúvida, é o processo mais refinado pois o seu output será uma descrição detalhada da imagem inicialmente fornecida ao sistema (10) (11) (12). As técnicas mais utilizadas no processamento digital de imagem incluem: • Filtragem linear • Análise de componentes principais • Análise de componentes independentes • Modelos de Markov • Equações diferenciais parciais • Redes neuronais • Wavelets As operações mais comuns efectuadas durante o processamento de imagem (13) são: • Transformações euclidianas geométricas, como ampliação, redução e rotação de imagens • Correcções de cor, como ajustes de brilho ou contraste, quantização ou conversão de espaço de cor • Composição de imagens (combinação de duas ou várias imagens) • Interpolação, reconstrução e recuperação de imagens a partir de uma imagem RAW utilizando um filtro standard Bayer • Registo de imagens, alinhamento de duas ou mais imagens • Diferenciação e mutação de imagens • Reconhecimento de imagens, por exemplo, extrair o texto de uma imagem através de um software de reconhecimento óptico de caracteres (OCR) • Segmentação de imagens: refere-se ao processo de dividir uma imagem digital em múltiplas regiões (conjunto de pixéis) ou objectos, com o objectivo de simplificar ou modificar a representação de uma imagem de modo a facilitar a sua análise. É tipicamente utilizado para localizar objectos ou formas numa imagem. • Imagens de gama dinâmica elevada através da combinação de várias imagens • Mistura geométrica para reconhecimento de objectos 2D 14 As técnicas de processamento de imagem são utilizadas nas seguintes aplicações: • Classificação estatística: é uma técnica de Machine Learning capaz de deduzir uma função a partir dos dados apresentados, onde a saída da função pode ser um valor contínuo, denominado de regressão, ou prever um valor de uma classe de objectos da entrada, chamado de classificação. • Reconhecimentos de padrões: é uma área de investigação de Machine Learning cujo objectivo é classificar informações (padrões) baseado em conhecimentos a priori ou em informações estatísticas extraídas dos padrões (14). • Extracção de características: é uma operação que envolve simplificar um conjunto de dados requeridos para descrever um grande conjunto com mais precisão. Quando existe um grande volume de dados de entrada para serem processados por um algoritmo e são notoriamente redundantes (muitos dados mas pouca informação) devese transformar esses dados num conjunto reduzido de características mais representativo, também denominado de vector. É particularmente importante na área de reconhecimento óptico de caracteres (OCR) (15). • Projecções: o Gráficas (uma imagem bidimensional projectada num plano ou objecto tridimensional); estas podem ser paralelas (como projecções ortogonais, axonométricas, oblíquas) ou em perspectiva; o Em mapa, onde a imagem de um planeta é projectada num mapa (redução de três para duas dimensões); o • Matemáticas (álgebra linear, relacional, vectorial e geométricas). Visão computacional: é a tecnologia que estuda e descreve sistemas de visão artificial implementados por hardware ou software. Esses sistemas conseguem extrair conhecimento através de imagens. As imagens podem ser de diferentes fontes, como sequências de vídeo, câmaras de filmar ou scanners. Esta tecnologia pode ser considerada como o inverso da computação gráfica, pois enquanto a computação gráfica produz imagens a partir de modelos 3D, a visão computacional por vezes produz modelos 3D a partir de dados de imagens. Actualmente desenvolve-se a tendência de unir estas duas disciplinas como é explorado em realidade aumentada. Neste campo de investigação temos presente a reconstrução de cenas, detecção de eventos, reconhecimentos de objectos, restauro de imagens e Machine Learning (16). Na figura seguinte pode-se observar um diagrama que interliga os diversos campos de investigação e as suas ramificações associadas (17). 15 Figura 3 - Diagrama correlacional da visão computacional com outros campos • Reconhecimento ou detecção facial: é uma área bastante em voga, com uma grande envolvência por parte da comunidade científica, desde a detecção facial (localizar faces humanas e ignorando outros elementos na imagem, como árvores, edifícios ou corpos) ao reconhecimento facial (aplicação desenvolvida para identificar ou verificar automaticamente a identidade de uma pessoa a partir de uma fonte digital, seja uma imagem ou uma frame de um vídeo). É utilizado normalmente em sistemas de segurança e pode ser utilizado em paralelo com sistemas que usem outros dados biométricos, como impressões digitais ou reconhecimento da íris do olho humano (18) (19). • Realidade aumentada: é uma linha de pesquisa dentro da ciência da computação que lida com a integração do mundo real e elementos virtuais ou dados criados em computador, isto é, a criação de uma realidade mista. Actualmente a investigação em Realidade Aumentada está ligada ao uso de vídeos transmitidos ao vivo, que são processados digitalmente e “aumentados” pela adição de gráficos computorizados. Segundo Ronald Azuma, Realidade Aumentada é um sistema que combina elementos virtuais com o ambiente real, é interactiva, com processamento em tempo real e está concebida em três dimensões (20). • Morfologia matemática é uma técnica para processamento e análise de estruturas geométricas com base na teoria de conjuntos, teoria de reticulados, topologia e funções aleatórias. Normalmente é aplicada a imagens digitais mas também pode ser 16 utilizada em gráficos, malhas de superfícies, sólidos e muitas outras estruturas espaciais (21). • Non-photorealistic rendering (NPR) é uma área da computação gráfica que desenvolve uma grande variedade de estilos expressivos para arte digital. É inspirada por estilos artísticos, como pintura, desenho, ilustração técnica e desenhos animados. Um exemplo deste método é a animação Cel Shading (conjunto de técnicas utilizadas na renderização de imagens 3D de modo a que o resultado final se assemelhe ao de desenhos em 2D) (22). 2.2. Revisão tecnológica Neste capítulo são apresentadas várias soluções comerciais, assim como algumas soluções open-source, embora nesta área de investigação os projectos variem bastante entre si e o factor empresarial contribua para a pouca divulgação de projectos nesta área. Nesta secção também se faz uma apresentação das diversas tecnologias que contribuíram para a execução do projecto. 2.2.1. Soluções existentes Para realizar o processamento do vídeo, numa óptica de programador, foram identificadas pelo menos três bibliotecas: OpenCV, OpenVIDIA e GPUCV. A OpenCV é uma biblioteca bastante popular e muito completa, com diversas funções para segmentação, reconhecimento de objectos, análise de formas, detecção e rastreamento de características e reconstrução tridimensional. Aproveita as instruções MMX/SSE da arquitectura Intel para processamento paralelo de operações, porém, esse processamento paralelo é muito menor do que quando utilizando uma GPU (Graphic Processing Unit). (23) OpenVIDIA é uma biblioteca de funções de processamento de imagens com menos funções que a OpenCV, mas que aproveita o poder de processamento das GPU (24). Possui funções implementadas em CUDA (Compute Unified Device Architecture) e Cg (C for graphics). Possui filtros como detecção de bordas Canny, registo de pares de imagens, mapa de profundidade de imagens estéreo, rastreamento de características, transformadas Radon e Hough. O objectivo da GPUCV é permitir o uso da GPU no processamento de imagens minimizando o esforço do programador (25). Possui um subconjunto das funções do OpenCV portadas para rodar em GPU. Tanto a OpenVidia quanto a GPUCV oferecem acesso à GPU através de funções prontas. Porém, a OpenVidia não esconde do programador as complexidades do OpenGL. Para usar a GPUCV, não é necessário saber OpenGL, mas a criação de novas funções está limitada por um pequeno conjunto de templates, e exige que os parâmetros sejam passados através de uma estrutura de dados. 17 2.2.1.1. Tunatic É um software freeware, desenvolvido pela “Wildbits”, que permite aos seus utilizadores, conseguir informações sobre uma determinada música, através da recolha de um pequeno excerto musical, com a ajuda de um microfone e depois submetendo a amostra pela internet, onde é processado (para criar uma chave) e depois essa chave é comparada com as chaves existentes na base de dados. Caso encontre uma chave igual, retorna o nome da música assim como o nome do autor. Desta maneira, protege-se os direitos de autor e disponibiliza-se um serviço muito interessante gratuito, com a vantagem de estar sempre actualizado (26). 2.2.1.2. Midomi É um software online, que disponibiliza ao utilizador a pesquisa de informações sobre músicas. Ao contrário do Tunatic, com este software não é necessário captar o som de outro dispositivo. O software desenvolvido pela Melodis Corporation, apenas necessita que o utilizador cante durante 10 segundos para o microfone, que o software termina a função. Uma grande vantagem é a possibilidade de cada utilizador poder contribuir para o desenvolvimento da base de dados do software. Permite também ouvir música legalmente, adquirir versões originais para ouvir no computador ou em dispositivos móveis (27). 2.2.1.3. iChords A D’Accord Music Software lançou um inovador programa que identifica automaticamente e apresenta os acordes de praticamente qualquer fonte de áudio. O processo de audição e reconhecimento de acordes em música é bastante complicado mesmo para músicos com bastante experiência. O processo humano de reconhecimento e transcrição de acordes através da audição é extremamente lento, no entanto, com o iChords terá apenas de pôr uma música a tocar e o programa irá processar e extrair os acordes em poucos segundos (28). Algumas características: • O iChord mostra o acorde que está a ser tocado a cada momento assim como o seguinte. • Para cada acorde, apresenta a posição dos dedos, notações ou intervalos. • Os utilizadores podem controlar o tempo de acordo com a sua perícia. • São apresentados 4 modos de visualização de guitarra, incluindo um para canhotos. • As letras podem ser adicionadas de forma a transpor e serem impressas em conjunto com os diagramas dos acordes. • Os acordes podem ser exportados para que se possa criar uma biblioteca de músicas pessoal. 18 2.2.1.4. Mojiti É uma ferramenta que disponibiliza um serviço de anotações online para vídeo. O utilizador pode adicionar legendas, gráficos (balões de texto), animações (elementos em flash), fotografias, notas manuais, sons o vídeo, apenas utilizando um navegador Web. Este software funciona como um plug-in, pelo que oferece grande portabilidade. Outra característica, o mojiti permite a anotação de vídeos disponíveis nos populares sites de partilha de vídeos (29). 2.2.1.5. IBM MPEG-7 Annotation Tool IBM MPEG-7 Annotation Tool (30) também denominada por VideoAnnEx é uma ferramenta desenvolvida para auxiliar a anotação de sequências de vídeo, utilizando os descritores especificados pela norma MPEG-7. A anotação é associada a cada video shot e armazenada num ficheiro XML que segue as normas XML-Schema. Na figura seguinte pode-se observar uma captura de ecrã da ferramenta em funcionamento. Figura 4 - Captura de ecrã do VideoAnnEx O VideoAnnEx é composto por quatro secções: a primeira secção denominada Video Playback, é onde se faz a reprodução do vídeo; a segunda secção, o Shot Annotation, é a zona onde a frame é anotada; segue-se o Views Panel que permite uma pré-visualização das anotações sobre as imagens e por último o Region Annotation, que é a janela onde as anotações são efectuadas. O software permite criar as anotações consoante o léxico que melhor descreva a cena: evento, cenário e objecto. Um componente interessante é o Region 19 Annotation que permite seleccionar uma determinada área da imagem e ter uma anotação correspondente, como se pode ver na figura seguinte: Figura 5 - Selecção de regiões Esta ferramenta apenas permite a anotação textual e gráfica (espacial), não permitindo a anotação através do som. Actualmente, apesar da investigação em torno desta ferramenta ter terminado foram lançados novos projectos, nomeadamente o IBM Multimedia Analysis and Retrieval System (31). 2.2.1.6. SPIDIR SPIDIR é um sistema capaz de indexar e monitorizar os conteúdos de vídeo e guardar essa informação como metadata associada a cada vídeo, com o formato XML definido nas normas MPEG-7. O SPIDIR possibilita vários modos de pesquisa consoante os critérios do utilizador. Os dados sobre o utilizador tais como idade, sexo e área de residência, podem ser gravados em perfis e utilizados pelo fornecedor de serviços para personalizar as pesquisas de vídeo de modo que sejam mais adequadas às faixas etárias ou para disponibilizar material relativo à área de residência do utilizador, etc. O sistema possui também uma interface baseada num registo que captura os hábitos do utilizador, de modo que os menus de pesquisa possam ser construídos de acordo com os gostos e hábitos do utilizador (32). Na figura seguinte pode-se observar o diagrama funcional do sistema SPIDIR. 20 Figura 6 – Diagrama do sistema SPIDIR 2.2.1.7. VideoCittà – Sistema de Armazenamento, Anotação e Acesso a Vídeos O VideoCittà é um sistema que permite dar a conhecer uma imagem pessoal de uma visita a um espaço através da experiência do utilizador, explorando novas formas de visualização e manipulação de informação multimédia na Web, recorrendo à geração automática de vídeo e à personalização. O sistema baseia-se na interacção do utilizador com um mapa do local visitado sobre o qual pode inserir vídeos e imagens, dando a conhecer os locais que mais apreciou. Após a inserção, podem adicionar-se anotações (vídeo, imagem, texto e áudio) aos vídeos e imagens acrescentando-se assim informação pessoal a um ponto de interesse. Poderão ser criadas e visualizadas visitas guiadas (Videotours) que consistem na montagem de vários vídeos/imagens, que podem ser anotados e escolhidos segundo um dado percurso, sendo gerado um vídeo representativo desse percurso. O sistema também permite realizar pesquisas sobre a informação multimédia guardada, relativamente a pontos de interesse ou a percursos inseridos. Esta funcionalidade possibilita recorrer ao sistema com se de um guia turístico se tratasse. Para facilitar a utilização do sistema e permitir a mobilidade na utilização do mesmo, a inserção e pesquisa de informação pode ser realizada remotamente por intermédio de um dispositivo móvel equipado com sistema de localização (33). 2.2.1.8. Ricoh MovieTool O MovieTool é uma ferramenta utilizada para criar descrições interactivas de conteúdos de vídeos de acordo com as especificações de sintaxe do MPEG-7. A Ricoh tem por objectivo encorajar o uso generalizado do MovieTool pela comunidade MPEG-7, de forma a contribuir 21 para o desenvolvimento da investigação. Foi desenvolvido especialmente para o uso de investigadores e projectistas de aplicações de vídeo, uma vez que gera descrições baseadas na estrutura do vídeo. Na figura seguinte pode-se visualizar a ferramenta em funcionamento. Figura 7 - Captura de ecrã do Ricoh MovieTool A principal vantagem da utilização do MovieTool é a facilidade e rapidez com que o utilizador pode ver a correspondência entre as descrições MPEG-7 e a estrutura vídeo de cada cena, pois as funções de edição fazem as alterações no ficheiro XML que contém a descrição MPEG7. O arquivo MPEG-7 pode ser utilizado, por exemplo, para procurar ou saltar directamente para uma determinada cena. Na figura seguinte pode-se ver o complexo XML-Schema do MPEG-7 (34). 22 Figura 8 - XML-Schema do MPEG-7 2.2.1.9. VIDETO Video Description Tool Este projecto foi desenvolvido pelo Computer Graphics Center (ZGDV) em Darmstadt na Alemanha, com o objectivo de tornar acessível a imensa informação relevante existente nos vídeos, cuja gestão e pesquisa são cada vez mais complicadas. Os componentes principais deste sistema são os instrumentos que geram anotações. Na figura seguinte pode-se observar o programa em funcionamento. 23 Figura 9 - Captura de ecrã do Videto O Videto permite a produtores de conteúdos oferecer anotações fáceis de utilizar, em diferentes áreas de aplicação. Desta forma, este software é adaptável para diferentes tipos de descritores e diferentes formatos, contudo, a aplicação foi especialmente desenvolvida para a comunidade MPEG-7 (35). 2.2.1.10. Microsoft Research Annotation System (MRAS) É um sistema Web, projectado com o objectivo de construir uma ferramenta de anotação colaborativa de vídeo, onde os estudantes podem adicionar anotações em vídeos online. Assim qualquer utilizador com preferência pelo MRAS, pode adicionar comentários e outras informações que considere relevantes que podem ser acedidas por outros utilizadores com interesses semelhantes, promovendo a troca de conhecimentos. Nas figuras seguintes pode-se visualizar a arquitectura do sistema MARS e uma captura de ecrã do sistema (36), (37). 24 Figura 10 - Vista geral do sistema Figura 11 - Captura de ecrã do MRAS 2.2.1.11. FilmEd Project Este projecto da autoria do Distributed Systems Technology Centre (DSTC) tinha como objectivo o desenvolvimento de um modelo técnico e financeiro para promover o desenvolvimento da educação através do acesso a arquivos multimédia, nomeadamente, filmes, legendagem, estudos de meios de comunicação, jornalismo, cultura e história australiana. 25 Durante o desenvolvimento do FilmEd, surgiram vários protótipos, dos quais se realça o seguinte: • Vannotea – protótipo que permite a indexação colaborativa, a anotação e a discussão do conteúdo audiovisual através de redes de alto débito. Permite que grupos geograficamente distribuídos e unidos por redes de alto débito (GrangeNet) consigam executar a indexação de repartição colaborativa em tempo real, assim como a discussão e a anotação de filme/vídeo digital de alta qualidade, imagens e objectos 3D. O desenho flexível do Vannotea e a arquitectura da metadata, permitem o seu uso em várias redes fora do domínio do objectivo original. A figura seguinte mostra uma captura de ecrã do Vannotea (38). Figura 12 - Captura de ecrã do Vannotea Em Junho de 2006, a DSTC foi desactivado devido a cessação de fundos. 2.2.1.12. Sony Sound Forge ® O Sound Forge® é um software premiado de edição de áudio digital, inclui um poderoso conjunto de ferramentas, efeitos e processos capazes de editar, gravar, codificar e manipular quase todo o tipo de ficheiros de áudio. Este software é recomendado para o uso profissional e semi-profissional no mercado de gravadores e estúdios de gravação. Foi desenvolvido pela Sonic Foundry®, tendo sido adquirido pela Sony® no final de 2003. Actualmente, apresenta-se na versão 9 e é considerada uma ferramenta essencial a todos os editores e produtores de áudio. Na figura seguinte pode-se observar uma captura de ecrã do Sound Forge com um vídeo carrega. Este software foi o modelo pelo qual foi desenvolvida a aplicação cliente (39). 26 Figura 13 - Captura de ecrã do Sound Forge 2.2.1.13. LabelMe O projecto denominado LabelMe foi desenvolvido pelo laboratório Computer Science and Artificial Intelligence Laboratory (CSAIL) do MIT, com o objectivo de disponibilizar uma dataset de imagens digitais com anotações. O dataset é dinâmico, de uso livre e está aberto à contribuição pública. A sua maior aplicação está na pesquisa de imagens computacionais. funcionamento Em desde Maio de 2008, o LabelMe possui mais de 163 mil imagens, sendo 43 mil destas anotadas e 242 objectos etiquetados (40) (41). Figura 14 - Captura de ecrã do LabelMe 27 2.2.2. Linguagens de programação Nesta secção faz-se uma breve apresentação das linguagens que foram utilizadas durante a elaboração do projecto. 2.2.2.1. ActionScript 3 É uma linguagem de programação, orientada a objectos, para os ambientes de desenvolvimento Adobe Flash, Adobe Flex e o Adobe Air. O ActionScript foi inicialmente desenvolvido para permitir aos produtores de conteúdos adicionarem interactividade aos seus produtos, nomeadamente animação vectorial em 2D. O ActionScript 3 é uma linguagem conceptualmente e arquitecturalmente diferente das versões anteriores. Esta nova versão do ActionScript inclui vários melhoramentos, nomeadamente, uma biblioteca para manipulação de XML denominada de ECMAScript para XML (E4X), novas funcionalidades ao nível do core da linguagem, uma Flash Player API melhorada que permite um maior controlo sobre objectos de baixo nível e uma melhoria do desempenho graças ao novo AVM2 (ActionScript Virtual Machine 2) (42) (43). 2.2.2.2. C++ O C++ é uma linguagem de programação genérica, de nível médio, pois compreende as funcionalidades de uma linguagem de alto nível com uma linguagem de baixo nível. Foi desenvolvida por Bjarne Stroustrup em 1979, na Bell Labs, como uma evolução ao C. É uma das linguagens mais populares de sempre e podem-se encontrar aplicações desenvolvidas em C++ nos mais diversos domínios do mercado da informática, sejam sistemas de software, drivers de dispositivos, software embebido, aplicações de alta performance cliente / servidor e aplicações de entretenimento. É uma linguagem orientada a objectos, suporta programação de processos e comunicação de dados. Foi utilizada para desenvolver os algoritmos de análise de som e de Machine Learning existentes na Clustermedia Labs (44). 2.2.2.3. Ruby O Ruby é uma linguagem de programação orientada a objectos, com várias semelhanças com Perl, Smalltalk e Python. Ruby não possui tipos primitivos, todos os tipos são classes, assim como, todas as variáveis são objectos. Esta linguagem possui vastos repositórios de bibliotecas, como o Ruby Forge e o Ruby Application Archive (RAA) e uma ferramenta para 28 instalação de bibliotecas, denominado Ruby Gems. O framework mais famoso desenvolvido em Ruby é o Ruby on Rails (45) (46) (47) (48). 2.2.3. Software para desenvolvimento de aplicações multimédia 2.2.3.1 Adobe Flash O Adobe Flash é um ambiente de desenvolvimento de conteúdos interactivos ricos, independentes do navegador ou plataforma utilizada. Actualmente, é a solução mais avançada que permite a manipulação de gráficos vectoriais 2D, 3D, suporte de imagens de vários formatos, streaming bidireccionais de áudio e vídeo e também animações interactivas. O Flash permite a elaboração de scripts, através da linguagem ActionScript. O conteúdo Flash pode ser visualizado em vários produtos, sistemas e dispositivos, incluindo o gratuito Adobe Flash Player, com uma implementação no mercado de cerca 98% dos internautas, que funciona em qualquer navegador web, na grande maioria dos telemóveis de última geração e noutros dispositivos electrónicos (usando o Flash Lite). O Flash utiliza um formato de publicação binária, muito eficiente, denominado por swf (lê-se “swif”). Pode-se dizer que o Flash foi criado por Jonathan Gay e Robert Tatsumi. Ainda na faculdade, Jonathan Gay desenvolveu uma aplicação de desenho, utilizando canetas num ecrã, que se chamava Intellidraw, que posteriormente evoluiu para o SmartSketch, aplicação vocacionada para simplificar o desenho assistido por computador. Com o advento da internet, surgiu o interesse de aplicar gráficos e animações a aplicações Web. Então Jonathan Gay, já a trabalhar com Robert Tatsumi, desenvolveram scripts de animação para o SmartSketch. Quando terminaram o produto, alteraram o nome para FutureSplash Animator. Em 1996, o FutureSplash Animator despertou a atenção das empresas Microsoft e Disney, que decidiram utilizar o software nos seus projectos. A Disney, que trabalhava em parceria com a Macromedia, começou a colaborar, com frequência, com a pequena empresa de Jonathan Gay, a FutureWave Software, que seria vendida mais tarde à Macromedia. Em resultado, surge no mercado, o Macromedia Flash 1.0. Em 2005, a Adobe Systems adquire a Macromedia numa transacção de cerca de 3,4 biliões de dólares. O Flash evoluiu bastante, desde uma simples ferramenta de desenho e animação para a Web a um completo ambiente de desenvolvimento multimédia com mais de quinhentos mil produtores de conteúdos e mais de 325 milhões de utilizadores do Adobe Flash Player. É até possível que hoje em dia, o Adobe Flash Player seja o software mais distribuído através da Internet, à frente do Internet Explorer, Netscape Navigator e Real Player. Em 2007, a Adobe 29 lançou o Adobe Creative Suite 3, que é um pacote integrado com compatibilidade total com as restantes tecnologias da Adobe (49). 2.2.3.2. Adobe Flex É uma ferramenta altamente produtiva para a criação e desenvolvimento de aplicações RIA (Rich Internet Aplications) para empresas ou para a internet. O Adobe Flex é uma aplicação que utiliza várias tecnologias padronizadas como o MXML, ActionScript e inclui uma robusta IDE. O MXML é compatível com XML e implementa estilos CSS, especificação nível 1 (CSS1) e implementa um modelo de eventos especificados num subconjunto dos eventos W3C DOM Nível 3. O ActionScript é uma linguagem baseada em ECMAScript que permite o desenvolvimento de aplicações orientadas a objectos. O servidor Flex executa em plataformas padrão J2EE ou em recipientes de servlet. O Adobe Flex permite a construção de aplicações envolventes, que são executáveis no Adobe Flash Player. Sendo esta uma plataforma independente, significa que é garantido o perfeito funcionamento das aplicações Flex em qualquer navegador ou ambiente. Outras funcionalidades existentes no Flex é o Flex Data Services, capaz de sincronizar transferência de dados, melhorar sistemas de troca de mensagens e até integrar áudio e vídeo (50) (51). O Flex possui duas versões: • O Flex SDK, gratuito, constituído pelo compilador, debugger, Flex Framework (biblioteca de classes) e outros utilitários; • O Flex Builder é uma versão mais completa, que inclui o Flex SDK, Flex Data Services e o Flash Player. O Flex Builder IDE fornece ferramentas que ajudam a desenvolver, desenhar, aperfeiçoar aplicações, que incluem um compilador incremental e um debugger passo-a-passo. 2.2.3.3. Adobe Air É um software de desenvolvimento multi-plataforma que funciona em tempo real e que permite aos programadores combinar diversas tecnologias como HTML, Ajax, Adobe Flash e de Adobe Flex, com o intuito de desenvolver aplicações RIA's para funcionarem como uma aplicação desktop. Uma aplicação RIA a correr num navegador não requer instalação, enquanto uma aplicação em Air necessita de ser embalado, assinado digitalmente e instalado para o utilizador no sistema local mas essa aplicação, depois de instalada, pode funcionar sem internet. Outra vantagem é que a aplicação Air proporciona o acesso aos locais de armazenamento e a sistemas de arquivos. As aplicações Air podem funcionar off-line mas se os utilizadores assim o entenderem podem activar funcionalidades adicionais, como enviar dados pela internet quando uma ligação lhes é 30 disponibilizada. Exemplo do que foi descrito é o eBay Desktop, que permite aos vendedores elaborar uma listagem completa off-line e a seguir efectuar upload para o eBay. Outras empresas utilizam aplicações Air entre elas, a Aol, Finetune, Nasdaq, CleVR e Pownce. Actualmente existem mais 180 aplicações actualmente disponíveis no mercado (52) (53). 2.2.3.4. Ruby on Rails Este framework gratuito foi desenvolvido para a criação de sites orientados para bases de dados e encontra-se estruturado em 5 pacotes: ActiveRecord; ActiveResource; ActionPack; ActiveSupport e ActionMailer. Ruby on Rails é um projecto em código aberto desenvolvido em Ruby. As aplicações criadas utilizando o framework Rails são desenvolvidas com base no padrão de projecto MVC (Model-View-Controller). Ruby on Rails segue duas filosofias que visam aumentar a produtividade do programador: DRY e Convention over Configuration. Estes métodos estão implementados por todo o Rails, mas podem ser mais visíveis nos pacotes do Active Record (ORM, Object Relational Mapper) e Action Pack (MVC) (54) (55). 2.2.3.5. Microsoft Silverlight Este novo produto da Microsoft é um plug-in para vários navegadores web, que fornece o suporte para aplicações RIA como animações, reprodução de vídeos, música e gráficos. O Silverlight é um software concorrente com o Flash da Adobe entre outros. O Silverlight foi desenvolvido com o nome de código WPF/E (Windows Presentation Foundation / Everywhere), o que significa que é compatível com os sistemas operativos da Microsoft, o Windows e com o Mac OS X. A Microsoft lançou recentemente a versão 2.0, desenvolvida em parceria com a Novell, para implementar o Silverlight nos sistemas Linux. Esta nova versão traz a interactividade melhorada e dá suporte ao .NET Framework, o que permite aos programadores utilizar as linguagens dessa plataforma, como ASP.NET, Visual Basic, C#, Python e Ruby. Os aplicativos que vão utilizar o Silverlight, podem ser programados em XAML e Javascript (56) (57) (58). 2.2.4. Ambientes de desenvolvimento integrado 2.2.4.1. Microsoft Visual Studio O Visual Studio é um conjunto completo de ferramentas de desenvolvimento de aplicações. Este software foi lançado com o objectivo de auxiliar os produtores na criação de soluções inovadoras e interfaces complexos. O Visual Studio é especialmente dedicado à construção de aplicações ASP web, aplicações XML web, aplicações para ambiente de trabalho e aplicações 31 para telemóveis. Visual Basic, Visual C++, Visual C#, Visual J# são as linguagens integradas no Visual Studio e todas partilham o mesmo ambiente de desenvolvimento integrado (IDE), que permite a criação de soluções mistas. Suporta também outras linguagens como: Chrome, F#, Python, Ruby, entre outras, desde que estejam à disposição via serviços de linguagem. O VS também suporta XML / XSLT, HTML / XHTML, Javascript e CSS. Além disso, os produtores podem usar a funcionalidade do .NET Framework que fornece acesso às tecnologias que permitem simplificar o desenvolvimento de aplicativos para web em ASP e serviços web XML, como Windows Form, web sites, aplicações web e serviços web. Foi utilizado para o desenvolvimento do back-end e do sistema de comunicação, sendo de salientar algumas funcionalidades muito utilizadas como encapsulamento automático de código, geração de métodos, sugestões de correcção de erros, “auto-complete” muito avançado e funções de debugging (59). 2.2.5. Tecnologias para EAI (Enterprise Application Integration) O sistema desenvolvido utilizou tecnologias para integração dos vários componentes, nomeadamente, o interface gráfico, o back-end, a base de dados e outras aplicações envolvidas no sistema, como o servidor de streaming. Dado que a aplicação tinha como objectivo a sua integração no sistema da empresa, era imperativo que a aplicação fosse também compatível com o sistema de comunicação existente. Como o sistema de comunicação existente na empresa, também sofreu alterações durante a execução do projecto, faz-se um pequeno resumo, para explicar como se chegou ao produto final. Inicialmente, foi desenvolvido na empresa, um sistema baseado em WebOrb, pois a aplicação principal da empresa, o LiveMeans, tinha o seu back-end desenvolvido em Ruby e com a utilização do WebOrb era possível a integração de aplicações em Adobe Flex. Mas esta solução é bastante pesada a nível de processamento e possuía uma grande desvantagem, apenas permitia a comunicação do cliente com o servidor e nunca ao contrário. Quando o LiveMeans foi redesenhado para a comunicação recorreu-se ao uso de Web Services, que eram mais eficientes que o WebOrb mas o problema de comunicação unidireccional subsistia. 2.2.5.1. Sockets Assíncronas Após uma pesquisa, com o objectivo de descobrir as tecnologias mais favoráveis para a implementação do sistema de comunicação, optou-se por utilizar um servidor de sockets. Um socket (60) é um mecanismo que permite criar uma conexão virtual para comunicação entre processos, através de uma rede de computadores. Os sockets são normalmente implementados usando uma biblioteca API desenvolvida em linguagem C, como as Berkeley 32 Sockets (61). Um API é um conjunto de definições através do qual um software comunica com outro. Berkeley sockets foi o interface de rede pioneiro desenvolvido na Universidade da Califórnia em Berkeley (UCB) para o sistema operativo Unix – BSD. Actualmente, a maioria das implementações de sockets são baseadas nas Berkeley Sockets, como a WinSock (62). A definição mais simples de um socket é a combinação de um endereço IP com um porto associado. Um socket é definido como um identificador único por onde a informação é transmitida numa rede. Esse identificador é um número de 32 bits, que possui a identificação do socket de recepção, do socket de envio e também do host em que o processo está nativo. Os socket podem ser de três tipos: • Stream sockets: bidireccionais, orientados à conexão e fiáveis, pois utilizam o protocolo de comunicação TCP. Pelo protocolo TCP os dados chegam ordenados e sem erros. • Datagram sockets: são sockets “connectionless” que usam o protocolo UDP. • Raw sockets: são tipicamente utilizadas em routers e outros equipamentos de rede semelhantes. Permitem que os utilizadores tenham acesso ao cabeçalho do pacote, o que pode originar falhas de segurança (63). A classe socket permite dois modos de funcionamento, síncrono e assíncrono. No modo síncrono, as chamadas às funções que executam operações na rede, como send e receive esperam pela conclusão da operação antes de retornar o controlo ao cliente, enquanto no modo assíncrono estas chamadas são executadas imediatamente. O serviço de sockets é composto por duas partes terminais, o servidor de sockets, que aceita conexões de clientes, atribui cada ligação a um determinado porto na máquina local e retransmite os dados recebidos de um cliente para o outro cliente e o cliente socket que se conecta ao servidor e envia e mostra os dados recebidos do servidor. O servidor só pode atribuir um porto a cada socket, o que significa que o servidor terá de ser multi-threaded, o que significa que cada ligação terá a sua thread (64) (65) (66). Na figura seguinte encontra-se representado o esquema de funcionamento de um serviço de sockets. 33 Figura 15 - Diagrama de um serviço de sockets No projecto foi implementado um servidor de sockets assíncronas, pois permite uma comunicação bidireccional. É uma comunicação extremamente rápida porque resulta de uma implementação em baixo nível, utiliza os protocolos TCP, que proporciona mecanismos de ordenação e recuperação de pacotes de dados. O servidor implementado no back-end, após a sua inicialização, fica à espera de receber uma conexão do cliente. Foi desenvolvido um protocolo de mensagens, com o intuito de permitir ao interface gráfico fazer pedidos e ao backend executar esses pedidos e fornecer respostas. 2.2.6. Tecnologias multimédia e broadcasting 2.2.6.1. Red5 O Red5 é um servidor Flash RTMP Open Source desenvolvido em Java que disponibiliza os seguintes serviços: streaming e aquisição de áudio/vídeo, transmissão de conteúdos que já são transmissões ao vivo e publicação remota. O Red5 pode ser considerado como a versão livre do Adobe Flash Media Server (67). O Red5 possui a característica de permitir o envio de vários streams ao mesmo tempo para o mesmo utilizador, que se denomina por multi stream. Esta característica foi aproveitada pela 34 empresa, que desenvolveu um sistema que permite o envio de um conteúdo live capturado em suporte FLV. No seguinte endereço é disponibilizado um breve exemplo como criar uma aplicação Flash com o auxílio do Red5 (68). 2.2.6.2. RTMP O RTMP (Real Time Messaging Protocol) é um protocolo proprietário desenvolvido pela Adobe Systems que utiliza, por padrão, a porta 1935 e foi utilizado inicialmente no Flash Communication Server. O RTMP usa o protocolo TCP/IP para a transmissão de pacotes e não é usado para RCP (Remote Procedure Calls). O RTMP mantém uma conexão persistente com o servidor e permite a comunicação em tempo real de dados do tipo: áudio, vídeo e objecto. A equipa de desenvolvimento do Red5, através da reverse engineering, conseguiu recriar o protocolo, o que torna o Red5 um projecto legal. Para ser realizada uma comunicação RTMP, é necessário, além do servidor, um arquivo swf. Este arquivo que deverá ser compartilhado pelos utilizadores finais, deve possuir chamadas RTMP, normalmente codificadas em Action Script (69). 2.2.6.3. Ffmpeg O Ffmpeg é uma aplicação de conversão de áudio e vídeo de alto débito, com a possibilidade de capturar áudio e vídeo de uma “live source”. Possui um interface estilo linha de comandos, com o objectivo de ser intuitivo e permitir a sua integração em scripts automáticos. Esta ferramenta possui a libavcodec, uma reconhecida biblioteca de áudio/vídeo, pelo que permite o uso de vários formatos. O Ffmpeg foi desenvolvido em Linux, mas pode ser compilado na maioria dos sistemas operativos, incluindo o Windows. No projecto, o Ffmpeg é utilizado para extrair o áudio dos FLV para, após processamento, ser possível a sua representação no front-end (70). 2.2.6.4. FLV – Flash Video O Flash Vídeo é o formato de arquivo de vídeo, proprietário da Adobe. Foi criado para distribuição de vídeo pela Internet através do Adobe Flash Player. O FLV é composto por um canal de vídeo, codificado com o codec Sorenson Spark (H.263) e um canal de áudio, normalmente codificado em MP3. Os codificadores recomendados pela maioria dos utilizadores são o Sorenson Squeeze e o Ffmpeg. A última versão do Adobe Flash Player permitiu o suporte de vídeos em H.264 (standard para compressão de vídeo MPEG-4 Part 10; alta definição) com o codec On2 TrueMotion VP6 e 35 suporta áudio HE-AAC (método de compressão para áudio digital optimizado para aplicações de baixo bit rate, como o streaming de áudio; desenhado para ser o sucessor do MP3). Este formato tornou-se muito popular na Internet, por várias razões: facilidade de manuseamento, existem inúmeros websites a fornecer serviços de streaming e conversão, a tecnologia utilizada para visualizar os Flash vídeos, o Adobe Flash Player encontra-se presente em 93% dos computadores, na sua maioria como um plug-in para browser, ou em programas como o MPlayer, VLC media player, Quicktime ou algum programa que utilize o filtro DirectShow. Permite também ser encapsulado em ficheiros swf, possui a capacidade de incorporar metadados e interagir com ActionScript (oferecer serviço de cuepoints para legendagem). O sucesso do Flash vídeo é global e pode ser encontrado em sites como o YouTube™ , Google Video, Yahoo! Video, MySpace e vários canais de notícias online que disponibilizam os seus conteúdos online neste formato (71) (72) (73) (74). 2.2.7. Sistema de gestão de base de dados Actualmente, qualquer sistema de informação deve possuir uma base de dados e um respectivo sistema de gestão, que ofereça a melhor maneira de armazenar e estruturar a informação. A linguagem de estruturação da base de dados é o SQL, que define os métodos para criar e manipular base de dados relacionais. O SQL é uma linguagem simples, que pode ser dividida em duas sub-linguagens, a Data Definition Language (DDL), responsável pelos comandos de criar e destruir base de dados e a Data Manipulation Language (DML), é a responsável por inserir, recuperar e modificar dados contidos na base de dados. MySQL foi o sistema de gestão de base de dados relacionais utilizado, que implementa as funcionalidades SQL e ODBC, com os API’s em C e Perl. Para além de ser muito popular, este sistema é distribuído gratuitamente (75) (76). SQLYog foi o GUI utilizado para comunicar com o servidor MySQL, bastante potente e intuitivo, combina características de vários GUI concorrentes sendo utilizado por um grande número de empresas (77). 2.2.8. Sistema de gestão de versões 2.2.8.1. Subversion (SVN) O Subversion é um sistema de gestão de versões gratuito, que surgiu no mercado como sucessor melhorado do CVS, que possuía alguns erros. Para além de ser de distribuição gratuita, o Subversion é compatível com a maioria dos sistemas operativos existentes. Este tipo 36 de software possui várias vantagens, como recuperação de versões anteriores no caso de erros irrecuperáveis ou possibilidade de visualizar as alterações entre versões. Este software já se encontrava integrado na empresa, o que facilitou a decisão de o adoptar (78). 2.2.8.2. Tortoise SVN O Tortoise SVN é o cliente open-source SVN, implementado directamente na shell do Windows. O Tortoise é capaz de gerir ficheiros e directórios que são guardados num repositório (79). 2.2.9. Tecnologias de encriptação de dados Actualmente, a segurança de sistemas ou dados é um tema de grande importância e não foi esquecida no projecto. Em seguida, faz-se uma breve descrição das tecnologias que foram utilizadas no projecto. 2.2.9.1. RSA É um algoritmo de encriptação de dados, desenvolvido por três professores do M.I.T. (Massachusetts Institute of Technology) e é considerado um dos mais seguros, pois superou todas as tentativas de o tentar quebrar. O RSA envolve um par de chaves, uma pública e uma outra privada que é utilizada para recuperação dos dados. As palavras-chave são codificadas na base de dados (80). 2.2.9.2. MD5 É um algoritmo de hash de 128 bits muito utilizado para verificação de logins. Por ser um algoritmo unidireccional não é possível recuperar os dados, pelo que o método de verificação será por comparação da hash da base de dados com a hash da tentativa de login (81). Um hash é uma sequência de bits geradas por um algoritmo de dispersão, em geral representada em base hexadecimal, que permite a visualização em letras (A a F) e números, representando 2 bytes cada. O conceito teórico diz que hash é a transformação de uma grande quantidade de informações em uma pequena quantidade de informações". 37 2.2.10. Formato de informação enviada entre aplicações Sempre que são utilizadas tecnologias para EAI, em especial na utilização de Sockets, o formato com que as mensagens são trocadas entre as aplicações (áudio engines, front-ends, back-end) teve de ser analisado. 2.2.10.1. CSV (Comma Separated Values) É um formato de arquivo que armazena dados separados por algum delimitador, por exemplo, um ponto e vírgula (;). Por ser um formato muito simples, este tipo de ficheiros pode ser criado em qualquer editor de texto e é comum para todos os sistemas operativos. Permite uma comunicação veloz, pois o tamanho das mensagens é relativamente pequeno. 2.2.10.2. XML (eXtensible Markup Language) O XML é uma recomendação da W3C (82) para gerar linguagens de marcação para necessidades especiais. É uma linguagem de padronização com marcação genérica que é capaz de descrever diversos tipos de dados. O seu objectivo principal é a facilitar a partilha de informações através da Internet. A principal característica do XML é criar uma infra-estrutura única para diversas linguagens para que linguagens desconhecidas e / ou pouco utilizadas possam ser definidas sem haver necessidade de criar uma estrutura e de serem submetidas aos comités de padronização. A adopção do formato XML, embora duplique o tamanho das mensagens, permite uma maior facilidade de interpretação dos dados (parsing), aumento de compatibilidade com outras aplicações e consequentemente o aumento da escalabilidade e facilidade de manutenção futura. 2.2.10.3. Wave O ficheiro Wave é o formato padrão de arquivo de áudio do Microsoft Windows para armazenar dados de áudio. Tornou-se muito popular devido à grande popularidade do Windows e da grande quantidade de programas de áudio a utilizar este formato. Uma das principais características é que o Wave é um formato não comprimido de som, que representa os dados numa forma crua (i.e. de uma forma não tratada). O ficheiro é composto por duas secções, a primeira denominada de header, que contém toda a informação do áudio, como frequência de amostragem, número de bytes/s, número de bytes por amostra e a segunda que contém o áudio propriamente dito, em codificação PCM (Pulse Code Modulation) (83) (84). 38 Figura 16 - Formato do ficheiro Wave 39 Capítulo 3 Solução Proposta Neste capítulo faz-se a apresentação das componentes desenvolvidas, assim como a descrição da arquitectura de todo o sistema. Para cada componente serão enunciados os casos de utilização que representam os requisitos pretendidos. 3.1. Arquitectura A solução encontra-se implementada no modelo cliente-servidor, onde o cliente, composto pelo interface, comunica com o servidor, através de um sistema baseado em sockets assíncronas, como é visível na figura seguinte. Um utilizador, após se autenticar, acede ao sistema, nomeadamente ao cliente, através de um navegador Web e assim pode fazer pedidos ao servidor. O servidor, responsável pela realização de várias tarefas, está dividido em várias máquinas: • Máquina de Back-end: responsável pelo processamento dos pedidos dos clientes, pela interacção com as outras máquinas e onde os clientes se irão conectar; • Servidor de Base de Dados: máquina que contém a informação dos utilizadores autorizados, dos vídeos a anotar e das anotações já realizadas; • Máquina de Streaming: responsável pela distribuição de vídeos para os clientes; • Máquina de Análise: máquinas que realiza todo o pré-processamento automático dos vídeos. 40 Figura 17 - Arquitectura proposta para o Sistema de Anotação As máquinas de análise são responsáveis pelo pré-processamento automático de anotação dos vídeos e têm como objectivo auxiliar o utilizador no moroso processo de anotação. O processamento automático é executado por algoritmos de análise de som e imagem. Os resultados desse processamento são enviados para o servidor de base de dados, onde são adicionados como regiões resultantes do processamento automático e posteriormente serão apresentados ao utilizador anotador que solicitar um vídeo que já foi previamente processado. 3.2. Cliente O Cliente é uma aplicação Web desenvolvida em Adobe Flash, que o utilizador pode aceder através um navegador Web. Esta aplicação gráfica permite ao utilizador interagir com o sistema no sentido de efectuar a anotação manual, sendo esta baseada em regiões previamente criadas com o auxílio de máquinas de análise ou simplesmente pela análise das imagens (estáticas ou dinâmicas), do espectrograma e forma de onda do som, desenhando as regiões manualmente. 41 Na figura seguinte é possível visualizar a aplicação em funcionamento, composta por várias secções. Figura 18 - Captura de ecrã da aplicação em funcionamento A aplicação é constituída por três secções principais: 1. Sequência de snapshots: espaçadas temporalmente, onde a primeira é uma fotografia da primeira frame da selecção do vídeo e as seguintes espaçadas de cerca ¼ do tempo total dessa selecção. A selecção poderá ser uma região desenhada ou o vídeo completo e nesse caso a primeira fotografia corresponderá à frame do vídeo; 2. Scroller: esta barra permite navegar pelo vídeo, mesmo após o utilizador efectuar vários níveis de zoom. Quando é deslocada, o interface actualiza o ambiente com novas snapshots, assim como com uma forma de onda e espectrograma reajustados para a nova posição no vídeo; 3. Nesta secção podemos visualizar uma janela com dois gráficos, que representam o áudio. O gráfico superior, desenhado a vermelho, representa a forma de onda do som. O gráfico inferior apresenta o espectrograma. Por debaixo da terceira secção, surgem dois tabuladores. O verde, denominado por automatic, revela ao utilizador as regiões resultantes do pré-processamento automático. Estas regiões podem ser alteradas pelo utilizador, mas passarão a ser regiões de autor (regiões representadas no tabulador a vermelho), o que significa que as regiões resultantes do pré- 42 processamento automático nunca poderão ser alteradas ou removidas por qualquer utilizador, pois o seu objectivo é servir de orientação para outros utilizadores. Caso o utilizador o deseje, poderá esconder as regiões através do tabulador. O segundo tabulador, de cor vermelho, significa que são regiões realizadas manualmente pelo utilizador. Cada região possui um rebordo e apenas uma região possuirá um rebordo vermelho. Isso significa que é a região actualmente seleccionada pelo utilizador. Para o utilizador seleccionar qualquer outra região simplesmente tem de carregar na região desejada. Para além destas secções, o utilizador poderá encontrar um menu deslizante, através do deslocamento do cursor até à zona lateral esquerda da aplicação, o menu com as opções de zoom e a lista de vídeos disponíveis, como é possível visualizar na figura lateral. Na área das opções de zoom, são disponibilizadas três opções: “zoom in” (aumentar o detalhe), “zoom out” (reduzir o detalhe) e o “zoom region”. Nas opções de aumentar ou reduzir o zoom, o utilizador carrega num local aleatório dentro da zona dos gráficos e o zoom é efectuado em torno desse ponto. Na opção de “zoom region”, o utilizador desenha uma região de zoom e posteriormente faz-se a actualização da aplicação, através do snapshots, reprocessamento assim como, da das Figura 19 - Pormenor do menu de opções forma de onda e espectrograma do áudio. A área da listagem de vídeos disponíveis permite ao utilizador trocar de vídeo, no caso de já ter realizado a anotação no vídeo escolhido ou se ter enganado a escolher o vídeo quando iniciou a aplicação. Figura 20 - Pormenor da lista das regiões anotadas O utilizador poderá encontrar outro menu, agora na zona lateral direita da aplicação, como se pode observar na figura lateral. Este menu apresenta a listagem das regiões anotadas, assim como um botão para submeter as regiões para o back-end e outro que permite remover regiões. 43 3.3. Casos de utilização Os casos de utilização traduzem as funcionalidades oferecidas pelo sistema aos seus utilizadores. Esta secção apresenta a descrição dos casos de utilização identificados no sistema. A figura seguinte mostra o diagrama dos casos de utilização para o sistema desenvolvido. Figura 21 - Diagrama dos Casos de Utilização Casos de utilização do interface por um utilizador: • Autenticação: apenas um utilizador registado poderá aceder à aplicação. Após inserir o seu nome de utilizador e a sua respectiva palavra-chave, o utilizador terá acesso a todas as funcionalidades da aplicação; • Escolha do Vídeo: O sistema apresenta uma lista de vídeos disponíveis ao utilizador. Após o utilizador seleccionar o vídeo desejado, o cliente comunica com o back-end solicitando snapshots do vídeo e solicita os dados para desenhar a forma de onda e o espectrograma do áudio; • Inserir Regiões: O utilizador, com o rato, pode desenhar uma região de qualquer tamanho; 44 • Seleccionar região: O utilizador pode seleccionar qualquer região, para isso apenas tem de carregar na região desejada; • Lista de regiões: O utilizador pode observar uma lista das regiões já anotadas, com os tempos de início e fim, nome da região; • Lista de vídeos: O utilizador pode visualizar a lista de vídeos disponíveis, assim como, escolher um novo vídeo para anotar; • Configuração de zoom: O utilizador pode alterar a visualização da forma de onda e espectrograma, com duas opções, aproximar ou afastar o gráfico num determinado ponto ou então aproximar ou afastar uma região previamente seleccionada; • Alterar Regiões: O utilizador tem a possibilidade de alterar os limites da região, seja o início ou o fim da região, apenas por seleccionar o limite que deseja alterar; • Apagar Regiões: O utilizador pode apagar as regiões que desejar; • Reproduzir região: O utilizador pode reproduzir o vídeo, numa das janelas das snapshots apenas por carregar na tecla Espaço. Esta funcionalidade denomina-se por Video on Demand; • Parar reprodução: Para parar a reprodução do vídeo, basta carregar novamente na tecla Espaço; • Atribuir nome à região: O sistema envia os dados relativos às regiões existentes no interface para o back-end. O back-end, por sua vez, actualiza a base de dados. As regiões já existentes que não sofreram alterações mantêm-se, enquanto as regiões novas são adicionadas e as regiões modificadas são actualizadas na base de dados; • Enviar dados para o servidor: O cliente envia para o back-end uma lista das regiões desenhadas no interface gráfico e o back-end envia os dados à base de dados, onde o SGBD actualiza a tabela das regiões, consoante sejam regiões novas ou alteradas; • Aumentar zoom: O utilizador carrega no ponto onde deseja que seja efectuado o aumento do zoom; • Reduzir zoom: O utilizador carrega no ponto desejado para efectuar a redução do detalhe do zoom; • Zoom região: O utilizador desenha uma região e o zoom é efectuado maximizando essa região para a área gráfica, efectuando uma actualização das snapshots e dos gráficos. 3.4. Back-end É a unidade de gestão e de processamento do sistema. Como já foi referido anteriormente, este sistema de anotação foi desenvolvida com o objectivo de ser integrável no sistema principal da empresa, o LiveMeans. Com esse objectivo em mente, os sistemas adjacentes e auxiliares foram desenvolvidos com as mesmas tecnologias, para permitir integração imediata. Para o projecto, de modo a testar a aplicação sem interferir com o normal funcionamento do 45 LiveMeans, foi desenvolvido um back-end em C++, com o auxílio das potencialidades do Visual Studio 2008, onde o sistema de comunicações implementado em sockets assíncronas permite 1 a interacção do cliente em Flash com a base de dados, com o servidor de Streaming . Ainda fazem parte do back-end, o Ffmpeg, aplicação que faz a extracção do áudio do ficheiro do vídeo, que guarda o ficheiro de som num disco rígido e adiciona o endereço desse ficheiro na base de dados. Posteriormente a aplicação realiza o processamento do áudio, que através do servidor de sockets, envia para o cliente, de modo a compor a forma de onda e o espectrograma no cliente. 1 Streaming: é um formato de transmissão de áudio e/ou vídeo via Internet ou outra rede, que é transmitido sob pedido. 46 Capítulo 4 Implementação Este capítulo pretende discutir as questões envolvidas na implementação das aplicações que, não fazendo directamente parte do sistema LiveMeans, possibilitam a sua existência, na medida em que permitem construir os modelos de som e imagem necessários para o seu funcionamento. Estas são descritas antes do próprio LiveMeans, uma vez que ajudam a compreender o fluxo de informação do sistema. Apesar de as outras aplicações descritas serem fundamentais para o funcionamento do sistema LiveMeans, na medida em que possibilitam a criação de modelos que são utilizados pelos algoritmos da empresa para reconhecimento de entidades nos conteúdos audiovisuais, estas não são parte integrante do sistema. De facto, efectuam o trabalho de background que é necessário ser feito para a aplicação poder ser utilizada, sendo que, após esse trabalho, deixam de ser utilizadas até ser necessário um aumento ou evolução dos modelos ou da base de dados de audiovisuais existente. Assim sendo, importa distinguir estas aplicações do restante sistema designado por LiveMeans, em que todos os módulos são constantemente utilizados no fluxo normal de uso da aplicação. É ainda importante salientar que o sistema LiveMeans é um sistema complexo e que vários módulos do mesmo não foram desenvolvidos no decorrer deste projecto. Esses módulos são os seguintes: • Algoritmos de análise de som, propriedade da ClusterMedia Labs. • Modificação do servidor de RTMP Red5 para possibilitar o MultiStream. • Front-end gráfico, desenvolvido por uma equipa de designers subcontratada. 47 4.1. Arquitectura Geral O diagrama de arquitectura, que é visível na figura seguinte, mostra todos os componentes envolvidos neste sistema. Este diagrama é baseado no diagrama de arquitectura do cap.3 mas, desta vez, encontra-se completo e mapeado às tecnologias. Figura 22 - Diagrama da Arquitectura geral do sistema 48 O back-end é o centro de processamento do sistema e é composto pelos seguintes módulos: 1. Servidor de Sockets: Este módulo é responsável por toda a comunicação com os clientes que se conectam ao sistema através do front-end gráfico, com o uso de um navegador Web. Os clientes enviam mensagens para o back-end e por sua vez o backend responde aos clientes, utilizando o protocolo de comunicação desenvolvido; 2. Servidor de Streaming: Este módulo é responsável pela distribuição em streaming do vídeo ou fragmentos de vídeo para serem visionados pelos utilizadores. O cliente se desejar um fragmento de vídeo envia o tempo de início para o servidor e este começa a transmitir a partir desse tempo. A transmissão termina quando o cliente assim o indicar; 3. Servidor Web: Este módulo é responsável por disponibilizar online a aplicação Flash; 4. Ffmpeg: Este módulo realiza a extracção do áudio dos ficheiros de vídeo; 5. Máquinas de Análise: Estas máquinas permitem ao sistema desenvolver mecanismos automatizados de anotação baseados em algoritmos de análise de som e imagem, com o objectivo de criar regiões para auxiliar o moroso processo de anotar. O desenvolvimento de algoritmos não se encontrava incluído no âmbito deste projecto, apenas a sua integração no sistema desenvolvido. 4.2. Base de dados A base de dados, como é possível verificar pelo diagrama seguinte, é bastante simples. A aplicação foi desenvolvida num contexto de ser incorporada, num sistema de maior dimensão existente na empresa, assim como, a base de dados. A base de dados que se apresenta foi desenvolvida para funcionar como stand-alone, independente da base de dados global, para permitir maior autonomia e celeridade no desenvolvimento da aplicação, pois o volume de dados é bastante menor. Regions Video PK id_video PK id name flv_path wav_path annotated FK1 id_video start end name automatic Users PK user_id username password contact Figura 23 - Diagrama da base de dados 49 É composta por três tabelas: a tabela Vídeo, a tabela Regions e a tabela Users. A tabela Vídeo é composta por uma lista dos vídeos a anotar e possui um identificador único designado por id_video que identifica univocamente cada vídeo. Possui também informação adicional sobre cada vídeo como o seu nome, local físico do ficheiro de vídeo, assim como do seu ficheiro de som e um campo que indica se o vídeo já foi ou não processado pelas máquinas de análise. A tabela Regions, composta pela lista de regiões anotadas, possui uma ligação à tabela Vídeo que serve para corresponder uma determinada região a um vídeo bem definido. Possui também um identificador sequencial, o id, o início e fim da região, o nome atribuído à região, importante para o output da aplicação e um campo que indica se a região foi resultado do préprocessamento automático ou do utilizador. A tabela Users é responsável pela gestão dos utilizadores. A aplicação só aceita utilizadores previamente registados na base de dados. A tabela guarda informação do username e respectiva palavra-chave de cada utilizador e ainda um campo para o e-mail do utilizador. 4.3. Segurança e Autenticação A segurança e autenticação são questões de elevada importância, no entanto como a finalidade da dissertação é o desenvolvimento de uma aplicação a ser incorporada no sistema principal da ClusterMedia Labs, o sistema de autenticação foi o adoptado para a aplicação principal. O acesso ao sistema só é permitido a utilizadores previamente registados. No sentido de tornar o sistema de autenticação bastante robusto foi desenvolvido uma metodologia, com o auxílio dos algoritmos MD5 e RSA, onde o algoritmo MD5, que é um algoritmo de criptografia com perdas, muito utilizado na Internet, é utilizado para as comunicações das palavras-chave e o RSA, que é um algoritmo sem perdas, é utilizado no back-end para garantir que o utilizador sabe mesmo a sua palavra-chave e não apenas a hash MD5 da palavra-chave. O processo de autenticação é composto por duas fases: 1. O utilizador introduz o seu Login e a sua palavra-chave. O cliente flash encripta a palavra-chave com o algoritmo MD5 e envia-a para o back-end. O back-end utilizando as suas chaves RSA, desencripta a palavra-chave registada na base de dados de utilizadores e em seguida encripta-a com o algoritmo MD5. Compara esta com a palavra-chave recebida do cliente flash, se forem iguais, o processo de autenticação passa para a fase seguinte. 2. Nesta fase, o back-end envia para o cliente, um conjunto de caracteres gerado aleatoriamente, designado por salt. Em seguinda, a aplicação flash concatena este salt 50 com a palavra-chave inserida, encripta-a com o algoritmo MD5 novamente e envia essa hash para o back-end. O servidor para validar esta hash, retira da base de dados a hash RSA da palavrachave do utilizador, desencripta-a com a chave RSA, concatena-lhe o salt e encripta-a em seguinte com o algoritmo MD5. Neste momento, as duas hash são comparadas e se forem iguais a autenticação é concluída com sucesso. 4.4. Cliente O cliente é o interface do sistema que interage com o utilizador final. É composto por três áreas distintas: • A zona superior, que contempla capturas de ecrã do vídeo; • A zona central, que corresponde ao scroller que permite ao utilizador efectuar navegação pelo vídeo; • A zona inferior que corresponde ao gráfico da forma de onda do áudio e o respectivo espectrograma onde são efectuadas as anotações. Na zona superior, conforme é visível na figura seguinte, apresenta-se quatro capturas de ecrã do vídeo, que correspondem às seguintes imagens: 1. Imagem 1: primeira frame do vídeo seleccionado; 2. Imagem 2: frame correspondente a 25% do comprimento total do vídeo; 3. Imagem 3: frame correspondente a 50% do comprimento total do vídeo; 4. Imagem 4: frame correspondente a 75% do comprimento total do vídeo. Figura 24 - Captura de ecrã: Secção superior do cliente Sempre que a área de trabalho for alterada, por exemplo, por um zoom, o cliente recalcula os novos instantes da área de trabalho e solicita o envio de novas imagens ao back-end. Na área central é possível visualizar uma barra cinzenta com um manípulo azul: Figura 25 - Captura de ecrã: Scroller 51 Denominado por “Scroller”, esta barra permite navegar pelo vídeo. O objectivo desta barra de navegação é permitir ao utilizador após efectuar algum tipo de zoom (ampliação ou redução), visualizar outra parcela do vídeo sem alterar as especificações do zoom, navegar confortavelmente pelo vídeo. Na secção inferior da aplicação cliente são visíveis dois gráficos: O primeiro representa a forma de onda do som. O vídeo ao ser introduzido no sistema é processado pelo Ffmpeg que faz a extracção da componente de áudio. Esta extracção é armazenada no back-end sob a forma de ficheiro mp3. Quando o vídeo for seleccionado para anotação, o back-end envia ao cliente a forma de onda do vídeo que é visível na figura seguinte. Esta forma de onda corresponde ao tempo total de áudio do ficheiro seleccionado. Figura 26 - Forma de onda do áudio Para permitir ao utilizador efectuar anotações com maior detalhe foi implementado um sistema de ampliação e redução. Este sistema de ampliação possui dois modos de funcionamento: 1. Ampliação e / ou redução de 2x. O utilizador escolhe a opção de ampliação no menu lateral e depois pressiona com o cursor na janela de anotação e então será efectuado a ampliação e / ou redução em torno do local onde se encontra o cursor. 2. Ampliação em modo janela. O utilizador escolhe a opção de ampliação no menu lateral e depois desenha uma janela com o cursor sobre a área dos gráficos. A ampliação é efectuada ampliando a janela desenhada para a área total da janela de anotação, como é visível no seguinte exemplo: Figura 27 - Captura de ecrã: Janela de ampliação 52 Figura 28 - Captura de ecrã: Janela de anotação após ampliação O segundo gráfico representa o espectrograma. Nas secções seguintes faz-se uma breve introdução sobre o espectrograma e como foi efectuado o seu cálculo. 4.4.1. Espectrograma O espectrograma é uma ferramenta básica na análise espectral de áudio e noutros campos. É um gráfico de intensidade das bandas de energia. A cor vermelha representa a banda com menos energia e a zona azul a mais energética. A resolução do espectrograma é o cálculo do nº de pontos utilizado para amostrar cada espectro de potência. Se o utilizador optar por uma amostragem elevada, o gráfico será mais bonito com transições suaves mas no Figura 29 - Captura de ecrã do espectrograma entanto o tempo de computação será maior (85). Os espectrogramas podem ser criados de duas formas: 1. Uma série de filtros passa-banda. Este método é utilizado normalmente em processamento analógico, onde o sinal de entrada é divido em bandas de frequência e a magnitude da saída de cada filtro controla um transdutor, o qual regista o espectrograma como uma imagem num papel (86). 2. Sinal temporal utilizando a transformada de Fourier de curta duração (STFT). 53 Este método envolve um processo digital. Para criar um espectrograma faz-se uma amostragem dos dados no domínio dos tempos e calcula-se a transformada de Fourier (FFT) em janelas temporais para determinar a magnitude do espectro em frequência para cada janela. Essa janela corresponde a uma linha vertical na imagem, uma medida da magnitude em função da frequência para um determinado momento no tempo (87). 4.4.2. Cálculo computacional A STFT deve ser reescrita adicionando mR a n: Nesta fórmula, os dados centrados no instante mR sofrem uma translação para o instante 0, depois são multiplicados pela janela e executa-se a transformada de Fourier discreta (DTFT). Visto que a parcela diferente de zero da janela está centrada no instante 0, a DFFT pode ser substituída pela DFT ou FFT. Efectivamente, isto é a amostragem da DTFT no domínio das frequências. Esta amostragem não provoca aliasing se o número de amostras em torno do círculo unitário for superior à largura (em amostras) do intervalo de tempo, incluindo todos os pontos diferentes de zero. Noutras palavras, a amostragem no eixo das frequências é a informação preservada quando o sinal for devidamente limitado no tempo. Seja M o comprimento da janela e N ≥ M o comprimento da DFT (normalmente uma potência de 2). Então a amostragem de , e sabendo o facto de que a janela é tempo limitado a menos da amostra centrada sobre o instante 0, Como a indexação da DFT é o módulo de N, o somatório depois do n pode ser rodado de 0 até N-1 como se convencionou na implementação da DFT. Na prática, isto significa que a metade direita dos dados da janela vai para o início do buffer de entrada FFT e a metade esquerda vai para o final com o valor central no meio. 54 Os espectrogramas são muito úteis no auxílio dos anotadores, pois com eles é possível interpretar eventos acústicos (como vícios de fala ou sotaques) e assim identificar correctamente os discursos e efectuar uma anotação mais precisa (88) (89). 4.4.3. Processo de anotação O processo é muito simples, pois o interface em Flash é muito intuitivo. A área de anotação é composta pelo conjunto dos dois gráficos, a forma de onda e o espectrograma, como é visível na seguinte figura. Portanto basta usar o rato e desenhar a região. Pode-se observar também sobre os dois gráficos duas regiões anotadas, uma denominada de “transformersReg” e uma outra região a vermelho. Essa região é uma nova anotação. Figura 30 - Captura de ecrã: Desenho da região A figura seguinte corresponde à captura de ecrã no momento em que o utilizador termina de desenhar a região. Pode verificar-se que apareceu um menu a cinzento com os seguintes campos: • Start: Valor temporal correspondente ao inicio da região, em segundos; • End: Valor temporal correspondente ao fim da região, em segundos; • Name: este campo é para ser preenchido pelo utilizador de modo a atribuir um nome à região. • Opções: este submenu permite a visualização do vídeo correspondente à anotação, permite também apagar a anotação e submeter a anotação. 55 Figura 31 - Captura de ecrã: Menu de opções de anotação Na figura seguinte é visível o resultado final do processo de anotação: neste momento contabilizam-se duas regiões manualmente anotadas. Pode-se afirmar que são duas regiões manualmente anotadas porque o rebordo de cada região é vermelho e o seu interior é cinzento semi-transparente. Figura 32 - Captura de ecrã com duas regiões anotadas Outra característica visível na figura anterior é um traço azul, no meio da região “transformersReg2”. Esse traço funciona como apontador para o instante que é representado no local do traço. Permite ao utilizador reproduzir o vídeo a partir do instante onde se encontra o traço. Se o traço se encontrar dentro de uma região, a reprodução decorrerá até ao final da região, caso contrário o vídeo será reproduzido na íntegra. O vídeo será reproduzido na área superior, na janela imediatamente superior à localização do traço. A figura seguinte mostra três regiões manualmente anotadas, “Iron Reg1”, “Iron Reg2” e “Iron Reg3” e uma região a verde, resultante do módulo de pré-processamento automático. Por debaixo do gráfico do espectrograma, vemos duas pequenas caixas, uma verde com a inscrição “Automatic” e outra a vermelho com a inscrição “Manual”. Essas duas caixas permitem ao utilizador retirar do ecrã, as regiões a verde ou vermelho. O objectivo é simplificar o ambiente caso já existam muitas anotações efectuadas. 56 Figura 33 - Captura de ecrã: cliente com anotações manuais e automáticas 4.5. Servidor de sockets A comunicação entre os diferentes componentes do sistema é realizada através de sockets assíncronas. O servidor de sockets, desenvolvido no Visual Studio 2008 em C++, encontra-se incorporado no back-end. O servidor funciona do seguinte modo: • O servidor cria uma socket, que escuta conexões num determinado porto que é familiar aos clientes. De seguida, define uma função de callback, invocada quando é recebida uma conexão. • Quando uma conexão é recebida, executa-se a função de callback. É criada uma estrutura para o cliente que se conectou. Cada estrutura indica o tipo de cliente que se conectou. Estas arrayLists são responsáveis por conter referências para todas as estruturas de conexão existentes, de forma a facilitar a interacção de todas as estruturas de um dado tipo. • Cada estrutura de conexão contém diversas variáveis, flags e funções, algumas comuns aos três tipos de estruturas: o Uma socket para comunicação entre cliente e back-end. o Um buffer de escrita e outro de leitura do que é enviado pela socket. o Uma função de callback, despoletada sempre que são recebidos dados na socket. Esta função interpreta as mensagens recebidas, de acordo com o protocolo estabelecido e efectua as acções necessárias. • Quando uma ligação é terminada ou perdida, a estrutura é eliminada e removida da arrayList que a refere. 57 4.6. Protocolo de comunicação Foi desenvolvido para permitir a manutenção e a escalabilidade do sistema. Este protocolo é baseado no CSV mas com algumas alterações. As mensagens são separadas pelo caracter #, ao invés do CSV original. Quando as mensagens são compostas por regiões, a mensagem é codificada em XML, de modo a simplificar o parsing para as inserções na base de dados. Tabela 1 - Protocolo de Comunicação Mensagem 01 # path_wav # winsize # n_bands “\n” Descrição Endereço do ficheiro wave, com o tamanho da janela (para efectuar o processamento do espectrograma) e o número de bandas de energia. 02 # duration | freq_amost Duração do ficheiro e frequência de amostragem 03 # Start_interval | End_interval | time_step Pedido de dados ao back-end 04 # sample_max | sample | sample | ... Resposta com amostras 05 # Start_interval | End_interval | time_step Pedido de dados ao back-end 06 # sample_max | sample | sample | ... Resposta com amostras 07 # Não utilizado 08 # Não utilizado 09 # StringXML “\n” Inserção das anotações na base de dados 10 # Inserted OK Resposta Afirmativa se inserção tiver sucesso 11 # “\n” Pedido de dados ao back-end 12 # name_FLV | path_FLV | path_wav | ... Nome do vídeo com o seu endereço e respectivo endereço do áudio 13 # “\n” Pedido de dados ao back-end 14 # id | Start | End | name | ... Lista de regiões com nº de região, tempo de inicio, fim e nome associado 15 # Reg_id “\n” Pedido de dados ao back-end: id da região 16 # Selected OK Resposta Afirmativa As mensagens que começam por número impar correspondem a uma comunicação do cliente para o back-end, nomeadamente um pedido específico e as mensagens com número parte correspondem à resposta do back-end. 58 4.7. Testes realizados Para verificação do comportamento do módulo de pré-processamento automático, foram seleccionados três vídeos do portal YouTube™. Estes vídeos apresentam as características necessárias para preencher os requisitos mínimos do sistema: um entrevistador e um convidado, várias mudanças de imagem, integração de vídeos durante a entrevista, entre outros. Para a análise do vídeo foi utilizado um algoritmo proprietário do INESCPORTO, fornecido pelo meu orientador, o Prof. Doutor Jaime Cardoso, com os seguintes resultados: Tabela 2 - Resultados obtidos pela análise ao vídeo Regiões Vídeos Interview2.flv barack.flv barack2.flv 1 0 136 0 6 0 39 2 137 179 7 72 40 275 3 180 283 73 167 276 277 4 284 349 168 231 278 308 5 350 449 232 332 309 309 6 450 450 333 608 310 343 7 451 495 609 673 344 398 8 496 556 674 755 399 400 9 557 578 756 818 401 401 10 579 657 819 985 402 402 11 658 726 986 986 403 435 12 727 825 987 1081 436 441 13 826 859 1082 1196 442 442 14 860 934 1197 1366 443 443 15 935 1054 1367 1466 444 444 16 1055 1134 1467 1552 445 499 17 1135 1159 1553 1648 500 509 18 1160 1162 1649 1649 510 510 19 1163 1163 1650 1753 511 511 20 1164 1217 1754 1822 512 512 21 1218 1312 1823 1878 513 513 59 22 1313 1371 1879 1922 514 514 23 1372 1414 1923 2574 515 1565 24 1415 1518 2575 2785 1566 1644 25 1519 1598 2786 2786 1645 1645 26 1599 1635 2787 2889 1646 1856 27 1636 1686 2890 2993 1857 2043 28 1687 1721 2994 3193 2044 2044 29 1722 1722 3194 3301 2045 2123 30 3302 3392 2124 2124 31 3393 3466 2125 2259 32 3467 3662 2260 2333 33 3663 3901 2334 2334 34 3902 4027 2335 2471 35 4028 4079 2472 2560 36 4080 4258 2561 2611 37 4259 4259 2612 2644 38 2645 2691 39 2692 2955 40 2956 2956 41 2957 3101 42 3102 3102 43 3103 3314 44 3315 3428 45 3429 3429 46 3430 3566 47 3567 3750 48 3751 3751 49 3752 3845 50 3846 3846 51 3847 4097 52 4098 4236 53 4237 4237 54 4238 4372 55 4373 4373 56 4374 4546 57 4547 4547 58 4548 4682 59 4683 4897 60 60 4898 4898 61 4899 5232 62 5233 5233 63 5234 5236 64 5237 5281 65 5282 5282 66 5283 5283 67 5284 5284 68 5285 5285 69 5286 5288 70 5289 5290 71 5291 5292 72 5293 5488 73 5489 5489 74 5490 5598 75 5599 5599 76 5600 5903 77 5904 5904 61 Capítulo 5 Conclusões Nesta secção é apresentada uma avaliação dos resultados obtidos, assim como as conclusões sobre o trabalho desenvolvido durante a realização da dissertação e as perspectivas de trabalho futuro. 5.1. Avaliação dos resultados obtidos O trabalho desenvolvido está inserido como um módulo da aplicação principal da ClusterMedia Labs, pelo que a análise das tecnologias a serem utilizadas e as suas performances são extremamente importantes. Nesse sentido, foi elaborado um detalhado estudo sobre as tecnologias a serem utilizadas. A tecnologia que foi adoptada, por ser a mais adequada e versátil para o trabalho em questão, foi o Adobe Flash, pois combina a liberdade de criação com uma linguagem de programação poderosa, o Action Script 3. Foram efectuados vários testes de desempenho ao sistema, com vários utilizadores ligados e conseguiu-se uma boa fluidez na reprodução dos vídeos nos clientes flash. No entanto, existe restrições ao número de utilizadores ligados ao sistema em simultâneo, pois o servidor de RTMP não aguenta muitos utilizadores. 5.2. Conclusões sobre a dissertação Os objectivos propostos no início desta dissertação foram totalmente atingidos. O sistema de anotação foi desenvolvido conforme os requisitos apresentados pela empresa, que incluíam o desenvolvimento de um sistema de anotação manual, com recurso ao Adobe Flash, para incluir no software principal da empresa; a incorporação e verificação de algoritmos de anotação automática, nomeadamente algoritmos de análise de áudio e imagem. 62 Para terminar, pode-se concluir que as aplicações RIA, no contexto da Web 2.0 são uma aposta segura e algo com muita projecção num futuro próximo. 5.3. Perspectivas de trabalho futuro O sistema desenvolvido na ClusterMedia Labs permite realizar a anotação de vídeos, codificados em Flash Vídeo ou em H.264, com o auxílio de um módulo de pré-anotação automática, onde o utilizador final, pode combinar anotações manuais com as automáticas e assim criar um dataset com informação ground truth. Esse dataset poderá ter inúmeras utilizações, quer a nível de criação de conhecimento, quer para facilitar a pesquisa e o acesso à informação. O protótipo desenvolvido no decorrer desta dissertação já foi incorporado na aplicação principal da empresa com sucesso, pelo que pode-se dar como concluído este projecto. A continuação deste módulo passa pelo desenvolvimento de novos algoritmos de análise de som e imagem e pela sua associação, de modo a criar um módulo pré-automático o mais fiável e objectivo. Isto é, a combinação do áudio com as imagens podem resultar numa anotação mais real e fidedigna. 63 Bibliografia 1. ClusterMedia Labs: Semantic AudioVisual Analysis Technologies. [Online] http://www.clustermedialabs.com/. 2. Incubadora de Empresas da Universidade de Aveiro. [Online] [Citação: 25 de Junho de 2008.] http://www.ua.pt/incubadora/. 3. Adi – Agência da Inovação. [Online] [Citação: 25 de Junho de 2008.] http://www.adi.pt/. 4. Rocchesso, Davide. Introduction to Sound Processing. [Online] [Citação: 15 de Janeiro de 2010.] http://profs.sci.univr.it/~rocchess/htmls/corsi/SoundProcessing/SoundProcessingBook/sp.pdf. 5. Music Facts (Performance, Harmony, Greek, Genres). [Online] [Citação: 15 de Dezembro de 2009.] http://www.artquilt.com/Music/encyclopedia.htm. 6. Cobussen, Marcel. “What is Music?”- A brief sketch of some definitions found throughout history. [Online] [Citação: 15 de Dezembro de 2009.] http://www.cobussen.com/proefschrift/300_john_cage/310_what_is_music/what_is_music.h tm. 7. John Cage, 79, a Minimalist Enchanted With Sound, Dies. [Online] [Citação: 15 de Novembro de 2009.] http://www.nytimes.com/1992/08/13/us/john-cage-79-a-minimalist-enchantedwith-sound-dies.html. 8. Patel, A.D. Music, Language, and the Brain. s.l. : Oxford University Press, 2008. 9. Fingerhut, Michael. Music Information Retrieval, or how to search for (and maybe find) music and do away with incipits. [Online] [Citação: 15 de Dezembro de 2009.] http://articles.ircam.fr/textes/Fingerhut04b/. 10. Image Processing Fundamentals. [Online] [Citação: 15 de Dezembro de 2009.] http://www.ph.tn.tudelft.nl/Courses/FIP/frames/fip.html. 11. Biswas, P. K. Digital Image Processing. [Online] [Citação: 15 de Dezembro de 2009.] http://freevideolectures.com/Signals-Systems/Digital-Image-Processing-(IIT-Kharagpur).html. 64 12. Peters, Alan. Lectures on Image Processing. [Online] 1 de June de 2007. [Citação: 15 de Dezembro de 2009.] http://www.archive.org/details/Lectures_on_Image_Processing. 13. Tinku Acharya, Ajoy K. Ray. Image Processing: Principles and Applications. s.l. : John Wiley & Sons, 2005. ISBN: 978-0-471-71998-4. 14. Pattern Recognition on the web. [Online] [Citação: 22 de Janeiro de 2010.] http://cgm.cs.mcgill.ca/~godfried/teaching/pr-web.html. 15. Ramalho, Geber. Computação Musical. [Online] [Citação: 15 de Dezembro de 2009.] http://www.cin.ufpe.br/~musica/. 16. Price, Keith. Annotated Computer Vision Bibliography. [Online] [Citação: 22 de Janeiro de 2010.] http://iris.usc.edu/Vision-Notes/bibliography/contents.html. 17. Kyn. Overview of relations between computer vision and other fields. [Online] [Citação: 28 de Janeiro de 2010.] http://en.wikipedia.org/wiki/File:CVoverview2.jpg. 18. Face Recognition Homepage. [Online] http://www.face-rec.org/. 19. Smith, Kelly. Face Recognition. [Online] http://www.biometrics.gov/Documents/FaceRec.pdf. 20. Azuma, Ronald T. A Survey of Augmented Reality . [Online] Hughes Research Laboratories. [Citação: 22 de Janeiro de 2010.] http://www.cs.unc.edu/~azuma/ARpresence.pdf. 21. Serra, Jean. Online course on mathematical morphology. [Online] [Citação: 22 de Janeiro de 2010.] http://cmm.ensmp.fr/~serra/cours/index.htm. 22. NPAR: Non-photrealistic Animation and Rendering. [Online] [Citação: 23 de Janeiro de 2010.] http://www.npar.org/. 23. OpenCV 2.0 C Reference. [Online] http://opencv.willowgarage.com/documentation/index.html. 24. OpenVIDIA: parallel GPU computer vision. Mann, James Fung and Steve. s.l. : MULTIMEDIA '05: Proceedings of the 13th annual ACM international conference on Multimedia, 2005. 25. GPUCV: A Framework for Image Processing Acceleration with Graphics Processors. Alusse, J. P. Farrugia and P. Horain and E. Guehenneux and Y. s.l. : Multimedia and Expo, 2006 IEEE International Conference, 2006. 26. Tunatic. [Online] http://www.wildbits.com/tunatic/. 27. Midomi. [Online] http://www.midomi.com/. 28. iChords. [Online] D'Accord Music Software. www.daccordmusic.com. 29. Pick, Michael. Online Video Annotation Takes A Giant Leap Forward: Meet The All-New Mojiti. [Online] [Citação: 15 de Dezembro de 2009.] 65 http://www.masternewmedia.org/video_internet_television/video-annotation/online-videoannotation-takes-a-giant-leap-20070405.htm. 30. VideoAnnEx Annotation Tool User Manual. [Online] IBM. [Citação: 25 de Junho de 2008.] http://www.research.ibm.com/VideoAnnEx/usermanual.html. 31. Multimedia Analysis and Retrieval System. [Online] IBM. [Citação: 25 de Junho de 2008.] http://www.alphaworks.ibm.com/tech/imars. 32. SPIDIR. [Online] [Citação: 25 de Junho de 2008.] http://www.ntt.co.jp/RD/OFIS/active/2002pdfe/pf12_e.pdf. 33. VideoCittà - Sistema de Armazenamento, Anotação e Acesso a Vídeos. [Online] [Citação: 25 de Junho de 2008.] http://www.si.ips.pt/ests_si/publs_pesquisa.FormView?P_ID=11834. 34. Ricoh MovieTool. [Online] [Citação: 25 de Junho de 2008.] http://ricoh.co.jp/src/multimedia/MovieTool/. 35. VIDETO Video Description Tool. [Online] [Citação: 25 de Junho de 2008.] http://www.zgdv.de/zgdv/zgdv/departments/zr4/Produkte/videto. 36. Microsoft Research Annotation System (MARS). [Online] [Citação: 25 de Junho de 2008.] http://research.microsoft.com/research/coet/MRAS/WWW8/paper.htm. 37. Microsoft Research - Collaborative and Multimedia Systems. [Online] [Citação: 25 de Junho de 2008.] http://research.microsoft.com/coet/. 38. FilmEd Project. [Online] [Citação: 25 de Junho de 2008.] http://en.wikipedia.org/wiki/Distributed_Systems_Technology_Centre. 39. The Sound Forge Product Family. [Online] Sony. [Citação: 15 de Junho de 2008.] http://www.sonycreativesoftware.com/products/soundforgefamily.asp. 40. LabelMe: The open annotation tool. [Online] M.I.T. [Citação: 25 de Junho de 2008.] http://labelme.csail.mit.edu/. 41. Bryan C. Russell, Antonio Torralba, Kevin P. Murphy, William T. Freeman. LabelMe: a database and web-based tool for image annotation. [Online] [Citação: 25 de Junho de 2008.] http://people.csail.mit.edu/brussell/research/AIM-2005-025-new.pdf. 42. ActionScript Technology Center. [Online] Adobe Developer. http://www.adobe.com/devnet/actionscript/. 43. Macromedia Flash Support Center. [Online] Adobe. http://www.adobe.com/support/flash/action_scripts.html. 44. Stroustrup, Bjarne. A History of C++: 1979−1991. [Online] http://www2.research.att.com/~bs/hopl2.pdf. 45. Ruby Programming Language. [Online] http://www.ruby-lang.org/en/. 66 46. Pine, Chris. Learn to program. [Online] http://pine.fm/LearnToProgram/. 47. Ruby in Twenty Minutes. [Online] http://www.rubylang.org/en/documentation/quickstart/. 48. Pickaxe - Ruby. [Online] http://www.rubycentral.com/pickaxe/. 49. Gay, Jonathan. The History of Flash. [Online] Adobe. http://www.adobe.com/macromedia/events/john_gay/index.html. 50. Flex Development. [Online] http://www.informiv.com/flex_development.asp. 51. Flex - open source framework. [Online] Adobe. http://www.adobe.com/products/flex/. 52. Air - rich Internet Applications. [Online] Adobe. http://www.adobe.com/products/air/. 53. Adobe AIR resources. [Online] Adobe. http://www.adobe.com/support/documentation/en/air/. 54. Ruby on Rails. [Online] http://www.rubyonrails.org/. 55. Help and documentation for the Ruby programming language. RUBY-DOC.ORG. [Online] http://www.ruby-doc.org/. 56. Silverlight - Media Technical Details. [Online] Microsoft. http://www.microsoft.com/silverlight/overview/mediaDetail.aspx. 57. Sneath, Tim. Introducing Microsoft Silverlight. [Online] [Citação: 25 de Junho de 2008.] http://blogs.msdn.com/tims/archive/2007/04/15/introducing-microsoft-silverlight.aspx. 58. Oficial Microsoft Silverlight. [Online] Microsoft. [Citação: 25 de Junho de 2008.] http://silverlight.net/. 59. Microsoft Visual Studio. [Online] Microsoft. [Citação: 25 de Junho de 2008.] http://msdn.microsoft.com/vstudio/products/. 60. Winett, Joel M. The Definition of a Socket. [Online] Lincoln Laboratory. [Citação: 25 de Junho de 2008.] http://tools.ietf.org/html/rfc147. 61. Berkeley Sockets. [Online] [Citação: 25 de Junho de 2008.] http://phobos.ramapo.edu/~vmiller/AdvancedUnix/berkeley_socket.htm. 62. Ohlund, Anthony Jones and Jim. Network Programming for Microsoft Windows. s.l. : Microsoft Press, 2002. 63. TCP/IP Raw Sockets. [Online] MSDN. [Citação: 25 de Junho de 2008.] http://msdn.microsoft.com/en-us/library/ms740548.aspx. 64. Beej's Guide to Network Programming - Using Internet Sockets. [Online] [Citação: 25 de Junho de 2008.] http://beej.us/guide/bgnet/. 67 65. Client / Server Programming with TCP/IP Sockets. [Online] [Citação: 25 de Junho de 2008.] http://devmentor.org/articles/network/Socket%20Programming.pdf. 66. Server Sockets. [Online] [Citação: 25 de Junho de 2008.] http://www.cafeaulait.org/course/week12/24.html. 67. Open Source Flash. [Online] RED 5. http://osflash.org/red5. 68. Gupta, Sunil Kumar. How to create a sample application using Red5 and Flash. [Online] http://sunil-gupta.blogspot.com/2007/03/how-to-create-sample-application-using.html. 69. Affonso, Rafael. Protocolo RTMP. [Online] http://rafow.wordpress.com/2008/05/26/protocolo-rtmp/. 70. FFmpeg Project Description. [Online] http://ffmpeg.mplayerhq.hu/. 71. Video Learning Guide for Flash CS4 Professional. [Online] Adobe. http://www.adobe.com/devnet/flash/articles/video_guide.html. 72. Encode, Deliver, Design: Getting a Grip on Flash Video. [Online] Adobe Developer. http://www.adobe.com/devnet/flash/articles/flv_howto.html. 73. FLV/F4V Technology Center. [Online] Adobe. http://www.adobe.com/devnet/flv/. 74. Learn flv files and flv knowlegde. [Online] AUNsoft. http://www.aunsoft.com/what-is-flv/. 75. MySQL - The world's most popular open source database. [Online] Sun Microsystems, Inc. http://www.mysql.com/. 76. Structured Query Language (SQL). [Online] http://databases.about.com/od/sql/a/sqlbasics.htm. 77. Webyog Software. [Online] http://www.webyog.com/en/. 78. Subversion is an open source version control system. Tigris.org - Open Source Software Engineering Tools. [Online] http://subversion.tigris.org/. 79. TortoiseSVN. [Online] http://tortoisesvn.tigris.org/. 80. Security Solutions for Business Acceleration. RSA, The Security Division of EMC. [Online] http://www.rsa.com/. 81. The MD5 Message-Digest Algorithm. [Online] http://tools.ietf.org/html/rfc1321. 82. World Wide Web Consortium (W3C). [Online] [Citação: 19 de Janeiro de 2010.] http://www.w3.org/. 83. The WAVE File Format. [Online] [Citação: 25 de Junho de 2008.] http://www.lightlink.com/tjweber/StripWav/WAVE.html. 84. Microsoft WAVE soundfile format. [Online] [Citação: 25 de Junho de 2008.] http://ccrma.stanford.edu/courses/422/projects/WaveFormat/. 68 85. Spectrogram Reading. [Online] http://cslu.cse.ogi.edu/tutordemos/SpectrogramReading/spectrogram_reading.html. 86. Truax, Barry. Spectrogram. Handbook for Acoustic Ecology . [Online] [Citação: 28 de Janeiro de 2010.] http://www.sfu.ca/sonic-studio/handbook/Spectrograph.html. 87. Smith, Julius O. The Short-Time Fourier Transform. [Online] [Citação: 28 de Janeiro de 2010.] http://www.dsprelated.com/dspbooks/sasp/Short_Time_Fourier_Transform.html. 88. A. V. Oppenheim, R. W. Schafer e J. R. Buck. Discrete-Time Signal Processing, 2nd edition. s.l. : Prentice-Hall, 1999. 89. Paolo Prandoni, Martin Vetterli. Signal Processing for Communications. s.l. : EPFL Press, 2008. 69