Serviço de VoD (Video on Demand) usando
DRM (Digital Rights Management)
Pedro César
Vitor Hugo dos Santos Barbosa
Orientador FEUP
Orientador INESC
Faculdade de Engenharia da Uni
Departamento de Engenharia Electrotécnica e de Computadores
Rua Roberto Frias, s/n, 4200
Serviço de VoD (Video on Demand) usando
DRM (Digital Rights Management)
Pedro César de Bessa Magalhães Oliveira
Vitor Hugo dos Santos Barbosa
Orientador FEUP – Artur Pimenta Alves
Orientador INESC – Maria Teresa Andrade
Faculdade de Engenharia da Universidade do Porto
Departamento de Engenharia Electrotécnica e de Computadores
Rua Roberto Frias, s/n, 4200-465 Porto, Portugal
Julho de 2007
Serviço de VoD (Video on Demand) usando
DRM (Digital Rights Management)
Magalhães Oliveira
Artur Pimenta Alves
Maria Teresa Andrade
versidade do Porto
Departamento de Engenharia Electrotécnica e de Computadores
465 Porto, Portugal
Serviço VoD (Video on Demand) usando
DRM (Digital Rights Management)
Pedro César de Bessa Magalhães Oliveira
Vitor Hugo dos Santos Barbosa
Trabalho realizado no âmbito da disciplina de Projecto, Seminário
ou Trabalho de Fim de Curso, do 2º semestre, do 5º ano, da
Licenciatura em Eng. Electrotécnica e de Computadores, Ramo
Sistemas Telecomunicações, Electrónica e Computadores da
Faculdade de Engenharia da Universidade do Porto.
Faculdade de Engenharia da Universidade do Porto
Departamento de Engenharia Electrotécnica e de Computadores
Rua Roberto Frias, s/n, 4200-465 Porto, Portugal
Julho de 2007
Resumo
O presente documento descreve um serviço de Video On Demand usando DRM desenvol-
vido no âmbito da disciplina de PSTFC e realizado nas instalações da Unidade de Teleco-
municações e Multimédia do INESC Porto.
O objectivo final deste serviço visa proporcionar ao cliente a possibilidade de visualizar
um filme desde que possua licença para isso. Deste modo, é condição necessária para o
acesso ao serviço a utilização de um computador com ligação à Web, um reprodutor mul-
timédia com codec MPEG-4 (por exemplo, QuickTime) e por fim um Web Browser. Exis-
te também uma solução de acesso alternativa, cuja opção não dispensa os requisitos ante-
riormente definidos, que se resume a uma aplicação cliente que permite, não só as mesmas
funcionalidades definidas pela solução do Web Browser, mas também a possibilidade de
ver um filme armazenado localmente, não descuidando as verificações necessárias e que
são o objecto central deste projecto.
A arquitectura do serviço é do tipo cliente – servidor, sendo que do lado do servidor, este é
constituído por um repositório de bitstreams de vídeo MPEG-4, uma aplicação de strea-
ming de vídeo (Darwin Streaming Server), uma outra para disponibilizar páginas Web
dinâmicas on-line (Apache2 e PHP5) e por fim uma base de dados (PostgreSQL) que
armazena a informação dos clientes, das suas preferências e licenças bem como toda a
informação relacionada com cada filme. No servidor estão também instalados mecanismos
de gestão pelo que é possível administrar remotamente a base de dados e a aplicação do
Darwin Streaming Server, sendo que a administração desta ultima permite monitorizar o
estado das ligações estabelecidas e tomar medidas de controlo como, baixar o débito do
fluxo de vídeo ou, em caso extremo, terminar a ligação.
O cliente para aceder à totalidade dos serviços necessita ter uma conta pessoal, registando-
se na aplicação e apenas poderá visualizar algum dos filmes se possuir licença, a qual
poderá ser gerada pela nossa aplicação, via acesso Browser ou Aplicação Cliente. A visu-
lização via Browser far-se-á em tempo real directamente da Web, no entanto também é
possível fazer o download do filme, armazena-lo localmente e através da nossa aplicação
visualiza-lo desde que tenha uma licença que satisfaça o requisito do filme escolhido.
Palavras-chave: projecto Video on Demand, DRM, MPEG-4, conteúdo digital, licença.
LISTA DE TABELAS VII
Abstract
This document provides details on a Video on Demand system protected by DRM, devel-
oped in the scope of our final project and created on the Unidade de Telecomunicações e
Multimédia installations of INESC Porto.
This service aims to provide the possibility of playing an audiovisual content since there is
a consumption license for the required media. As a web-based service it is necessary an
internet connection, a web browser and a multimedia player (for example Quicktime) in-
stalled with MPEG-4 codec. As an alternative access solution there is a client application,
where the previous requirements must be fulfilled, that allows the user to play an audiovi-
sual content locally stored in addiction to the online functionalities. As being central for
this project, the license terms and conditions must be met before the playing authorization.
The implemented service has a client-server’s type architecture. The server is established
with a set of MPEG-4 files, a streaming server application (Darwin Streaming Server), a
dynamic web page server application (Apache 2 and PHP 5) and a database solution
(PostgreSQL). This database stores client’s information, preferences and licenses as well
as all the information related to each movie. There are also some tools, included in the
server, capable of providing the database’s and streaming server’s remote management,
enabling examination of the media connection status and taking control measures, like
reducing the bit rate or, in extreme cases, terminating connection.
The user must have a personal account to take advantage of the whole number of services,
which can be done by registering on the web application, and must hold a license that,
generated by the application, allows playing an audiovisual content.
Keywords: Video on Demand project, DRM, MPEG-4, digital content representation, li-
cense.
LISTA DE TABELAS IX
Agradecimentos
Gostaríamos de agradecer ao INESC Porto – Instituto de Engenharia de Sistemas e Com-
putação do Porto – todo o equipamento e local de trabalho disponibilizados, tal como a
ajuda, disponibilidade e empatia de todos os colaboradores da UTM – Unidade de Tele-
comunicações e Multimédia, em particular o Engenheiro Filipe Sousa. Agradecemos ainda
a importante orientação da Engenheira Maria Teresa Andrade e do Professor Pimenta
Alves para a realização deste projecto.
LISTA DE TABELAS XI
Índice
1 Introdução 1
1.1 Enquadramento ................................................................................................................... 1
1.2 Motivação ............................................................................................................................ 1
1.3 Objectivos ........................................................................................................................... 2
1.4 Estrutura do Relatório ......................................................................................................... 4
2 Contexto e Tecnologias de suporte 5
2.1 O Conceito de licenças ........................................................................................................ 5
2.1.1 Digital Rights Management (DRM) ............................................................................. 5
2.1.2 MPEG-21 REL ............................................................................................................. 6
2.1.3 VISNET II .................................................................................................................... 7
2.1.4 TIRAMISU ................................................................................................................. 11
2.1.5 Digital Media Project .................................................................................................. 14
2.1.6 Creative Commons ..................................................................................................... 16
2.2 Tecnologias e Protocolos .................................................................................................. 17
2.2.1 RTP (Real-Time Protocol) .......................................................................................... 18
2.2.2 RTCP (Real-Time Control Protocol) .......................................................................... 18
2.2.3 RTSP (Real Time Streaming Protocol) ...................................................................... 18
2.3 MPEG-4 ............................................................................................................................ 19
2.4 Darwin Streaming Server .................................................................................................. 20
3 Arquitectura do sistema 23
3.1 Identificação dos requisitos e arquitectura ........................................................................ 23
3.2 Configuração do Sistema Base .......................................................................................... 25
3.2.1 O Sistema Operativo ................................................................................................... 25
3.2.2 O Servidor Apache HTTP .......................................................................................... 26
3.2.3 O PHP ......................................................................................................................... 27
3.2.4 Base de Dados PostgreSQL ........................................................................................ 27
3.2.5 O phpPgAdmin ........................................................................................................... 28
3.2.6 Secure Shell ................................................................................................................ 28
3.2.7 O servidor Tomcat ...................................................................................................... 29
3.2.8 O Axis ......................................................................................................................... 30
3.2.9 O LPD ......................................................................................................................... 30
3.2.10 O Darwin Streaming Server ....................................................................................... 31
4 Sistema baseado em Aplicação Web 33
4.1 O Servidor ......................................................................................................................... 33
4.1.1 As tecnologias utilizadas ............................................................................................ 34
4.1.1.1 HTML .................................................................................................................. 34
4.1.1.2 Smarty .................................................................................................................. 34
4.1.1.3 Pear ....................................................................................................................... 35
4.1.2 Os tipos de utilizador .................................................................................................. 35
4.1.3 O mapa da aplicação Web .......................................................................................... 35
4.1.4 A Criação das Licenças ............................................................................................... 41
4.1.5 A Base de Dados ......................................................................................................... 45
4.1.5.1 Descritores TV-Anytime ...................................................................................... 45
4.1.5.2 Outros descritores usados ..................................................................................... 48
4.2 O Cliente ........................................................................................................................... 49
4.2.1 O Browser ................................................................................................................... 50
4.2.2 O Reprodutor MPEG-4 ............................................................................................... 50
4.3 A conexão ao servidor de streaming ................................................................................. 50
4.4 Caso de utilização .............................................................................................................. 52
5 Sistema baseado na Aplicação Cliente residente 55
5.1 O Servidor ......................................................................................................................... 56
5.2 O Cliente ........................................................................................................................... 56
5.2.1 As características da aplicação.................................................................................... 57
5.2.2 Reprodução dos conteúdos digitais ............................................................................. 58
5.3 Caso de utilização .............................................................................................................. 58
5.4 Cliente fiável ..................................................................................................................... 61
6 Conclusões 63
7 Perspectivas de Desenvolvimento 65
Apêndice A – Base de dados 71
A.1 Tabelas .............................................................................................................................. 71
A.2 Relações entre as tabelas ................................................................................................... 73
Apêndice B – Aplicação Web 75
B.1 Apresentação da aplicação ................................................................................................ 75
B.2 Manual da aplicação web .................................................................................................. 76
Apêndice C – Aplicação Cliente 83
LISTA DE TABELAS XIII
C.1 Modo Online ..................................................................................................................... 83
C.2 Modo Local ....................................................................................................................... 85
C.3 Código em Visual Basic da aplicação cliente ................................................................... 88
LISTA DE TABELAS XV
Lista de Figuras
FIGURA 1 – O MODELO DE DADOS DA LICENÇA MPEG REL ............................................................ 7
FIGURA 2 – ARQUITECTURA DMAG-MIPAMS ................................................................................ 8
FIGURA 3 – CASO DE UTILIZAÇÃO DA REPRODUÇÃO DE UM CONTEÚDO PROTEGIDO ..................... 10
FIGURA 4 – ARQUITECTURA DO PROJECTO TIRAMISU ................................................................. 12
FIGURA 5 – SISTEMA DE GESTÃO DE CHAVES DO PROJECTO TIRAMISU ....................................... 13
FIGURA 6 – CONCEITO DE UM DOMÍNIO DE UTILIZADOR (HOME DOMAIN) .................................... 13
FIGURA 7 – DIAGRAMA REPRESENTATIVO DA ESTRUTURA DO CHILLOUT ..................................... 16
FIGURA 8 – PILHA PROTOCOLAR TÍPICA EM SISTEMAS DE TRANSMISSÃO DE VÍDEO SOBRE IP. ...... 18
FIGURA 9 – ARQUITECTURA DO SISTEMA DE VIDEO ON DEMAND A DESENVOLVER ...................... 24
FIGURA 10 – SERVIDOR HTTP ........................................................................................................ 26
FIGURA 11 – APARÊNCIA GRÁFICA DO PHPPGADMIN ..................................................................... 28
FIGURA 12 – A ARQUITECTURA DO SERVIDOR ................................................................................ 33
FIGURA 13 – MENU FILMES PRESENTE NA APLICAÇÃO WEB .......................................................... 36
FIGURA 14 – MENU ACTORES PRESENTE NA APLICAÇÃO WEB ....................................................... 37
FIGURA 15 – MENU REALIZADORES PRESENTE NA APLICAÇÃO WEB ............................................. 37
FIGURA 16 – MENU DISTRIBUIDORES PRESENTE NA APLICAÇÃO WEB ........................................... 37
FIGURA 17 – MENU LICENÇAS PRESENTE NA APLICAÇÃO WEB ...................................................... 38
FIGURA 18 – MENU REFERENTE À ÁREA PESSOAL DO UTILIZADOR NA APLICAÇÃO WEB .............. 38
FIGURA 19 – ESTRUTURA DA NAVEGABILIDADE DA INTERFACE WEB ........................................... 40
FIGURA 20 - A INTERFACE DO LPD ................................................................................................. 41
FIGURA 21 - DIREITO PARA REPRODUZIR ....................................................................................... 41
FIGURA 22 - EXEMPLO DE UMA COMBINAÇÃO DEFINIDA PELO UTILIZADOR .................................. 42
FIGURA 23 – INTERFACE PARA A CRIAÇÃO DE LICENÇAS ............................................................... 42
FIGURA 24 – A ARQUITECTURA NO LADO CLIENTE ........................................................................ 50
FIGURA 25 – TROCA DE MENSAGENS ENTRE O CLIENTE E A APLICAÇÃO WEB ............................... 52
FIGURA 26 – A ARQUITECTURA DO SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE ........ 55
FIGURA 27 - TAB ONLINE E LOCAL ................................................................................................. 57
FIGURA 28 – O MENU VER............................................................................................................... 57
FIGURA 29 - EDITAR DADOS DE LOGIN NO MENU EDITAR .............................................................. 58
FIGURA 30 - A ACESSIBILIDADE DA INTERFACE .............................................................................. 58
FIGURA 31 – TROCA DE MENSAGENS ENTRE A APLICAÇÃO CLIENTE E O SERVIDOR ....................... 59
LISTA DE TABELAS XVII
Lista de Tabelas
TABELA 1 - DESCRIÇÃO DOS COMANDOS/MENSAGENS USADOS NO PROTOCOLO RTSP ................. 19
TABELA 2 - DESCRITORES BÁSICOS DO TV-ANYTIME .................................................................... 46
TABELA 3 – DESCRITORES DE ATRIBUTOS TÉCNICOS ..................................................................... 47
GLOSSÁRIO XIX
Glossário
AAC – Advanced Audio Coding (AAC), é um formato de áudio, que recorre a compressão
com perda de dados. Foi projectado como um codec de desempenho melhor em relação ao
MP3, sendo promovido como seu sucessor para codificação de áudio em taxas de bits
médias a altas.
Aspect Ratio – Formato de imagem definido como a divisão entre a maior dimensão (hori-
zontal) e a menor dimensão (vertical) de uma imagem sendo expresso na forma “h:v”.
Toma normalmente os valores 4:3 ou 16:9.
AVC – Advanced Video Coding (AVC), é uma norma de compressão de vídeo desenvol-
vida conjuntamente entre o ITU-T e ISO/IEC Moving Pictures Experts Group (MPEG)
providenciando uma melhoria na compressão mantendo uma boa qualidade de imagem. É
usado como o motor de compressão para MPEG-4.
Base de dados – Conjuntos de dados com uma estrutura regular que organizam informação
utilizadas normalmente para um mesmo fim.
Browser – É uma aplicação de software que possibilita aos seus utilizadores verem e inte-
ragirem com páginas de hipertexto, tipicamente páginas web localizadas no World Wide
Web (WWW) ou numa rede local.
Certificado – Certificado digital é um documento digital que descreve as permissões que
um utilizador possui para aceder ou usar um serviço ou recurso.
Código fonte aberto – em inglês Open Source. É um tipo de software cujo código fonte é
visível publicamente e pode ser alterado de acordo com os objectivos do utilizador.
Copyright – É um conjunto de direitos exclusivos regulando o uso de uma expressão, ideia
ou informação particular. Em termos digitais é o nome dado ao direito que o autor tem de
controlar o uso que se faz das suas obras sendo garantido ao autor os direitos morais e
patrimoniais sobre a obra que criou.
Creative Commons – Creative Commons (também conhecido pela sigla CC) pode deno-
minar tanto um conjunto de licenças normalizadas para gestão aberta, livre e compartilha-
da de conteúdos e informação, como a organização homónima sem fins lucrativos norte-
americana que os redigiu e mantém a actualização e discussão a respeito das mesmas.
DCF – DMP Content Format (DCF), é o formato de ficheiro utilizado pelo projecto DMP
para a distribuição de conteúdos digitais associados à metadata e à licença para esse con-
teúdo.
Descrambling – Descodificar uma mensagem ou sequência de dados digitais, que de outra
forma seria imperceptível.
DMP – Digital Media Project (DMP), organização formada com o objectivo de promover
o desenvolvimento e distribuição de conteúdos audiovisuais respeitando os direitos dos
criadores de forma a explorar os seus trabalhos fornecendo todas as funcionalidades requi-
sitadas pelos utilizadores finais.
DNS – Domain Name System (DNS), é um sistema de gestão de nomes hierárquico e dis-
tribuído capaz de traduzir o nome de um computador no seu endereço IP. Permite ainda a
localização de uma máquina num determinado domínio.
Download – É a transferência de dados de um computador remoto para um computador
local.
DRM – Digital Rights Management (DRM), tecnologia utilizada pelos criadores e distri-
buidores de conteúdos digitais para controlar o acesso ou uso desse mesmo conteúdo
impondo algumas restrições.
Encriptação – É a transformação da informação na sua forma original para outra forma
ininteligível, a menos que seja conhecida a sua chave de desencriptação, o que torna difícil
de ser lida por alguém que não possua essa chave. Garante-se assim, que só o receptor da
mensagem e que possui a chave pode ler a informação.
Firewall – Considerado um dispositivo de uma rede de computadores que tem por função
regular o tráfego entre redes distintas e impedir a transmissão e/ou recepção de dados
nocivos ou não autorizados.
Framework – No caso de software, uma Framework é uma estrutura de suporte, em que
um outro projecto de software pode ser organizado e desenvolvido. Pode incluir progra-
mas de suporte, bibliotecas de código, linguagens de script e outros softwares para ajudar
a desenvolver e juntar diferentes componentes de um projecto.
Home Domain – Domínio de utilizador que agrupa todos os dispositivos do mesmo utili-
zador com iguais direitos e restrições.
HTML – Hypertext Markup Language (HTML), uma linguagem de marcação utilizada
para produzir páginas na Web que podem ser interpretados por web browsers (navegado-
res web).
HTTP – Hypertext Transfer Protocol (HTTP), um protocolo da camada de Aplicação do
modelo OSI utilizado para transferência de dados na rede mundial de computadores, a
World Wide Web. Transfere também dados de hipermédia (imagens, sons e textos).
Interoperabilidade – É a capacidade de um sistema comunicar de forma transparente com
outro sistema (semelhante ou não). Para um sistema ser considerado interoperável, é muito
importante que ele trabalhe com normas abertas.
Java – Java é uma linguagem de programação orientada aos objectos. Ao contrário das
linguagens convencionais que são compiladas para código máquina, a linguagem Java é
compilada para um "bytecode" que é executado por uma máquina virtual.
GLOSSÁRIO XXI
Metadata – Por vezes traduzido como metadados, são dados capazes de descrever outros
dados. De acordo com a definição do W3C, metadados são informações localizadas na
web, inteligíveis por um computador, utilizados para descrever um dado primário.
MPEG 21 – Norma desenvolvida pelo grupo Moving Pictures Experts Group (MPEG)
com o objectivo de definir uma Framework aberta para aplicações multimédia e promover
a transacção dos conteúdos multimédia. É baseado em dois conceitos essenciais: a defini-
ção de uma unidade fundamental de distribuição e transacção, o item digital, e o conceito
de utilizadores que interagem com esses itens. Define um padrão Rights Language
Expression (REL) como um meio de partilhar as permissões, restrições e direitos digitais
de um conteúdo digital desde o autor do conteúdo até ao seu consumidor.
MPEG 4 – MPEG-4 é uma norma utilizado inicialmente para compressão de dados digi-
tais de áudio e vídeo (AV). Este padrão introduziu novas funcionalidades como a codifica-
ção orientada aos objectos, interactividade com os conteúdos e acesso universal. Permitiu
uma maior eficiência na compressão relativamente às normas anteriormente disponíveis.
Multimédia – É o campo que se ocupa com a integração controlada por computador de
texto, gráficos, imagens, vídeos, animação, sons e quaisquer outros meios em que todo o
tipo de informação possa ser representada, armazenada, transmitida e processada digital-
mente devendo permitir a interactividade com o utilizador.
Near Video on Demand – É uma técnica de vídeo pay-per-view usada por redes de televi-
são multi-canais usando banda larga com os dados e imagens enviados por satélite ou
cabo. Várias cópias de um programa são enviadas distanciadas entre curtos intervalos de
tempos, dispensando a obrigação de o utilizador se sintonizar numa determinada hora.
Offline – Fora de linha, significa que não tem conectividade com a rede estando indispo-
nível para aceder a conteúdos fora do seu âmbito local.
Online – Significa estar ligado/conectado a uma rede, normalmente a World Wide Web,
estando disponível para aceder a recursos que não estejam armazenados localmente.
Overhead – Overhead é geralmente considerado qualquer processamento ou armazena-
mento em excesso, seja de tempo de computação, de memória, de largura de banda ou
qualquer outro recurso que seja requerido para ser utilizado ou gasto para executar uma
determinada tarefa.
Página dinâmica – O conteúdo (texto, imagens, formulários, etc.) numa página dinâmica
pode-se alterar em resposta a diferentes contextos ou condições permitindo uma experiên-
cia interactiva. Para criar essa interactividade podem ser utilizados scripts do lado do ser-
vidor, que modificam a informação obtida numa página web, ou scripts do lado do cliente
permitindo modificar a comportamento de uma interface. Linguagens como PHP, JSP,
ASP.Net produzem interfaces dinâmicas criadas do lado do servidor.
Parental Rating – Informação criada com o objectivo de dar uma ideia sobre os conteúdos
disponibilizados, indicando se são apropriados para uma criança/adulto.
Perl – Perl é uma linguagem de programação estável e multiplataforma. Foi largamente
adoptada pelas suas potencialidades em processamento de strings (variáveis de texto) e por
ser resistente a falhas arbitrárias, destacando-se o seu uso no desenvolvimento de aplica-
ções web de todos os tipos.
PHP – Hypertext Pre-Processor (PHP), é uma linguagem de programação de computado-
res interpretada, livre e muito utilizada para gerar conteúdo dinâmico na Web, orientada
aos objectos.
Protocolo – Protocolo é um padrão que especifica o formato de dados e as regras a serem
seguidas especificando como um programa deve preparar os dados para serem enviados
para o estado seguinte do processo de comunicação.
QoS – Qualidade de Serviço (Quality of Service – QoS) é o resultado da introdução de
mecanismos que pretendem oferecer ao utilizador requisitos como reserva de largura de
banda, redução do tempo de atraso e da sua variação, diminuição da probabilidade de erro
e o aumento da disponibilidade do serviço para valores próximos da total permanência.
Scrambling – Scrambling significa codificar uma mensagem ou sequência de dados digi-
tais, utilizando para isso um baralhador. Para descodificar essa sequência é necessária
saber qual a ordem com que os dados foram baralhados.
Servidor – Um servidor é uma máquina que oferece serviços a uma rede de computadores.
A rede é assim do tipo cliente-servidor.
Smartcard – Smartcard é um cartão que geralmente se assemelha em forma e tamanho a
um cartão de crédito convencional de plástico mas produzido com circuitos integrados
embebidos no próprio cartão sendo capaz de armazenar e processar informação.
Software – Um software consiste num programa desenhado de forma a permitir a um
computador desempenhar tarefas específicas.
Streaming – Streaming é a tecnologia que permite o envio de informação multimédia atra-
vés de pacotes, utilizando uma rede de computadores. A informação é normalmente rece-
bida e apresentada ao utilizador ao mesmo tempo que está a ser entregue pelo fornecedor.
Unix – Unix é um sistema operativo, multitarefa e multiutilizador originalmente criado
por Ken Thompson, que trabalhava nos Laboratórios Bell (Bell Labs) da AT&T. O siste-
ma Unix é constituído por vários componentes como o Kernel, o ambiente de desenvolvi-
mento, bibliotecas, documentos e comandos. O grande sucesso deste tipo de sistema ope-
rativo levou ao aparecimento de distribuições gratuitas baseadas em Unix, entre elas o
Linux.
URI – Uniform Resource Identifier (URI), é uma sequência de caracteres usada para iden-
tificar um nome (URN) ou um recurso (URL). O objectivo principal deste tipo de identifi-
cação é permitir a interacção com os recursos através de uma rede, tipicamente a World
GLOSSÁRIO XXIII
Wide Web, usando protocolos específicos. Os URIs são definidos seguindo um esquema,
definindo uma sintaxe específica e os protocolos associados.
URL – Uniform Resource Locator (URL) é um endereço de um recurso disponível numa
rede, seja a internet ou uma rede empresarial, a intranet. O URL tem a seguinte estrutura:
protocolo://máquina/caminho/recurso
Video on Demand (VoD) – Em português vídeo a pedido, é uma aplicação em que o utili-
zador pode seleccionar e requisitar o acesso a um conteúdo específico através de uma rede
como parte de sistema interactivo de televisão. O acesso pode ser através do streaming em
tempo real do conteúdo ou através da realização do download e posterior visualização.
Qualquer que seja o método, o vídeo a pedido oferece total controlo ao utilizador sendo
que este pode executar qualquer comando como stop, pause, play, fast forward, rewind,
etc.
VoIP – Voice over IP (VoIP), é o encaminhamento de conversas de voz através da internet
ou de outra rede baseada em IP, tornando a transmissão de voz mais um dos serviços
suportados pela rede de dados.
WWW – A World Wide Web (que significa "rede de alcance mundial", em inglês; tam-
bém conhecida como Web e WWW) é um sistema de documentos hipermédia interligados
usando a Internet. Para visualizar a informação, pode-se usar um programa de computador
chamado navegador (web browser) para descarregar informações de servidores web e
mostrá-los no monitor do utilizador.
XML – Extensible Markup Language (XML), é uma recomendação da W3C para gerar
linguagens de marcação para necessidades especiais. É classificado com uma linguagem
extensível porque permite aos utilizadores definir as suas próprias marcas. O seu principal
objectivo é facilitar a partilha de informação através de diferentes sistemas de informação,
particularmente a internet.
Capítulo 1
1 Introdução
1.1 Enquadramento
O trabalho descrito neste relatório insere-se no âmbito da disciplina de Projecto, Seminá-
rio ou Trabalho de Fim de Curso (PSTFC) da Licenciatura em Engenharia Electrotécnica e
de Computadores (LEEC), Ramo Sistemas Telecomunicações, Electrónica e Computado-
res (TEC). O projecto decorreu nas instalações do INESC1 Porto sob proposta da investi-
gadora INESC Maria Teresa Andrade e sob supervisão do professor Artur Pimenta Alves
da Faculdade de Engenharia da Universidade do Porto (FEUP).
1.2 Motivação
A Internet tornou-se na infra-estrutura de telecomunicações por excelência. O aparecimen-
to e desenvolvimento da banda larga, com os avanços tecnológicos quanto à capacidade de
processamento e armazenamento de dados possibilitaram a emergência de tecnologias que
permitem a interacção entre diversos utilizadores em tempo real a grande distância e a um
baixo custo.
Num horizonte futuro mas não muito distante, as velocidades de banda larga atingirão
valores consideráveis permitindo soluções avançadas de comunicações, informação e
entretenimento onde se destacam aplicações multimédia como a televisão de alta defini-
ção, Video on Demand (VoD) e videoconferência.
O desafio que se revela importante nesta altura é a antecipação das necessidades dos con-
sumidores, melhorando a resposta aos seus interesses, através de mais e melhores serviços
e funcionalidades disponibilizadas. Para consolidar esta posição torna-se necessário posi-
cionar o cliente como o objecto central de negócio sendo que este poderá aceder ao servi-
ço que quiser (voz, dados, vídeo), quando quiser (24h/dia) e onde quiser (em qualquer
ponto do globo).
1 Instituto de Engenharia de Sistemas e Computadores
2 CAPÍTULO 1: INTRODUÇÃO
As empresas que disponibilizam serviços através da internet precisam assim de ser inova-
doras, de apresentar e apostar em soluções capazes de trocar informação de forma organi-
zada e estruturada, dinâmica, de baixo custo e fiável, oferecendo soluções personalizáveis
e atractivas para o consumidor não descurando a eficácia, eficiência e agradabilidade em
termos de usabilidade do sistema criado.
Nos últimos anos, após o crescimento da banda larga e do aparecimento de formatos nor-
malizados como o MPEG-4 possibilitando maiores taxas de compressão e interactividade
com o utilizador, tem-se vindo a acentuar a procura e distribuição de conteúdos multimé-
dia. Desta forma, surge a possibilidade e necessidade de aposta no Video on Demand.
O Video on Demand é já um termo conhecido pela maioria das pessoas, mas a ideia que se
tem deste serviço pode ser errónea e importa assim clarificar. O serviço que se encontra
disponibilizado em vários países incluindo Portugal, é o Near Video on Demand, uma
técnica de vídeo Pay-Per-View usada por redes de televisão multi-canais usando banda
larga, com os dados e imagens enviados por satélite ou cabo, sendo enviadas múltiplas
cópias de um programa espaçadas em pequenos intervalos de tempo de forma a permitir o
acesso aos utilizadores e descartando a necessidade de se sintonizar numa altura específi-
ca.
O VoD vai muito além deste tipo de serviço pois permite ao utilizador escolher o conteúdo
que quer ver, na altura e local do seu agrado podendo ser feito através de streaming da
rede ou do download do conteúdo. São ainda acrescentadas funcionalidades não disponí-
veis no Near Video on Demand como o controlo do conteúdo com comandos normalmen-
te associados a um VCR (pause, play, fast forward, fast rewind, etc).
Para além de bons resultados e dos variados serviços, a forte expansão da internet criou e
tornou evidentes alguns problemas, destacando-se a cópia ilegal de conteúdos multimédia.
Com o intuito de ultrapassar este problema foram criadas técnicas como o Digital Rights
Management (DRM) e normalizado o formato de vídeo MPEG-21, baseadas no conceito
de criação de licenças associadas aos conteúdos digitais, as quais deverão ser adquiridas
pelo consumidor de forma a poder visualizar o vídeo ou conteúdo digital.
A proposta da criação de um serviço Video on Demand onde se prevê a gestão dos direitos
de autor através do uso de DRM, por ser inovadora, ambiciosa e muito completa do ponto
de vista de implementação como uma aplicação multimédia, revelou-se extremamente
atraente e motivadora aos olhos dos autores deste documento.
1.3 Objectivos
O principal objectivo do projecto descrito neste documento consiste no desenvolvimento
de um sistema de Video on Demand que faça a gestão dos direitos de autor e de licenças
para mediar o acesso de utilizadores finais ao serviço.
CAPÍTULO 1: INTRODUÇÃO 3
Os objectivos específicos deste trabalho são os seguintes:
• Analisar os requisitos do sistema de forma a identificar os vários componentes
necessários para instalação e desenvolvimento;
• Analisar os vários projectos que implementam uma plataforma de gestão dos direi-
tos de autor e de licenças associados a um conteúdo digital;
• De entre os projectos estudados, escolher o mais adequado para a integração com o
sistema desenvolvido;
• Analisar as tecnologias existentes para o desenvolvimento de uma aplicação ade-
quada possibilitando a interacção com o utilizador e de uma forma dinâmica;
• Usar descritores normalizados para a caracterização dos conteúdos digitais dispo-
nibilizados, tendo como base de estudo o padrão fornecido pelo fórum TV-
Anytime;
• Projectar os componentes de um sistema de vídeo a pedido capaz de prestar uma
boa qualidade de serviço;
• Implementar funcionalidades que permitam criar licenças para a reprodução de um
conteúdo digital;
• Testar a comunicação entre os diversos módulos que compõem o sistema;
• Desenvolver, instalar e configurar os componentes do sistema com o propósito de
oferecer uma experiência intuitiva e alargada ao utilizador mas ao mesmo tempo
usando mecanismos complexos para realizar a gestão dos direitos digitais de autor.
Tendo atingido estes objectivos com algum tempo disponível partiu-se para outra fase do
projecto. Projectou-se assim, o desenvolvimento de uma aplicação possível de instalar na
máquina do utilizador capaz de permitir a reprodução de conteúdos digitais armazenados
localmente mas prevendo a gestão dos direitos de autor desses mesmos conteúdos.
Os objectivos específicos desta segunda fase são os seguintes:
• Analisar as várias tecnologias existentes para o desenvolvimento de uma aplicação
universal capaz de disponibilizar uma interface gráfica intuitiva;
• Desenvolver uma aplicação capaz de disponibilizar uma interface com ligação à
aplicação web online de modo a disponibilizar todas as funcionalidades disponí-
veis na aplicação citada e ainda outras relevantes como a possibilidade de efectuar
o download de um conteúdo para o sistema de armazenamento do utilizador;
• Assegurar a gestão dos direitos de autor através da comunicação entre esta aplica-
ção cliente e o servidor de modo a verificar a existência de uma licença válida
associada ao utilizador em questão;
• Permitir a chamada de um reprodutor multimédia para a visualização do conteúdo
pretendido após a autorização do servidor.
4 CAPÍTULO 1: INTRODUÇÃO
Concluído o desenvolvimento das aplicações mencionadas deverão ser realizados testes
sobre o sistema criado. Através destes testes deverão ser extraídas perspectivas para
desenvolvimento futuro.
1.4 Estrutura do Relatório
Este trabalho encontra-se estruturado em 7 capítulos dos quais, o primeiro é composto por
esta introdução ao trabalho.
No segundo capítulo é apresentado o contexto onde um sistema de Video on Demand se
insere e as tecnologias de suporte envolvidas. São discutidas as plataformas que oferecem
uma gestão de direitos de autor e de distribuição através da criação de licenças.
O terceiro capítulo apresenta a arquitectura do sistema. É efectuada a identificação dos
requisitos e detalhada a configuração base do servidor, apresentando as ferramentas e o
seu modo de instalação.
No quarto capítulo é apresentado o sistema baseado em aplicação web enumerando as
necessidades do lado do servidor e do lado do cliente. No lado do servidor é dada uma
relevância às tecnologias utilizadas, tipo de utilizadores, mapa da aplicação, motor de
criação de licenças e a base de dados inerente ao sistema.
O quinto capítulo apresenta o sistema baseado numa aplicação cliente residente, desenvol-
vida com o objectivo de realizar uma gestão dos direitos de autor para conteúdos armaze-
nados localmente.
O sexto capítulo contém as conclusões gerais deste trabalho, analisando os seus principais
resultados e efectuando uma comparação entre a proposta inicial e os resultados obtidos.
O último capítulo apresenta algumas perspectivas de desenvolvimento futuro.
Capítulo 2
2 Contexto e Tecnologias de suporte
Pretende-se com este projecto, realizar o desenvolvimento de uma aplicação que permita
disponibilizar serviços de Video on Demand a utilizadores remotos através de um acesso à
internet, fazendo a gestão dos direitos de autor e de licenças, reutilizando sempre que pos-
sível aplicações e software já existente.
O projecto teve início com uma fase de pesquisa e estudo de assuntos relacionados com
normas, especificações e software de código aberto que permitam efectuar a gestão dos
direitos de autor e de licenças. Em particular foram estudadas a norma MPEG-21 e as
especificações DMP e Creative Commons. Ainda nesta fase realizou-se a pesquisa de fer-
ramentas freeware capazes de realizar streaming de vídeo.
Para se perceber melhor o que se acabou de enunciar, neste capítulo serão apresentadas as
ideias principais que se devem reter das normas e ferramentas mencionadas. Haverá lugar
ainda para a descrição da norma MPEG-4 utilizada para realizar o streaming de vídeo.
2.1 O Conceito de licenças
Licenciar ou conceder uma licença significa dar uma permissão. Uma licença é o docu-
mento que demonstra essa permissão e deve ser concedida por um criador ou distribuidor
de licenças, a um utilizador.
Foram estudadas várias plataformas e projectos que prevêem a criação de licenças com o
objectivo de gerir os direitos de autor associados a conteúdos digitais e que passaremos a
explicar nas secções seguintes.
2.1.1 Digital Rights Management (DRM)
O DRM [1], em português Gestão de Direitos Digitais, é uma tecnologia usada por edito-
res ou proprietários de conteúdos digitais de forma a controlar e administrar o acesso ou
utilização desses mesmos conteúdos. Existem diferentes mecanismos de DRM, projecta-
dos por diferentes empresas mas que têm algumas características em comum:
6 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
• Detectam quem acede a cada conteúdo digital, quando e sob que condições, repor-
tando essa informação ao proprietário do conteúdo.
• Autorizam ou negam o acesso ao conteúdo, de acordo com as condições estabele-
cidas pelo proprietário ou fornecedor do conteúdo.
• Quando autorizam o acesso, impõem algumas restrições estabelecidas pelo pro-
prietário da obra.
O DRM apesar de ser uma técnica que promove a distribuição e transacção dos conteúdos
digitais é também considerado como uma técnica controversa. O seu propósito é fornecer
os meios capazes de assegurar aos criadores de conteúdos digitais, a manutenção de um
controlo apropriado sobre as suas obras incluindo a possibilidade de obter alguma forma
de compensação. Esta forma de controlo torna-se controversa devido a três factores prin-
cipais: as tradições e a cultura da internet que inclui acesso livre e aberto a todo o tipo de
informação; desconhecimento das consequências do DRM ao limitar o uso de conteúdos
digitais adquiridos de forma legítima, de maneiras que tradicionalmente não se aplicam a
outros conteúdos; preocupação acerca da complexidade dos esquemas DRM, podendo
dificultar e mesmo prevenir a gestão e a investigação histórica em arquivos. Os oponentes
da técnica de DRM baseiam a sua opinião numa ou em mais do que uma destas preocupa-
ções.
2.1.2 MPEG-21 REL
O MPEG-21 [2] define uma framework normalizada para a disponibilização e entrega de
multimédia baseada em dois conceitos essenciais: a definição de uma unidade fundamen-
tal para a distribuição e transacção (DI – Digital Item) e o conceito de utilizadores que
interagem com os mesmos DIs. O DI é um objecto digital formado pelos conteúdos, por
uma identificação única (URI) e a metadata.
O MPEG Rights Expression Language (REL) [3], parte integrante do MPEG-21, é uma
ferramenta desenhada para facilitar a criação de licenças fiáveis e seguras, requeridas
pelos proprietários do conteúdo, sendo utilizadas ao longo da cadeia de utilizadores desde
o criador até ao consumidor final do conteúdo.
O elemento básico para a definição do REL é a enunciação dos direitos da licença. Aqui se
define qual ou quais as permissões que um utilizador ou consumidor tem perante esse con-
teúdo protegido, podendo existir vários níveis de complexidade ao nível das permissões e
condições necessárias. Esta expressão de direitos pode ser criada por qualquer pessoa
autorizada a disponibilizar permissões para conteúdo protegido, sendo normalmente um
criador e/ou revendedor de licenças, devendo estar assegurada a assinatura digital para que
a sua autenticidade possa ser comprovada.
Estruturalmente, uma licença MPEG REL consiste no seguinte:
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 7
Figura 1 – O modelo de dados da licença MPEG REL
• O direito que a licença especifica
• O conteúdo digital para o qual é gerada a licença
• As condições que devem ser verificadas antes que sejam concedidas as permissões
• O utilizador para o qual a licença é concedida
Especificados no REL, existem vários tipos de direitos que, associados a um conteúdo,
permitem executar acções como aceder a um serviço ou executar funções sobre um traba-
lho digital como visualizar um vídeo, guardar ou imprimir um documento, subscrever,
vender, emprestar, transferir, distribuir, pagar por uso, pagar por parte do conteúdo, doar,
etc.
São várias as plataformas que estabelecem os seus princípios básicos através da criação de
licenças do tipo MPEG-21 REL, nomeadamente o VISNET II e o TIRAMISU que serão
apresentados nas secções seguintes.
2.1.3 VISNET II
O VISNET II [4] é uma rede de excelência com uma visão sobre os planos de integração,
investigação e divulgação. É um consórcio criado por organizações conceituadas pelos
seus projectos de investigação no campo das tecnologias multimédia audiovisual, nomea-
damente o INESC.
Este projecto inclui uma grande variedade de actividades de investigação relacionadas
com sistemas e plataformas audiovisuais. Estas actividades estão divididas em três gran-
des temas: codificação de vídeo, processamento audiovisual e segurança, sendo este últi-
mo relevante no âmbito da criação de licenças e gestão dos direitos digitais do autor.
A leitura do paper “Intermediate Progress Report on DRM-based Content Protection Ini-
tial Integration” [5], apenas para membros mas disponibilizado pela nossa orientadora, deu
uma ideia importante da posição do VISNET II sobre o DRM.
No VISNET II pretende-se definir uma arquitectura DRM para gerir os direitos digitais de
conteúdos audiovisuais durante todo o seu ciclo de vida. Esta arquitectura será baseada
nos trabalhos desenvolvidos anteriormente e tendo em conta a existência de outras inicia-
tivas que especifiquem um sistema DRM.
8 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
O conceito de interoperabilidade DRM tem normalmente três alternativas a seguir: na
primeira existe a necessidade de haver um formato único para a protecção dos ficheiros
audiovisuais, o que é difícil de atingir universalmente. Uma segunda alternativa será a
existência de um tradutor entre as várias implementações de DRM que faça a tradução das
operações intermédias. A última alternativa sugere que a possibilidade de o sistema DRM
realizar o download de ferramentas adequadas de forma a tornar-se capaz de processar o
conteúdo protegido.
A arquitectura defendida pelo VISNET II é a arquitectura DMAG-MIPAMS, visível na
Figura 2. Esta plataforma é orientada aos serviços e os seus módulos são planeados para
serem implementados por serviços Web fornecendo flexibilidade e permitindo uma facili-
dade no desenvolvimento dos mesmos num ambiente distribuído.
Figura 2 – Arquitectura DMAG-MIPAMS
No contexto da arquitectura DMAG-MIPAMS, define-se dois conceitos importantes: acto-
res e componentes. Um actor é um utilizador (pessoa ou organização) que usa um compo-
nente. Um componente é um módulo ou conjunto de software que oferecem funcionalida-
des relacionadas com DRM e que interagem com outros componentes.
Como é possível ver na figura anterior, a arquitectura está dividida nos seguintes módulos:
• Content Server – Este componente permite aos utilizadores explorar e seleccionar
conteúdos, fornece o conteúdo que os utilizadores finais seleccionem para visuali-
zação, codifica e insere metadata nos conteúdos provenientes dos proprietários;
• Adaptation Server – Realiza a adaptação dos conteúdos e dos seus metadados
associados, dependendo das condições de transmissão, armazenamento e reprodu-
ção;
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 9
• Protection Server – Esta componente realiza a protecção dos conteúdos digitais,
faz a descrição e o download das ferramentas de protecção, gera chaves de protec-
ção e armazena as chaves geradas;
• Governance Server – Este componente gera as licenças para distribuição ou utili-
zadores finais, armazena as licenças, traduz as licenças e fornece autorização para
as licenças;
• Certification Server – Está divido entre o Certification Authority, Registration Ser-
ver e o Supervision Server envolvendo várias funcionalidades diferentes.
o Certification Authority – Fornece certificados X.509 para as ferramentas
instaladas, para utilizadores registados e para os componentes de servidores
com diferente arquitectura;
o Registration Server – Usado no registo de actores e ferramentas;
o Supervision Server – Autentica e supervisiona actores e componentes do
sistema. É ainda responsável por extrair e registar informações sobre as fer-
ramentas instaladas, recebe e armazena relatórios sobre as acções dos utili-
zadores;
• Trusted Client – Este módulo é aquele que interage directamente com a aplicação
do cliente de forma a reforçar o DRM. Consiste num software de confiança para o
sistema, num repositório local de licenças, informação sobre a protecção e relató-
rios sobre operações offline.
• Intermediary – Normalmente é parte integrante do módulo Trusted Client mas
pode também estar localizado no servidor de modo a reduzir o número de compo-
nentes que o módulo no cliente necessita. Pode ser visto como um corrector com
quem o cliente comunica para obter autorização e as chaves necessárias e dessa
forma possibilitar a reprodução do conteúdo digital pretendido.
Para ilustrar a forma como a arquitectura e o processamento do conteúdo multimédia pro-
tegido estão relacionados, será apresentado um caso de utilização de conteúdo por parte de
um utilizador final. Na Figura 3 encontramos os passos necessários para a reprodução de
um conteúdo pela aplicação cliente, assumindo que não é a primeira vez que se utilizam as
ferramentas de forma que estas estejam já certificadas pelo sistema.
10 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
Figura 3 – Caso de utilização da reprodução de um conteúdo protegido
A Figura 3 mostra os passos envolvidos na reprodução de um conteúdo protegido e
demonstra a necessidade de haver um intermediário entre o sistema de DRM e o cliente
final. Esse intermediário (Trusted Client) é uma ferramenta reconhecida e licenciada para
comunicar com o sistema.
Importante será também a troca de mensagens entre os vários módulos, resultante de um
pedido de autorização para reproduzir um conteúdo digital feito pelo reprodutor de multi-
média. No final será retornada a reposta positiva ou negativa.
Os passos envolvidos na reprodução de um conteúdo protegido, representados na Figura 3
são os seguintes:
1. O utilizador tenta ouvir a música no seu reprodutor de multimédia.
2. O reprodutor de multimédia necessita enviar o pedido para desproteger o conteúdo
a um módulo interno.
3. O módulo de confiança (Trusted Module) extrai informação local acerca da ferra-
menta, utilizador e dispositivo que quer aceder ao conteúdo. Verifica também os
relatórios acerca das acções realizadas offline, se disponível.
4. O módulo de confiança contacta o Supervision Server e envia a informação extraí-
da.
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 11
5. O Supervision Server realiza a autenticação do utilizador e das suas ferramentas
verificando o seu estatuto e a integridade das mesmas ferramentas. Verifica ainda a
lista de acções offline e introduz as acções na respectiva base de dados.
6. Opcionalmente, o Supervision Server guarda um relatório com os resultados da
verificação anterior.
7. O Supervision Server notifica o módulo de confiança do utilizador com o resultado
da verificação.
8. Se a resposta à verificação realizada for positiva, o módulo de confiança pede auto-
rização ao Governance Server.
9. O Governance Server determina se a informação necessária para desproteger o
conteúdo pretendido está disponível no Protection Server.
10. Se a informação estiver disponível no Protection Server é retornada ao Governance
Server.
11. Neste passo é dada a autorização, ou seja, uma licença é criada usando o repositó-
rio de licenças.
12. O Governance Server envia a informação sobre a resposta à tentativa de autoriza-
ção para o Supervision Server.
13. O Supervision Server confirma a recepção e armazenamento do relatório.
14. Neste passo o Governance Server notifica o módulo de confiança com a resposta
ao pedido de autorização. Se esta for positiva, envia a informação necessária para a
reprodução do conteúdo.
15. Se o resultado do pedido de autorização do pedido for positivo, o conteúdo será
desprotegido.
16. O conteúdo digital é enviado para a aplicação que fez o pedido.
17. O conteúdo digital é reproduzido.
2.1.4 TIRAMISU
O TIRAMISU (The Innovative Rights and Access Management Interplatform Solution)
[6] é um projecto que implementa uma Framework para a criação, distribuição, consumo e
protecção de conteúdos audiovisuais.
A framework proposta pelo TIRAMISU é baseada na norma MPEG-21 para a representa-
ção do conteúdo e ao mesmo tempo inova em vários aspectos, sendo o mais notável a
completa especificação de um esquema DRM.
12
Figura 4
O ponto central deste projecto
gement System) baseado na utilização de smartcards capaz de ultrapassar alguns probl
mas que haviam dificultado uma maior adopção de sistemas DRM.
A gestão das chaves é o processo em que, n
ves para efectuar o descrambling (descodificação) do conteúdo digital, de uma forma
segura desde o proprietário do conteúdo digital até ao consumidor.
O sistema de gestão de chaves
final a um distribuidor de licenças de forma a obter a licença que pretende. Esta ligação é
necessária pois a chave de descodificação do conteúdo digital vem encriptado com a chave
pública do distribuidor de licenças, ou seja, o dis
como descodificar o conteúdo.
Depois de o distribuidor de licenças extrair a informação necessária para a descodificação
do conteúdo é gerada uma licença para um domínio definido pelo utilizador
licença é representativa das condições associadas ao consumo do conteúdo
chave para realizar a descodificação
zador e é enviada para o utilizador final.
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
– Arquitectura do projecto TIRAMISU
ste projecto é o original sistema de gestão de chaves KMS (Key Man
gement System) baseado na utilização de smartcards capaz de ultrapassar alguns probl
mas que haviam dificultado uma maior adopção de sistemas DRM.
A gestão das chaves é o processo em que, num sistema de DRM, são distribuídas as ch
ves para efectuar o descrambling (descodificação) do conteúdo digital, de uma forma
segura desde o proprietário do conteúdo digital até ao consumidor.
O sistema de gestão de chaves, representado na Figura 5, impõe a ligação do utilizador
final a um distribuidor de licenças de forma a obter a licença que pretende. Esta ligação é
necessária pois a chave de descodificação do conteúdo digital vem encriptado com a chave
pública do distribuidor de licenças, ou seja, o distribuidor de licenças é o único que saberia
como descodificar o conteúdo.
Depois de o distribuidor de licenças extrair a informação necessária para a descodificação
do conteúdo é gerada uma licença para um domínio definido pelo utilizador
a é representativa das condições associadas ao consumo do conteúdo e é aí inserida a
chave para realizar a descodificação, encriptada com a chave pública do domínio do util
zador e é enviada para o utilizador final.
AS DE SUPORTE
é o original sistema de gestão de chaves KMS (Key Mana-
gement System) baseado na utilização de smartcards capaz de ultrapassar alguns proble-
um sistema de DRM, são distribuídas as cha-
ves para efectuar o descrambling (descodificação) do conteúdo digital, de uma forma
a ligação do utilizador
final a um distribuidor de licenças de forma a obter a licença que pretende. Esta ligação é
necessária pois a chave de descodificação do conteúdo digital vem encriptado com a chave
tribuidor de licenças é o único que saberia
Depois de o distribuidor de licenças extrair a informação necessária para a descodificação
do conteúdo é gerada uma licença para um domínio definido pelo utilizador. Essa nova
e é aí inserida a
, encriptada com a chave pública do domínio do utili-
CAPÍTULO 2: CONTEXTO E TECNOLOGI
Figura 5 – Si
Inerente a este processo é a possibilidade de definição de um domínio do utilizador (home
domain) podendo agrupar vários dispositivos.
dispositivos que apresentam o mesmo
conteúdos. Quando um utilizador contacta o distribuidor de licenças para obter uma lice
ça de consumo, esta é atribuída ao seu domínio dando liberdade para reproduzir o conte
do digital em todos os disposit
entender o conceito de domínio de utilizador, este
Figura 6 – Conceito de um domínio de utilizador (Home Domain)
Um factor importante no TIRA
licença de consumo é fornecido por hardware, os smartcards.
CONTEXTO E TECNOLOGIAS DE SUPORTE
Sistema de gestão de chaves do projecto TIRAMISU
Inerente a este processo é a possibilidade de definição de um domínio do utilizador (home
domain) podendo agrupar vários dispositivos. Um domínio de utilizador é um grupo de
apresentam o mesmo conjunto de direitos relativamente ao
Quando um utilizador contacta o distribuidor de licenças para obter uma lice
ça de consumo, esta é atribuída ao seu domínio dando liberdade para reproduzir o conte
do digital em todos os dispositivos pertencentes ao seu domínio de utilizador.
domínio de utilizador, este pode ser visto na Figura 6
Conceito de um domínio de utilizador (Home Domain)
Um factor importante no TIRAMISU é a imposição de que os termos e condições da
licença de consumo é fornecido por hardware, os smartcards. Estes smartcards
13
stema de gestão de chaves do projecto TIRAMISU
Inerente a este processo é a possibilidade de definição de um domínio do utilizador (home
Um domínio de utilizador é um grupo de
relativamente ao consumo de
Quando um utilizador contacta o distribuidor de licenças para obter uma licen-
ça de consumo, esta é atribuída ao seu domínio dando liberdade para reproduzir o conteú-
ivos pertencentes ao seu domínio de utilizador. Para melhor
Figura 6.
Conceito de um domínio de utilizador (Home Domain)
MISU é a imposição de que os termos e condições da
Estes smartcards, pertencen-
14 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
tes a um domínio de utilizador, possuem um segredo criptográfico que consiste no par
chave pública e chave privada sendo específicos para cada domínio de utilizador e antes
que estes possam ser usados devem estar registados no gestor de domínios de utilizador
(Figura 5 no canto direito – Home Domain Manager).
2.1.5 Digital Media Project
O Digital Media Project (DMP) [7] é uma organização cuja missão é promover o desen-
volvimento e utilização eficaz de conteúdos digitais respeitando os direitos de autor e de
distribuição. Para atingir os objectivos propostos, esta associação apoia-se e aposta no
desenvolvimento da tecnologia Digital Rights Management (DRM).
Tal como foi dito anteriormente, DRM é desenvolvido por diferentes empresas, o que
pode dificultar ou tornar impossível a comunicação entre utilizadores de diferentes tecno-
logias de gestão de direitos de autor. O projecto DMP aposta na interoperabilidade entre
diferentes sistemas e estabelece assim a necessidade de criar um DRM universal, partindo
da uniformização (criação de um standard) de pequenas funções para atingir esse fim.
A abordagem do DMP para atingir a uniformização do DRM é baseada nos seguintes pro-
cessos:
1. As especificações são desenvolvidas em fases.
2. Os Casos de Utilização mais significativos são identificados.
3. As funções primitivas necessárias para a implementação dos casos de utilização
são identificadas.
4. Os requisitos para as funções são registados através da contribuição de utilizadores
pertencentes à cadeia de utilizadores.
5. São apresentadas propostas para tecnologias capazes de implementar as funções
primitivas de acordo com os requisitos.
6. As tecnologias seleccionadas – ferramentas – são documentadas.
7. São desenvolvidas as especificações para as ferramentas.
8. Numa fase final são editadas ou adicionadas ferramentas necessárias ao suporte de
novas funcionalidades de ferramentas já existentes.
Ao conjunto de todas as ferramentas DRM uniformizadas dá-se o nome de “Interoperable
DRM Platform (IDP)” [8] e fornece algumas vantagens adicionais levando à total intero-
perabilidade ao longo da cadeia de utilizadores e permitindo uma contínua inovação do
sistema.
A segunda fase de desenvolvimento do IDP, a mais recente, apresenta treze tipos de Casos
de Utilização, dos quais apresentamos os mais importantes.
• Open Release – Desta forma os conteúdos digitais são disponibilizados para que os
utilizadores acedam livremente, mas não são do domínio público (Public Domain).
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 15
• Home Distribution # 1 – Este caso de utilização demonstra como ultrapassar as
dificuldades que alguns dos proprietários de conteúdos têm para prevenir a cópia
de um conteúdo entre vários dispositivos do mesmo utilizador.
• Home Distribution # 2 – Este caso de utilização assegura os direitos de um utiliza-
dor final, permitindo a utilização do mesmo conteúdo digital entre vários dispositi-
vos dentro de um domínio.
• Internet Distribution – Este caso de utilização assegura uma distribuição de con-
teúdo protegido através de tecnologias que providenciam interoperabilidade.
• Controlled Peer-to-Peer Distribution
• Personal Photography – Este caso de utilização assegura, aos utilizadores proprie-
tários das fotografias pessoais, o controlo destas quando as distribui para os seus
amigos.
• Open Governed Broadcast
• TVA Broadcaster – Este caso de utilização tem em consideração o broadcast usado
pelo fórum da TV Anytime.
• Open Governed Interactive Content – O aumento da largura de banda disponibili-
zada pelos serviços IP tem permitido a distribuição de vídeo e televisão a pedido.
Neste caso de utilização está considerada a distribuição de vídeo transportado atra-
vés de RTP/UDP/IP mas encontra-se ainda em fase de desenvolvimento e é apre-
sentado apenas como finalidade de ilustração.
Uma grande parte das tecnologias presentes no IDP-2 (IDP, fase 2) são baseadas no
MPEG-21 e apenas as funcionalidades não suportadas, são criadas pelo DMP de raiz. Mas
ao contrário do que acontece no MPEG-21 as tecnologias no IDP encontram-se integradas,
permitindo o aparecimento de uma plataforma IDP, o Chillout, com o cariz de um softwa-
re de código livre.
O Chillout [9] [10], em constante estado de desenvolvimento, fornece um conjunto de
bibliotecas JAVA de código livre capazes de implementar funções de DRM e também
aplicações em JAVA baseadas em bibliotecas do próprio Chillout. Esta plataforma dispo-
nibiliza ferramentas que podem ser usadas para realizar o teste de conformidade de
implementações de DRM sendo estas geradas por utilizadores independentes e também
para estabelecer a cadeia de utilizadores para essa implementação.
Encontra-se organizado, tal como representado na Figura 7, segundo a seguinte estrutura:
• JAVA plataform – Plataforma de bibliotecas JAVA nas quais assentam as seguin-
tes camadas;
• Core Library – Bibliotecas de classes capazes de implementar as funções primiti-
vas definidas nas especificações técnicas do DMP. Possui as funcionalidades
necessárias para representar as estruturas XML definidas nas normas do DMP,
gerar o formato de ficheiro DCF e actuar segundo os protocolos definidos para a
comunicação entre dois dispositivos;
16
• Auxiliary Library – Apesar de não estar presente nas especificações técnicas do
DMP, esta camada disponibiliza uma biblioteca de classes
lidades adicionais;
• Applications – Um conjunto de aplicações criadas com o objectivo de utilizar os
serviços das camadas inferiores e para demonstrar as capacidades do DMP
Figura 7 – Diagrama representativo da
Entre as aplicações disponíveis pelo Chillout
LPD, e o Chillout CCD. Este último, o Content Creation Device (CCD), é uma ferramenta
que cria o conteúdo de acordo com o DMP
esse conteúdo, ferramentas de DRM e os identificadores tudo num só formato digital, o
DMP Content Format (DCF). A licença introduzida neste formato é criada pelo License
Provider Device (LPD) que gera as licenças de acorda com o DMP
tipo reproduzir, imprimir, copiar
Por fim, o Chillout SAV é a aplicação usada para fazer a visualização de conteúdos dig
tais no formato DCF.
2.1.6 Creative Commons
As licenças Creative Commons
Creative Commons (CC), permite que proprietários de conteúdo
copyright) possam disponibilizar
enquanto retêm outros.
Em Portugal, as licenças estão
vários tipos de licença e esquemas de contratos incluindo licenças de domínio público ou
conteúdo aberto e ainda metadata na forma XML descrevendo a obra e a sua licença.
Eis alguns tipos de licenças disponibilizados:
• Atribuição – Esta é a licença mais permissiva do leque de opções. Nos termos
desta licença a utilização da obra é livre, podendo os utilizadores fazer dela uso
comercial ou criar obras derivadas a partir da obra original. Essencial é, apenas,
que seja dado o devido crédito ao seu autor.
• Atribuição Não Comerciallização ampla da sua obra, limitada, contudo, pela impossibilidade de se obter
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
Apesar de não estar presente nas especificações técnicas do
DMP, esta camada disponibiliza uma biblioteca de classes com algumas funcion
Um conjunto de aplicações criadas com o objectivo de utilizar os
serviços das camadas inferiores e para demonstrar as capacidades do DMP
Diagrama representativo da estrutura do Chillout
Entre as aplicações disponíveis pelo Chillout destacam-se o Chillout SAV, o Chillout
Este último, o Content Creation Device (CCD), é uma ferramenta
que cria o conteúdo de acordo com o DMP combinando o conteúdo digital, a licença para
esse conteúdo, ferramentas de DRM e os identificadores tudo num só formato digital, o
DMP Content Format (DCF). A licença introduzida neste formato é criada pelo License
que gera as licenças de acorda com o DMP, inserindo direitos do
reproduzir, imprimir, copiar.
Chillout SAV é a aplicação usada para fazer a visualização de conteúdos dig
Creative Commons
As licenças Creative Commons [12] [13], criadas pela organização sem fin
Creative Commons (CC), permite que proprietários de conteúdos digitais protegido
copyright) possam disponibilizar alguns direitos sobre os seus trabalhos
Em Portugal, as licenças estão já adaptadas à legislação portuguesa disponibiliza
vários tipos de licença e esquemas de contratos incluindo licenças de domínio público ou
conteúdo aberto e ainda metadata na forma XML descrevendo a obra e a sua licença.
Eis alguns tipos de licenças disponibilizados:
Esta é a licença mais permissiva do leque de opções. Nos termos
ta licença a utilização da obra é livre, podendo os utilizadores fazer dela uso
comercial ou criar obras derivadas a partir da obra original. Essencial é, apenas,
devido crédito ao seu autor.
Atribuição Não Comercial – De acordo com esta licença o autor permite uma ut
lização ampla da sua obra, limitada, contudo, pela impossibilidade de se obter
AS DE SUPORTE
Apesar de não estar presente nas especificações técnicas do
om algumas funciona-
Um conjunto de aplicações criadas com o objectivo de utilizar os
serviços das camadas inferiores e para demonstrar as capacidades do DMP.
do Chillout
Chillout SAV, o Chillout
Este último, o Content Creation Device (CCD), é uma ferramenta
digital, a licença para
esse conteúdo, ferramentas de DRM e os identificadores tudo num só formato digital, o
DMP Content Format (DCF). A licença introduzida neste formato é criada pelo License
, inserindo direitos do
Chillout SAV é a aplicação usada para fazer a visualização de conteúdos digi-
, criadas pela organização sem fins lucrativos
protegidos (por
alguns direitos sobre os seus trabalhos ao público
islação portuguesa disponibilizando
vários tipos de licença e esquemas de contratos incluindo licenças de domínio público ou
conteúdo aberto e ainda metadata na forma XML descrevendo a obra e a sua licença.
Esta é a licença mais permissiva do leque de opções. Nos termos
ta licença a utilização da obra é livre, podendo os utilizadores fazer dela uso
comercial ou criar obras derivadas a partir da obra original. Essencial é, apenas,
De acordo com esta licença o autor permite uma uti-
lização ampla da sua obra, limitada, contudo, pela impossibilidade de se obter
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 17
através dessa utilização uma vantagem comercial. É também essencial que seja
dado o devido crédito ao autor da obra original.
• Atribuição Partilha nos Termos da Mesma Licença – Quando um autor opte
pela concessão de tal licença pretenderá, não só que lhe seja dado crédito pela cria-
ção da sua obra, como também que as obras derivadas desta sejam licenciadas nos
mesmos termos em que o foi a sua própria obra. Esta licença é muitas vezes com-
parada com as licenças de software livre.
• Atribuição Proibição de realização de obras derivadas – Esta licença permite a
redistribuição, comercial ou não-comercial, desde que a sua obra seja utilizada sem
alterações e na integra. É também essencial que seja dado o devido crédito ao autor
da obra original.
• Atribuição Uso Não-Comercial Partilha nos Termos da Mesma Licença – Esta
licença permite a redistribuição apenas não-comercial e também que obras deriva-
das desta sejam licenciadas nos mesmos termos em que foi a sua própria obra. É
também essencial que seja dado o devido crédito ao autor da obra original.
• Atribuição Uso Não-Comercial Proibição de Realização de Obras Derivadas –
Esta é a licença menos permissiva do leque de opções que se oferece ao autor,
permitindo apenas a redistribuição. Mediante adopção desta licença, não só não é
permitida a realização de um uso comercial, como é inviabilizada a realização de
obras derivadas. Dada a sua natureza, esta licença é muitas vezes chamada de
licença de “publicidade livre”.
2.2 Tecnologias e Protocolos
O Video-on-Demand centrado na transmissão de dados de vídeo em tempo real possui
elevados requisitos para obter elevada Qualidade de Serviço (QoS) e uma experiência
agradável para o utilizador. Entre eles encontram-se atrasos na transmissão reduzidos, que
para serem alcançados necessitam de usar um protocolo diferente do que é normalmente
usado para a transmissão de dados.
O protocolo de transporte TCP [14] é um protocolo orientado à conexão apresentando
mecanismos de controlo de fluxo, controlo de congestionamento e de retransmissões pro-
vocando um grande fluxo de mensagens e overhead desnecessário para uma transmissão
com requisitos de tempo-real em que um pacote ao chegar atrasado é um pacote perdido.
O protocolo de transporte UDP [15], por seu lado, não apresenta garantias de entrega de
pacotes mas apresenta uma latência inferior ao do TCP e não limita a largura de banda ao
emissor. É desta forma o protocolo indicado e utilizado em sistemas de transmissão de
vídeo em tempo-real. Como o protocolo UDP não envia qualquer confirmação de entrega
de pacotes, a monitorização da transmissão dos pacotes e detecção é realizada pelo proto-
colo RTP (Real-Time Protocol).
18 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
Na figura seguinte está representada a pilha protocolar normalmente utilizada em sistemas
de transmissão de vídeo em tempo real sobre uma rede IP.
Figura 8 – Pilha protocolar típica em sistemas de transmissão de vídeo sobre IP.
2.2.1 RTP (Real-Time Protocol)
O RTP [16] é um protocolo de transporte utilizado em aplicações de tempo real fornecen-
do um serviço de entrega dos dados entre os dois extremos da comunicação. É normal-
mente usado para entrega de dados associados ao VoIP (Voice over IP – Voz sobre IP)
mas também para soluções de multimédia (áudio/vídeo) a pedido.
Este protocolo define como deve ser feita a fragmentação do fluxo de dados áudio e vídeo,
adicionando a cada fragmento informação de sequência e de tempo de entrega permitindo
a reordenação e sincronização dos pacotes recebidos. Evita assim a degradação da quali-
dade do conteúdo recebido embora utilize o UDP como protocolo de transporte o qual não
oferece qualquer garantia que os pacotes serão entregues num determinado intervalo.
2.2.2 RTCP (Real-Time Control Protocol)
O protocolo RTCP [16] é baseado na troca periódica de pacotes de controlo entre os parti-
cipantes de uma sessão de streaming multimédia, transportando informações relevantes
sobre a qualidade do serviço fornecido por uma ligação RTP. Nestas mensagens trocadas
encontram-se estatísticas sobre o número de bytes enviados, o número de pacotes perdi-
dos, a variação do atraso na chegada dos pacotes (jitter) entre outras informações que
permitem o controlo da taxa de transmissão da fonte.
2.2.3 RTSP (Real Time Streaming Protocol)
No nível da camada da aplicação encontra-se um outro protocolo para controlo de fluxo de
multimédia, o RTSP [17][18] (Real Time Streaming Protocol). Este protocolo, semelhante
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 19
ao protocolo HTTP, é desenvolvido para comunicar com protocolos de nível inferior,
nomeadamente o RTP, proporcionando um serviço completo de streaming sobre IP.
Streaming refere-se ao transporte de um meio multimédia em tempo real desde um servi-
dor até um cliente através de uma rede. Através desta técnica, o conteúdo multimédia é
apresentado por um software do cliente à medida que as informações vão sendo entregues,
não chegando a ser efectuado o download do conteúdo para o disco do utilizador.
Um fluxo multimédia é identificado por um endereço RTSP, isto é, é identificado por um
URL RTSP do tipo rtsp://endereço_servidor/conteudo.mp4 , onde conteudo.mp4 é o con-
teúdo pretendido pelo cliente e o endereço_servidor é o endereço IP ou nome do domínio
do servidor.
O controlo da entrega do fluxo multimédia é efectuado através da troca de mensagens
entre o servidor e o cliente. Essas mensagens são comandos de controlo Play, Stop, Pause,
Fast-Forward e Rewind, ou seja, o RTSP funciona como um controlo remoto de um servi-
dor de multimédia.
Na Tabela 1 são apresentados alguns dos mais relevantes comandos/mensagem do proto-
colo RTSP com uma pequena descrição sobre as suas funcionalidades.
Tabela 1 - Descrição dos comandos/mensagens usados no protocolo RTSP
Comando/Mensagem Função DESCRIBE Obtém discrição sobre a apresentação dos objectos multimédia
SETUP Estabelece a ligação de acordo com os parâmetros trocados PLAY Faz o pedido para iniciar ou recomeçar a transmissão de dados
PAUSE Pedido de pausa na transmissão de dados, podendo ser recomeçada TEARDOWN Termina a sessão parando todos os streamings activos
OPTIONS Obtém métodos disponíveis ANNOUNCE Altera descrição do objecto multimédia
GET_PARAMETER Retorna o valor de um parâmetro de um objecto a ser apresentado SET_PARAMETER Pedido para colocar um valor num dado parâmetro de um objecto
REDIRECT Redirecciona o cliente para um novo servidor RECORD Inicia a gravação dos dados multimédia
2.3 MPEG-4
O MPEG-4 [19][20] é uma norma da ISO/IEC desenvolvida pelo Moving Pictures Experts
Group (MPEG) onde as suas principais áreas de utilização situam-se nas áreas da Televi-
são Digital, Multimédia Interactiva e Aplicações Gráficas Interactivas.
A norma altera o paradigma da codificação em relação às anteriores normas existentes
passando a realizar uma codificação baseada em objectos, permitindo interactividade ao
utilizador e a possibilidade de edição e manipulação sem transcodificar. De entre os objec-
tos possíveis de codificar encontra-se o áudio, vídeo, gráficos, texto, objectos sintetizados
2D/3D e animação tornando possível a construção de cenas multimédia.
20 CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE
A apresentação MPEG-4 é composta por objectos áudio/vídeo e informação relativa à
descrição da cena introduzida pelo BIFS (Binary Format for Scenes), protocolo este que
para além da descrição da cena descreve a interacção possível de realizar com os objectos
e também a informação para realizar a animação destes. A interactividade do utilizador
passa pela visualização e manuseamento dos objectos presentes na cena podendo inserir,
retirar ou deslocar os mesmos objectos de acordo com os seus gostos ou interesse intera-
gindo com os objectos directamente e não com a fonte do stream.
Desenhado para ser utilizado em aplicações Web, o MPEG-4 utiliza poderosos codecs de
áudio e vídeo, o AAC (Advanced Audio Coding) e o AVC (Advanced Video Coding) res-
pectivamente, conseguindo atingir uma maior compressão em relação ao MPEG-2 indis-
pensável para a transmissão de conteúdos de alta-definição a baixos débitos e possibilitan-
do a sua disponibilização através da internet e em redes móveis sem fios.
Outro objectivo do MPEG-4 prende-se com o acesso universal introduzindo uma robustez
a erros para que as aplicações sejam suportadas por uma diversidade de redes com diferen-
tes débitos e qualidades de serviço. Permite ainda uma maior escalabilidade (resolução
temporal, espacial, complexidade e qualidade) para se adaptar a redes e a terminais.
2.4 Darwin Streaming Server
O Darwin Streaming Server (DSS) [21] é um servidor de streaming de código livre, per-
tencendo ao projecto Open Source Streaming Server da Apple. Este projecto usa os proto-
colos RTP e RTSP sendo capaz de realizar o streaming dos formatos H.264, MPEG-4 e
3GPP sobre a Internet em tempo real.
O servidor está actualmente na sua versão 5.5.5, existindo versões para várias plataformas
como Mac OS, Linux e Windows e apresentando as seguintes características:
• Suporte nativo de conteúdos MPEG-4: O servidor permite a entrega de ficheiros
hinted MPEG-4, sem serem convertidos para ficheiros *.mov, a clientes que supor-
tem a reprodução de streams sobre IP.
• Streaming de MP3: O servidor permite o streaming de ficheiros MP3 sobre HTTP
possibilitando a criação de estações de rádio.
• Aplicação Web para administração do servidor: Através desta aplicação faz-se a
gestão e administração do servidor remotamente através de um web browser,
conectando-o na porta 1220. Permite a visualização de estatísticas e encontram-se
funcionalidades como o assistente de configuração.
• Autenticação: Dois tipos de autenticação, um básico e outro encriptado, para aces-
so a conteúdos multimédia protegidos.
• Streaming Unicast e/ou Multicast:
o Unicast: Cada cliente que se liga ao servidor recebe o seu próprio fluxo de
dados, ou seja, é uma transmissão de um para um;
CAPÍTULO 2: CONTEXTO E TECNOLOGIAS DE SUPORTE 21
o Multicast: Vários clientes ligam-se ao mesmo fluxo enviado pelo servidor,
ou seja, é uma transmissão de um para vários;
• Mecanismo de Relay: Este mecanismo permite receber fluxo de um servidor e
enviá-lo para os clientes ou fazer relay para outro servidor de streaming aumentan-
do virtualmente o número de clientes que poderá aceder ao stream enviado.
• Playlists: O servidor permite a criação de listas de reprodução (playlist) de vídeo e
áudio. Isto pode ser o ideal para a criação de uma estação virtual de rádio ou tele-
visão.
• Streaming através da porta 80: O servidor permite enviar os streams de multimédia
usando os protocolos RTP e RTSP sobre UDP através da porta 80 conseguindo
servir clientes que se encontrem por detrás de uma firewall.
• Skip Protection: Conjunto de mecanismos desenvolvidos pela Apple com o objec-
tivo de melhorar a qualidade da entrega do conteúdo multimédia ao cliente. A lar-
gura de banda em excesso que eventualmente a rede possa oferecer, é utilizada
para enviar informação em avanço para um buffer no lado do cliente de modo a
absorver flutuações da disponibilidade da rede.
• Estrutura modular: O servidor apresenta uma estrutura de módulos que podem ser
instalados acrescentando funcionalidades ao sistema base do servidor.
Existe um pré-requisito que deve ser cumprido para o DSS funcionar correctamente. Aos
ficheiros MPEG-4 deve ser aplicada a técnica “Hinting” [22], realizada na codificação do
ficheiro, durante a qual o conteúdo multimédia é dividido em pequenos pacotes nos quais
se inclui a informação sobre a altura e a forma em que devem ser apresentados, ou neste
caso, enviados pelo servidor.
Capítulo 3
3 Arquitectura do sistema
Neste capítulo apresentam-se os requisitos e a arquitectura do sistema implementado dan-
do relevância às ferramentas necessárias para construir o sistema base.
3.1 Identificação dos requisitos e arquitectura
Com base no estudo efectuado na primeira fase do projecto em que se fez um levantamen-
to do estado da arte em termos de implementações, tecnologias e protocolos na área das
aplicações multimédia com gestão de direitos de autor, concluiu-se que o sistema a desen-
volver deveria adoptar uma arquitectura cliente-servidor.
Foram identificados os seguintes requisitos a ser satisfeitos por funcionalidade a imple-
mentar no servidor:
– Manutenção e gestão de um repositório de filmes;
– Manutenção e disponibilização de informação adicional descritiva (metadados)
sobre os filmes;
– Disponibilização de um serviço de streaming de vídeo;
– Identificação de clientes/utilizadores, mantendo registo dos seus perfis, preferências
e historial de utilização;
– Autorização de utilizadores para acesso ao sistema;
– Criação e manutenção de licenças associadas a filmes existentes no repositório;
– Emissão de licenças a clientes e gestão de licenças emitidas;
Assim, concluímos que seria necessária a configuração de um servidor capacitado com
uma aplicação de streaming de vídeo, uma base de dados e um servidor de HTTP/PHP.
Foi necessária ainda a instalação de um servidor Tomcat (JAVA) para a realização de um
estudo aprofundado acerca da criação de licenças de acordo com o DMP/Chillout, o
esquema de licenças a ser adoptado. Esse estudo passaria pela própria criação de licenças
adoptando alguns casos de utilização e cuja análise permitiu o estudo pormenorizado da
24 CAPÍTULO 3: ARQUITECTURA DO SISTEMA
plataforma de criação de licenças. Esse estudo culminaria com o desenvolvimento de uma
nova aplicação com o mesmo objectivo do Chillout.
Do lado do cliente, concluiu-se que o sistema deveria ser o mais simples e versátil possí-
vel, devendo necessariamente suportar as seguintes funcionalidades:
– Existência de uma ligação de rede (Internet);
– Interface gráfica para permitir ao utilizador pesquisar o repositório remoto de fil-
mes, navegar na informação adicional sobre filmes seleccionados e indicar a sua
selecção ao servidor;
– Possibilidade de aquisição de uma licença para visionar os filmes seleccionados;
– Possibilidade de visualizar licenças adquiridas;
– Possibilidade de reproduzir os filmes seleccionados.
Atendendo a estas especificações desenhou-se a seguinte arquitectura:
Figura 9 – Arquitectura do sistema de Video on Demand a desenvolver
Como é possível ver na Figura 9, existem dois tipos de comunicação entre o cliente e o
servidor. Numa primeira fase o cliente, por intermédio do seu Web browser, realiza pedi-
dos HTTP ao servidor de modo a navegar pela aplicação Web desenhada em PHP. O PHP
será importante, pois no lado do servidor existe a comunicação entre a aplicação Web e a
base de dados instalada, contendo informações sobre os utilizadores e filmes, permitindo a
construção automática de páginas web de acordo com os pedidos dos utilizadores.
CAPÍTULO 3: ARQUITECTURA DO SISTEMA 25
Numa segunda fase, escolhido o conteúdo multimédia é possível estabelecer a comunica-
ção entre o software de reprodução do cliente e o DSS de forma a realizar o streaming
através do protocolo RTSP.
Após a implementação dos requisitos anteriormente apresentados, verificou-se a necessi-
dade de adoptar uma nova estratégia para a gestão dos direitos de autor para a reprodução
do conteúdo armazenado localmente. Essa estratégia está descrita no capítulo 5 e pressu-
põe as seguintes funcionalidades:
– Possibilidade de efectuar o download de um conteúdo digital presente no repositó-
rio remoto;
– Reprodução de um conteúdo digital armazenado localmente de forma legítima.
Para que as funcionalidades acima descritas possam ser implementadas torna-se necessária
a existência de um responsável pela verificação de licenças autorizando a reprodução de
um conteúdo. Assim, para que seja concedida a autorização, os dispositivos necessitam de
comunicar com o responsável que lhes é hierarquicamente superior. Esta arquitectura pode
ser replicada a vários níveis desde que exista sempre a delegação de responsabilidades a
um dispositivo hierarquicamente superior aos dispositivos que reproduzem o conteúdo.
Este cenário de super-distribuição acabaria por ser representado apenas ao primeiro nível,
tendo sido implementada um sistema baseado numa aplicação cliente residente capaz de
comunicar com o seu responsável, o servidor.
3.2 Configuração do Sistema Base
Nesta secção serão apresentados os procedimentos realizados com o objectivo de imple-
mentar um servidor capaz de fornecer as funcionalidades necessárias para suportar os
requisitos e serviços propostos. O trabalho aqui apresentado foi desenvolvido numa fase
inicial do projecto e permitiu apenas configurar a máquina que serviu como base de traba-
lho para este projecto.
Estes procedimentos apenas se aplicam ao servidor pelo que um cliente não necessita des-
te tipo de configurações.
3.2.1 O Sistema Operativo
O primeiro passo na instalação e configuração do servidor foi sem dúvida a escolha do
sistema operativo.
Havia duas opções de base, uma arquitectura Win32 ou Unix. Como é sabido os sistemas
operativos baseados em Win32 são orientados à usabilidade do utilizador, disponibilizan-
do ferramentas que permitem uma interacção agradável mas que comprometem a eficiên-
cia do processador. Os sistemas Linux, baseados em Unix, tendem a descurar a interacti-
26
vidade apostando num processamento eficiente. São estas últimas ca
pretende e que são essenciais para um servidor, pelo que, se optou por esta arquitectura.
Escolhido assim o sistema operativo,
ções Linux. Dadas as experiências passadas e a actual uti
do Ubuntu, o que facilita a troca de experiências na resolução de problemas, a escolha
recaiu sobre o Ubuntu.
3.2.2 O Servidor Apache HTTP
A necessidade de proporcionar aos utilizadores uma interface com a maior disponibilidade
possível tornou indispensável implementar uma página web dedicada à utilização do se
viço. Deste modo, o passo seguinte foi a instalação de um servidor
Apache (Apache Server) [23] dado ser o
em 1995 por Rob McCool, então funcionário do NCSA (National Center for
ting Applications), Universidade de Illinois. Na última pesquisa efectuada
www.netcraft.com, em Dezembro de 2005, foi co
supera 60% de servidores activos no mundo, dado ser uma aplicação de código fonte abe
to. Descrevem-se de seguida os comandos usados para configurar e instalar este serviço
cuja versão é 2.0.55:
$ ./configure --prefix=/wwwroot
$ make
$ make install
$ /wwwroot/bin/apachectl start
Depois de instalado e iniciado o serviço
se-á verificar o seu funcionamento:
CAPÍTULO 3: ARQUITECTURA DO SIST
vidade apostando num processamento eficiente. São estas últimas características que se
pretende e que são essenciais para um servidor, pelo que, se optou por esta arquitectura.
Escolhido assim o sistema operativo, foi necessário optar por uma das variadas distribu
ções Linux. Dadas as experiências passadas e a actual utilização massiva da distribuição
do Ubuntu, o que facilita a troca de experiências na resolução de problemas, a escolha
O Servidor Apache HTTP
A necessidade de proporcionar aos utilizadores uma interface com a maior disponibilidade
ssível tornou indispensável implementar uma página web dedicada à utilização do se
viço. Deste modo, o passo seguinte foi a instalação de um servidor HTTP
dado ser o servidor web livre mais bem sucedido. Foi criad
em 1995 por Rob McCool, então funcionário do NCSA (National Center for
ting Applications), Universidade de Illinois. Na última pesquisa efectuada
etcraft.com, em Dezembro de 2005, foi comunicado que a utilização do
de servidores activos no mundo, dado ser uma aplicação de código fonte abe
se de seguida os comandos usados para configurar e instalar este serviço
prefix=/wwwroot --enable-so
/wwwroot/bin/apachectl start
instalado e iniciado o serviço como se descreve na última linha acima, poder
á verificar o seu funcionamento:
Figura 10 – Servidor HTTP
ARQUITECTURA DO SISTEMA
racterísticas que se
pretende e que são essenciais para um servidor, pelo que, se optou por esta arquitectura.
ecessário optar por uma das variadas distribui-
lização massiva da distribuição
do Ubuntu, o que facilita a troca de experiências na resolução de problemas, a escolha
A necessidade de proporcionar aos utilizadores uma interface com a maior disponibilidade
ssível tornou indispensável implementar uma página web dedicada à utilização do ser-
HTTP, neste caso da
servidor web livre mais bem sucedido. Foi criado
em 1995 por Rob McCool, então funcionário do NCSA (National Center for Supercompu-
ting Applications), Universidade de Illinois. Na última pesquisa efectuada pelo site
que a utilização do Apache
de servidores activos no mundo, dado ser uma aplicação de código fonte aber-
se de seguida os comandos usados para configurar e instalar este serviço
como se descreve na última linha acima, poder-
CAPÍTULO 3: ARQUITECTURA DO SISTEMA 27
3.2.3 O PHP
A interactividade que o serviço implica, obriga ao uso de páginas web dinâmicas que por
si só, o servidor Apache HTTP não implementa.
Entre as várias tecnologias que satisfazem o dinamismo pretendido escolheu-se o PHP
[24]. PHP é um acrónimo recursivo para "PHP: Hypertext Preprocessor", caracterizado
por uma linguagem de programação de computadores interpretada, livre e muito utilizada
para gerar conteúdo dinâmico na Web. Apesar de ser uma linguagem de fácil aprendiza-
gem e utilização em scripts dinâmicos, o PHP é uma linguagem poderosa orientada a
objectos cuja sintaxe é similar à linguagem C/C++ e PERL. A justificação para o uso do
PHP ao invés de outras linguagens com objectivos idênticos, como Java Applets, deveu-se
a experiências passadas com o PHP e C/C++.
Foi necessário, então, adicionar o módulo de processamento PHP ao servidor de Apache
HTTP cuja configuração e instalação se apresenta:
$ ./configure --prefix=/wwwroot/php --with-apxs2=/wwwroot/bin/apxs --
with-config-file-path=/wwwroot/php --with-pgsql
$ make
$ make install
Foram também adicionadas as seguintes linhas ao ficheiro /var/www/conf/httpd.conf:
(…) LoadModule php5_module modules/libphp5.so AddType application/x-httpd-php .php (…)
$ /wwwroot/bin/apachectl restart
3.2.4 Base de Dados PostgreSQL
O PostgreSQL [25] é um sistema de gestão de base de dados (SGBD) inicialmente desen-
volvido na Universidade de Berkeley, Califórnia. A partir de 1996, o PostgreSQL, conso-
lidou-se como um projecto de código-fonte aberto desenvolvido por uma comunidade de
voluntários sob a coordenação do PostgreSQL Global Development Group. Além de doa-
ções, o projecto PostgreSQL é financiado pelo patrocínio de diversas empresas, entre as
quais se destacam: Fujitsu, Hub.Org, NTT Group, Red Hat, Skype, SRA e Sun Microsys-
tems.
O software tem adquirido prestígio na comunidade Linux, tendo recebido diversas vezes o
prémio Linux Journal Editor's Choice de melhor SGBD.
Esta é uma aplicação indispensável para a implementação do nosso serviço, possibilitando
guardar toda a informação relevante, como os dados dos utilizadores, suas preferências e
28 CAPÍTULO 3: ARQUITECTURA DO SISTEMA
licenças. É ainda armazenada informação sobre os filmes que o serviço disponibiliza aos
utilizadores estando essa informação associada de acordo com as normas de TV-Anytime.
A instalação desta ferramenta, a qual já está configurada para trabalhar com o PHP, foi
conseguida com comando:
$ apt-get install php5-pgsql
3.2.5 O phpPgAdmin
O phpPgAdmin [26] traduz-se como uma interface gráfica para a gestão da base de dados
remotamente, via protocolo HTTP e apresentação dinâmica via PHP. Deste modo é possí-
vel realizar todas a funções sobre a base de dados de maneira intuitiva. A instalação e con-
figuração deste serviço implicam o uso dos seguintes comandos:
$ apt-get install phppgadmin
$ ln -s /usr/share/phppgadmin /var/www/
A aparência gráfica que esta ferramenta apresenta poder-se-á ver na imagem seguinte:
Figura 11 – Aparência gráfica do phpPgAdmin
3.2.6 Secure Shell
Secure Shell ou SSH é, simultaneamente, um programa de computador e um protocolo de
rede que permite a conexão com outro computador, de forma a executar comandos de uma
CAPÍTULO 3: ARQUITECTURA DO SISTEMA 29
unidade remota. Possui as mesmas funcionalidades do TELNET, com a vantagem da
conexão entre o cliente e o servidor ser encriptada.
O SSH faz parte da lista de protocolos TCP/IP que torna segura a administração remota de
um servidor Unix.
Para a implementação do SSH no servidor, foi usado o pacote OpenSSH disponível nos
repositórios do Ubuntu. A instalação e o arranque do servidor SSH são realizados através
dos seguintes comandos:
$ apt-get install openssh-server
$ sshd
É possível assim, aceder remotamente ao servidor para operações de manutenção ou
administração.
3.2.7 O servidor Tomcat
O Tomcat [27] é um servidor de aplicações Java para Web sendo distribuído como softwa-
re livre e desenvolvido como código-fonte aberto dentro do conceituado projecto Apache
Jakarta. É oficialmente apoiado pela Sun como a Implementação de Referência (RI) para
as tecnologias Java Servlet e JavaServer Pages (JSP). O Tomcat é robusto e eficiente tor-
nando possível a sua utilização em ambiente de produção. Tem ainda, a capacidade de
actuar como servidor web/HTTP, ou pode funcionar integrado com um servidor web dedi-
cado como o Apache HTTP.
Apesar de actualmente não desempenhar um papel relevante no serviço que disponibili-
zamos, foi fundamental para a compreensão do conceito de licença e como esta pode ser
gerada. A sua instalação deveu-se ao facto de nos termos baseado no projecto Chillout do
DMP, o qual tinha como interface para o LPD (License Provider Device) uma aplicação
Web em JSP.
O LPD foi utilizado como teste, gerando um número alargado de licenças e permitindo
uma análise detalhada sobre as mesmas, dando informações relevantes para desenvolver
um criador de licenças via PHP. Assim foi possível integrar o criador de licenças na apli-
cação Web que vinha a ser desenvolvida.
Deste modo, a interface que o Chillout propõe veio a tornar-se dispensável tal como o
serviço que o Tomcat oferece. Faz-se no entanto referência pois foi uma parte importante
no arranque deste projecto, como também foi um dos serviços cuja configuração e instala-
ção consumiu mais tempo. Este serviço pressupõe a existência de uma consola de JAVA.
A instalação do Tomcat:
$ tar -zcvf apache-tomcat-6.0.13.tar.gz /usr/share/tomcat6/
De seguida é necessário editar os seguintes ficheiros, cuja configuração se apresenta:
30 CAPÍTULO 3: ARQUITECTURA DO SISTEMA
/etc/apache2/workers.properties:
# Define 1 real worker using ajp13 worker.list=worker1 # Set properties for worker1 (ajp13) worker.worker1.type=ajp13 worker.worker1.host=localhost worker.worker1.port=8009
/etc/apache2/httpd.conf:
# Load mod_jk module LoadModule jk_module /usr/lib/apache2/modules/mod_jk.so # Where to find workers.properties JkWorkersFile /etc/apache2/workers.properties # Where to put jk logs JkLogFile /var/log/apache2/mod_jk.log # Set the jk log level [debug/error/info] JkLogLevel info # Select the timestamp log format JkLogStampFormat "[%a %b %d %H:%M:%S %Y] " # Send everything for context /examples to worker named worker1 (ajp13) JkMount /examples/* worker1
Após este procedimento, basta colocar a Servlet no directório /usr/share/tomcat6/webapps
e de seguida usar a interface de gestão via browser para iniciar o serviço.
3.2.8 O Axis
O Apache Axis [28] é uma framework de código-fonte aberto, suportado pela Apache
Software Foundation e baseado na linguagem JAVA e no padrão XML. Este projecto sen-
do uma implementação do protocolo SOAP, é utilizado para construção de serviços Web
possibilitando a criação de aplicações distribuídas em Java.
O LPD dependia desta framework pelo que a sua instalação foi indispensável. A instalação
é de procedimento fácil pelo que, depois de realizar o download do seu repositório no pro-
jecto Apache, basta extrair os ficheiros no directório /usr/share/tomcat6/webapps. De
seguida executar o seguinte comando:
$ cp -R /usr/share/tomcat6/webapps/axis/WEB-INF/lib /usr/share/tomcat6/lib
Por fim basta iniciar o serviço como havia sido descrito no ponto anterior.
3.2.9 O LPD
O LPD, License Provider Device, foi uma interface desenvolvida no âmbito do projecto
Chillout do DMP (Digital Media Project) cuja finalidade se enquadra com a criação de
licenças para conteúdos digitais. A sua instalação pressupõe, como anteriormente, a cópia
dos ficheiros do Chillout_LPD para o directório /usr/share/tomcat6/webapps/ e de seguida
o arranque do serviço através da interface de gestão via web browser.
CAPÍTULO 3: ARQUITECTURA DO SISTEMA 31
3.2.10 O Darwin Streaming Server
Decidiu-se utilizar como servidor de streaming, o Darwin Streaming Server V5.5.4. Os
ficheiros binários para instalação foram adquiridos na página http://developer.
apple.com/opensource/server/streaming/index.html assim como toda a documen-
tação relativa à instalação, configuração e administração do servidor.
De seguida apresentam-se os comandos para instalação e configuração do servidor de
streaming. Os comandos apresentados pressupõem a existência do ficheiro DarwinStrea-
mingSrvr5.5.5-Linux.tar.gz já no servidor.
$ tar -zcvf DarwinStreamingSrvr5.5.4-Linux.tar.gz /tmp/DDS/
$ cd /tmp/DDS
$ ./Install
Após a execução destes comandos o servidor encontra-se instalado no sistema, resta ape-
nas arrancar o serviço e ajustar as configurações. Para iniciar o servidor é necessário exe-
cutar o seguinte comando:
$ streamingadminserver.pl
Após este passo, o servidor Darwin é iniciado e, para além disso, é lançado uma aplicação
web em Perl que permite a administração do servidor. Para aceder a essa aplicação é
necessário estabelecer uma ligação HTTP no porto 1220 da máquina que hospeda a apli-
cação. Através da aplicação web é possível alterar as configurações do servidor, como
permitir ou inibir fluxo na porta 80, definir o número máximo de utilizadores simultanea-
mente, a largura de banda máxima fornecida, o caminho para o repositório de filmes ou
alterar o método de autenticação entre outros. A aplicação permite também obter informa-
ções sobre os clientes conectados a um conteúdo audiovisual no servidor assim como
conhecer estatísticas sobre o servidor e controlar o seu estado.
O servidor está automaticamente configurado para escutar pedidos RTSP no porto 554 e
poderá ser configurado para permitir o fluxo de dados através do porto 80 para ultrapassar
possíveis problemas com firewalls.
O repositório dos conteúdos digitais está automaticamente integrado na estrutura do servi-
dor, ou seja, é um directório instalado por defeito em usr/local/movies/ ao qual o ser-
vidor acede quando lhe é feito um pedido de streaming. O directório poderá ser alterado
ou mesmo acrescentados novos directórios dentro desde directório principal, sendo parti-
cularmente útil para a organização dos conteúdos dentro do repositório do servidor.
Capítulo 4
4 Sistema baseado em Aplicação Web
Uma importante parte do projecto foi dedicada ao desenvolvimento de uma aplicação cuja
interface é acessível via web através de um browser. Pretende-se com esta interface pro-
porcionar aos utilizadores uma espécie de portal para que estes possam procurar o conteú-
do desejado, criar licenças relacionadas com esse mesmo conteúdo e por fim visualizá-lo
de forma intuitiva e transparente.
4.1 O Servidor
No contexto da arquitectura do servidor podemos definir vários módulos importantes para
a criação de um sistema seguro e fiável. Como é possível ver na Figura 12, esses módulos
são a aplicação VoD, a Base de dados, um driver para a conexão entre estes dois últimos e
o servidor de streaming.
Figura 12 – A arquitectura do Servidor
34 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
Nesta secção serão apresentadas as tecnologias utilizadas para a criação destes diferentes
módulos.
Para a aplicação VoD serão apresentadas as tecnologias (4.1.1) que levaram à criação de
uma aplicação web, tal como os aspectos mais importantes do seu dimensionamento.
Esses aspectos englobam os tipos de utilizador (4.1.2), o mapa da aplicação (4.1.3) e o
motor de criação de licenças (4.1.4).
Ainda nesta secção haverá lugar para a apresentação da base de dados criada (4.1.5).
4.1.1 As tecnologias utilizadas
Para a concretização dos objectivos propostos para esta aplicação, recorreu-se a tecnolo-
gias para criação de páginas web dinâmicas, que permitam a interacção com uma base de
dados para o suporte da informação relativa ao projecto. Foram usadas as linguagens de
programação HTML, Smarty e PHP, e o driver Pear que permite a conexão entre o PHP e
a base de dados PosgreSQL. Nas secções seguintes serão detalhadas cada uma destas tec-
nologias, excepto o PHP já mencionada e explicada.
4.1.1.1 HTML
O HTML é uma linguagem de marcação para a descrição de hipertexto usada na criação
de páginas web. É assim possível descrever, por texto, a estrutura da informação catalo-
gando determinado texto como títulos, parágrafos, listas, etc. Possibilita também a criação
de formulários interactivos e a disposição de imagens ou outros objectos enquadrados no
texto.
O HTML é escrito na forma de etiquetas delimitadas pelo sinal menor (<) e sinal maior
(>) e descreve também a aparência e a semântica de um documento.
Com esta linguagem definimos um modelo de apresentação para a aplicação o web com-
plementada na sua semântica pelo uso das tecnologias Smarty e PHP.
4.1.1.2 Smarty
O Smarty é um sistema para a criação de modelos para páginas web desenvolvido em
PHP. Tem a vantagem de separar o código PHP (orientado a criação de funções) do
HTML (orientado à criação de modelos de apresentação) com a criação de um modelo de
apresentação HTML com marcas próprias (Smarty Tag) delimitadas pelo sinal dólar ($).
Estas marcas podem representar variáveis ou funções que permitem aos programadores de
PHP definir funções ou variáveis cujo valor será mais tarde substituído pelas marcas do
Smarty. Esta independência entre as linguagens criada pelo Smarty permite que um desig-
ner não esteja dependente do código PHP e um programador de PHP não esteja dependen-
te do modelo de apresentação.
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 35
Depois de criado o modelo HTML com as marcas Smarty, estas últimas tomariam valores
retirados da base de dados através do PHP permitindo a criação de páginas web dinâmicas
à medida do pedido do utilizador.
4.1.1.3 Pear
PEAR MDB2 é uma junção das camadas de abstracção dos pacotes PEAR DB e META-
BASE PHP. Proporciona uma API para os Sistemas de Gestão de Base de Dados Relacio-
nais, caso do PostgreSQL usado neste projecto. A principal diferença em relação a Maio-
ria dos pacotes de abstracção de base de dados é que o MDB2 suporta melhor a portabili-
dade.
Usada a API disponibilizada por este pacote é possível através do PHP inquirir a base de
dados recolhendo a informação relevante para o tratamento dos pedidos de cada utilizador.
4.1.2 Os tipos de utilizador
Definiram-se quatro tipos de utilizador os quais possuem permissões com níveis diferen-
ciados de interacção com a aplicação.
O Utilizador Não Registado têm um controlo reduzido sobre a aplicação, tendo apenas a
possibilidade de listar e pesquisar conteúdos.
O Utilizador Registado, para além das possibilidades já descritas para o tipo de utilizador
anterior, tem também a permissão para reproduzir os conteúdos disponibilizados, comprar
ou renovar uma licença associada a um conteúdo, fazer o download das suas licenças,
definir preferências por categorias de filme, género, actor, realizador, língua ou legenda e
por fim editar os seus dados pessoais, bem como modificar a sua senha.
Existe também um Super Utilizador o qual é visto como um Utilizador Registado com
permissões alargadas. Estas permissões prendem-se com a possibilidade de alterar a
informação na base de dados, como adicionar, editar ou remover filmes, actores, realiza-
dores, distribuidores.
O Administrador tem total controlo sobre a aplicação, e além de todos os tipos de acções
já definidas para outros utilizadores, é-lhe dada a possibilidade de delegar um Super Utili-
zador, bem como fazer a gestão da base de dados de clientes.
4.1.3 O mapa da aplicação Web
Nesta secção encontra-se descrito o mapa da aplicação web e a sua navegabilidade. A des-
crição gráfica da arquitectura está ilustrada na Figura 19, a qual passaremos a explicar.
Assim, o painel de controlo encontra-se dividido em sete grandes grupos, estes são:
• Home – Referencia a página de entrada da nossa aplicação, a qual apresenta uma
breve descrição do nosso projecto e os últimos conteúdos inseridos na base de
dados. No caso de o utilizador ter o seu login realizado, oferecemos também algu-
36 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
mas sugestões de conteúdos de acordo com as suas preferências previamente inse-
ridas na sua área pessoal. Se o utilizador não tiver ainda qualquer preferência asso-
ciada, será convidado a fazê-lo.
• Filmes – Este menu permite ao utilizador listar todos os filmes que constam na
base de dados ou usar o motor avançado de pesquisa parametrizando-o de acordo
com as suas necessidades. Qualquer uma das opções escolhidas apresenta ao utili-
zador uma lista constituída por um ou vários nomes de filmes ao qual chamamos
“Item Filme”. Este Item Filme, por sua vez, é uma ligação para uma descrição mais
pormenorizada do filme, oferecendo também este último, ligações para descrições
pormenorizadas de cada um dos actores, realizador ou mesmo o distribuidor. É
também dada ao utilizador a opção para este ver o filme, no entanto, esta só se
concretiza se existir uma licença válida para esse filme, associada ao utilizador em
questão. Caso não exista uma licença que satisfaça os requisitos acabados de enun-
ciar é apresentada ao utilizador a hipótese de comprar ou renovar a sua licença. Por
último, no caso de um administrador ou de um super utilizador, são apresentadas
as opções para adicionar um filme ou características. Este último submenu reparte-
se por adicionar um novo género, tipo de cor, parental rating ou aspect ratio.
Figura 13 – Menu Filmes presente na aplicação Web
• Actores – Esta opção permite listar o nome dos actores que constam na base de
dados. Cada nome de actor, “Item Actor”, é uma referência a uma página com
informação detalhada sobre esse mesmo actor, a qual apresenta também referen-
cias aos filmes presentes na base de dados em que esse actor representou. Cada um
dos filmes é considerado um “Item filme”, pelo que é válido o que foi dito sobre
este item. No caso de um administrador ou super utilizador, mais uma vez, é apre-
sentada a opção de adicionar um novo actor à base de dados.
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 37
Figura 14 – Menu Actores presente na aplicação Web
• Realizadores – Este menu comporta-se do mesmo modo acima descrito para o
menu actores, mas neste caso, os objectos com que se interage são os realizadores.
Também neste caso, existe uma lista de “Itens Realizador” em que cada item é
uma ligação a uma página detalhada sobre esse realizador com referência aos fil-
mes presentes na base de dados já realizados. Cada um dos filmes é considerado,
novamente, um “Item filme”.
Figura 15 – Menu Realizadores presente na aplicação Web
• Distribuidores – Novamente a estrutura mantém-se como nos dois menus anterio-
res, pelo que não é necessário repetir toda a informação. Salienta-se apenas que
neste caso a informação incide sobre os distribuidores de filmes.
Figura 16 – Menu Distribuidores presente na aplicação Web
38 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
• Licenças – Neste caso, existe uma referência a uma página de informações sobre
licenças na qual explicamos ao utilizador o que significa, para que servem e a
necessidade da sua aplicação.
Figura 17 – Menu Licenças presente na aplicação Web
• Área Pessoal – Este menu é privado e define a informação associada a cada um dos
utilizadores registados. Só é visível para utilizadores que tenham efectuado o seu
login no sistema, possibilitando-lhes a definição das suas preferências em relação
aos actores, realizadores, filmes, géneros, língua ou mesmo legendas. Estas prefe-
rências servem como base a um algoritmo que oferecem sugestões sobre conteúdo
ao utilizador, as quais podem ser consultadas na opção Sugestões deste mesmo
menu. Ainda neste menu, é possível ao cliente editar os seus dados pessoais, como
Nome, Data de Nascimento, Email e modificar a sua password. O último submenu
disponível é referente às licenças que o utilizador possui, podendo consultar e veri-
ficar o estado de cada licença.
Figura 18 – Menu referente à Área Pessoal do utilizador na aplicação Web
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 39
• A última referência não se identifica propriamente com um menu mas sim com
uma ligação que consta no site a todo o instante. Esta ligação permite aos utiliza-
dores efectuar o download do programa de instalação do VoD Client. Esta ferra-
menta será apresentada mais à frente neste documento e permite fazer a gestão das
licenças para conteúdo localmente armazenado.
Na Figura 19 apresenta-se o mapa completo da aplicação Web. Nesse mapa é possível
identificar as ligações entre as várias secções da aplicação através dos itens coloridos.
Cada item colorido referencia o item do menu principal onde este se encontra incluído.
É ainda possível verificar quais as permissões necessárias para poder visualizar as páginas
privadas. Essas permissões podem ser permissões de Administrador, Super-User ou de
todos os utilizadores que tenham efectuado login e estão indicadas a vermelho por baixo
das páginas privadas. A identificação das páginas privadas é assim efectuada pela presen-
ça de permissões a vermelho por baixo do seu nome.
40 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
Figura 19 – Estrutura da navegabilidade da Interface Web
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 41
4.1.4 A Criação das Licenças
Dada a análise preliminar sobre plataformas para criação de licenças, optou-se, numa pri-
meira fase, por usar o LPD do Chillout. Concluímos, mais tarde, que seria trivial imple-
mentar as rotinas do LPD evitando assim a integração de dois sistemas distintos. Deste
modo, elaboramos um pequeno programa que gera o mesmo output do LPD, ou seja, um
ficheiro XML que representa uma licença.
A interface que o LPD proporciona tem como parâmetros de entrada um Utilizador, o URI
para conteúdo, um direito, uma ou várias condições e o distribuidor.
Figura 20 - A interface do LPD
Como é fácil deduzir, não poderíamos dar permissão a um utilizador para inserir todos
estes parâmetros, até porque alguns deles poderiam estar já previamente definidos. Isto é,
apenas um utilizador registado e identificado poderá criar licenças, sendo que o parâmetro
Utilizador fica desde logo definido, evitando com isto dar oportunidade a um utilizador de
criar uma licença em nome de outro. Outro caso a salientar é o direito sobre o conteúdo,
que numa aplicação de streaming apenas será adequado o direito de reproduzir.
Figura 21 - Direito para Reproduzir
O URI para conteúdo também é inserido automaticamente devido ao facto de ser gerado
pela aplicação garantindo assim que seja único. O parâmetro distribuidor, o qual varia
com o conteúdo escolhido, é também inserido automaticamente pois está inserido na base
42
de dados e directamente relacionado com o c
Restam apenas as condições, fazendo claro sentido ser o utilizador a especificar que co
dição pretende para a sua licença bem como os limites associados a essa condição. Pode
se ver um exemplo das decisões que
Figura 22 - Exemplo de uma combinação definida pelo utilizador
Apresenta-se de seguida na Figura 23
permitindo criar uma licença. Neste ca
com o direito de reprodução e tod
Figura 23
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
de dados e directamente relacionado com o conteúdo para o qual se está a criar a licença
apenas as condições, fazendo claro sentido ser o utilizador a especificar que co
pretende para a sua licença bem como os limites associados a essa condição. Pode
se ver um exemplo das decisões que o utilizador pode tomar na Figura 22.
Exemplo de uma combinação definida pelo utilizador
se de seguida na Figura 23, a interface completa disponibilizada
permitindo criar uma licença. Neste caso cria-se uma licença para o filme
e todas as condições seleccionadas.
23 – Interface para a criação de licenças
PLICAÇÃO WEB
onteúdo para o qual se está a criar a licença.
apenas as condições, fazendo claro sentido ser o utilizador a especificar que con-
pretende para a sua licença bem como os limites associados a essa condição. Pode-
Exemplo de uma combinação definida pelo utilizador
disponibilizada ao utilizador
se uma licença para o filme O meu vídeo
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 43
A aplicação, através dos dados introduzidos pelo utilizador, cria a licença e introduz a sua
informação na base de dados. Pode ver-se parte do seu código do excerto seguinte.
(…) // Verifica o direito sobre o conteúdo escolhido if($right == NULL) $right='play'; else
$errors['right']=TRUE; // Verifica se a condição do tipo limite de utilização foi seleccionada // Verifica ainda se existe algum erro no valor do número de utilização if($limit == "checkbox"){
$countlimit='TRUE'; if($countLimit < 1 or !ctype_digit($countLimit)) $errors['countLimits'] = FALSE; else $errors['countLimits']=TRUE; } else { $countlimit='FALSE'; $countLimit=0; } // Verifica se a condição do tipo intervalo de tempo foi seleccionada // Verifica ainda se existe algum erro nos valores inseridos pelo // utilizador para o intervalo de validade if($time == "checkbox"){ $validityinterval='TRUE'; if($notbefore==NULL or !is_valid_date($notbefore)) $errors['notbefore']=FALSE; else $errors['notbefore']=TRUE; if($notafter==NULL or !is_valid_date($notafter)) $errors['notafter']=FALSE; else $errors['notafter']=TRUE; } else { $validityinterval='FALSE'; $notbefore=date("Y-m-d"); $notafter=date("Y-m-d"); } // Verifica se a condição do tipo território de validade // foi seleccionada // No caso de este tipo de condição estiver seleccionada verifica se os // campos país e região não estão vazios if($territory == "checkbox"){ $validityregion='TRUE'; if($countryList==NULL) $errors['countryList']=FALSE; else $errors['countryList']=TRUE; } else $validityregion='FALSE'; (…)
44 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
// Se o utilizador ainda não possuir uma licença para este filme // insere uma nova licença na base de dados if($license === false){ // Gera um URI único para a licença criada $uri=generateURI($_SESSION["s_username"],$id); // Preenche os vários campos a incluir na licença $filme=getIssuesInfo($id); $grant_keyname=$_SESSION["s_username"]; if(!empty($filme['nome'])) $issuer_keyname=$filme['nome']; else $issuer_keyname='VoD'; // Adiciona a licença na base de dados addLicense($uri,$grant_keyname,$issuer_keyname,$countLimit,$right, $countryList,$regionList,$notbefore,$notafter,$countlimit, $validityregion, $validityinterval,$id); // A variável de sessão seguinte indica que é possível enviar o URL // do filme ao utilizador $_SESSION["s_granted"]="TRUE"; header("location: verFilme.php?id=$id"); exit(); } (…)
A aplicação, através dos dados introduzidos pelo utilizador, cria uma licença no formato
XML com o nome produzido através da associação entre o nome de utilizador e o filme
para o qual a licença é gerada sendo ainda acrescentada uma marca temporal da altura em
que é efectuado o download da licença. Passa-se a transcrever o conteúdo do ficheiro
vhsb_O meu video_1182869858.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <ns3:license xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://www.w3.org/2001/04/xmlenc#" xmlns:ns3="urn:mpeg:mpeg21:2003:01-REL-R-NS" xmlns:ns4="urn:mpeg:mpeg21:2003:01-REL-SX-NS" xmlns:ns5="urn:mpeg:mpeg21:2005:01-REL-BPX-NS" xmlns:ns6="urn:mpeg:mpeg21:2003:01-REL-MX-NS" xmlns:ns7="urn:mpeg:mpeg21:2006:01-REL-DACX-NS"> <ns3:grant> <ns3:keyHolder> <ns3:info> <KeyName>vhsb</KeyName> </ns3:info> </ns3:keyHolder> <ns6:play/> <ns3:digitalResource> <ns3:nonSecureIndirect URI="vhsb:1182869272:34"/> </ns3:digitalResource> <ns3:allConditions> <ns4:exerciseLimit> <ns4:count>14</ns4:count> </ns4:exerciseLimit>
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 45
<ns4:territory> <ns4:location> <ns4:country xmlns:iso="urn:mpeg:mpeg21:2003:01-REL-SX-NS:country">iso:PT</ns4:country> <ns4:region xmlns:iso="urn:mpeg:mpeg21:2003:01-REL-SX-NS:region">iso:PT-13</ns4:region> </ns4:location> </ns4:territory> <ns3:validityInterval> <ns3:notBefore>2007-07-03</ns3:notBefore> <ns3:notAfter>2007-07-18</ns3:notAfter> </ns3:validityInterval> </ns3:allConditions> </ns3:grant> <ns3:issuer> <ns3:keyHolder> <ns3:info> <KeyName>MGM</KeyName> </ns3:info> </ns3:keyHolder> </ns3:issuer> </ns3:license>
Tal como é possível ver na transcrição do ficheiro XML, o URI possui um valor único
gerado pela aplicação. Esse valor é criado através da associação do nome do utilizador a
uma marca temporal da altura em que a licença é gerada e também ao identificador do
filme na base de dados.
Pode ainda verificar-se no ficheiro em XML que o número de vezes que o cliente pode
visualizar o filme é catorze e não quinze como especificado na criação da licença. Isto
verifica-se porque depois de criar a licença o utilizador é redireccionado para a página que
permite a visualização do filme descontando na base de dados o número de vezes que ain-
da pode ver.
4.1.5 A Base de Dados
A base de dados é um suporte indispensável a qualquer aplicação. Nesta secção serão
apresentados alguns dos descritores usados que se figuram mais importantes e que acha-
mos essencial detalhar. As tabelas completas que constituem a base de dados serão descri-
tas no anexo A.
4.1.5.1 Descritores TV-Anytime
O Fórum TV-Anytime [29] é uma associação que procura desenvolver especificações para
permitir que conteúdo audiovisual tal como outros serviços de volume de armazenamento
digital elevado, cheguem até às plataformas do utilizador.
Este grupo teve início em Newport Beach, California, USA, entre 27 e 29 de Setembro de
1999 e as primeiras especificações foram publicadas pelo European Telecommunications
Standards Institute (ETSI) a 1 de Agosto de 2003 com a norma TS 102 822-1 'Broadcast
46 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
and On-line Services: Search, select, and rightful use of content on personal storage sys-
tems ("TV-Anytime")'.
O fórum conta com a participação de mais de 60 instituições entre as quais se destacam
nomes como Sony, Panasonic, LG, Samsung, Sharp, Toshiba, BBC, Disney, EBU, France
Telecom, Nokia, Philips, Thomson, Motorola e Microsoft.
O seu trabalho de normalização visa atingir quatro objectivos:
1. Desenvolver especificações que permitam às aplicações tirar partido do armaze-
namento local nas plataformas electrónicas do consumidor.
2. Ser imparcial quanto ao meio de transmissão para entrega de conteúdo no equipa-
mento electrónico de consumidor, seja ele ATSC, DVB, DBS, Internet, Enhanced
TV ou outro.
3. Desenvolver especificações para a interoperabilidade e integração de sistemas des-
de o criador/fornecedor, através dos fornecedores de serviço, até aos consumido-
res.
4. Especificar as estruturas de segurança necessárias para proteger o interesse de
todas as partes envolvidas.
Dado o trabalho de normalização realizado por este fórum foi considerado interessante o
uso das especificações aconselhadas. Assim, no seguimento do projecto e pela altura de
definir a base de dados, recorreu-se aos documentos publicados por este grupo de modo a
elaborar uma base de dados o mais normalizado possível. Encontraram-se, no entanto,
especificações demasiado pormenorizadas e que, em muitos casos, não se adequavam no
âmbito deste projecto pelo que foram escolhidos os descritores mais apropriados. Cons-
truiu-se assim uma base de dados mais simplificada em concordância com as necessidades
do trabalho e de acordo com especificações normalizadas.
Os descritores TV-Anytime usados serão apresentados de seguida:
Tabela 2 - Descritores básicos do TV-Anytime
Basic Description Estrutura que define os descritores normalizados para um
programa.
Title Título do programa.
Synopsis Descrição textual do programa.
Keyword
Lista de palavras-chave para o programa. A palavra-
chave pode ser uma única palavra ou uma frase inteira
composta por várias palavras.
Genre Género do programa.
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 47
Parental Rating Controlo parental para o programa definindo a idade
mínima para o programa.
Production Year Ano em que o programa foi produzido.
Production Country Pais no qual o programa foi produzido. É definido pelo
código ISO de cada país.
Creation Location Localização na qual o programa foi criado.
Creation Date Data de criação do programa.
Language Linguagem do programa. Pode existir mais do que uma
linguagem para o programa.
Cast List Lista do elenco associado ao programa.
Tabela 3 – Descritores de atributos técnicos
AV Technical Attributes Estrutura, a qual define os descritores que elementa-
res dos atributos técnicos do áudio e vídeo.
File Format Descrição do formato do ficheiro do programa.
File Size Indicação do tamanho, em bytes, do programa no
local de armazenamento.
Bit Rate Indicação da taxa de débito binário (bit/s) do pro-
grama.
Audio Attributes Type Estrutura para a descrição das características do
áudio.
Coding Formato de codificação do áudio.
Num Of Channels Número de canais áudio.
Video Attributes Type Estrutura que define os elementos para a descrição
das características do vídeo.
Coding O formato de codificação do vídeo.
Scan O tipo de varrimento do vídeo.
Horizontal Size Tamanho horizontal em pixéis do vídeo.
Vertical Size Tamanho vertical em pixéis do vídeo.
Aspect Ratio O aspect ratio do vídeo.
Color O formato de cor do vídeo (ex. preto e branco)
48 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
Aspect Ratio Type Texto que permite descrever de forma simples o
aspect ratio na forma 'h:v', onde h e v representam
as dimensões horizontal e vertical respectivamente.
4.1.5.2 Outros descritores usados
Além dos descritores já apresentados do TV-Anytime, foram usados outros mais, indis-
pensáveis à gestão de utilizadores bem como a outras funcionalidades que desejamos
implementar. A estrutura completa da base de dados poderá ser consultada no Anexo A
mas far-se-á no entanto uma breve explicação das tabelas mais importantes da base de
dados.
As tabelas A1, A3 e A12 do anexo A contêm informação básica sobre um actor, um reali-
zador e um distribuidor respectivamente.
A tabela A7 é usada para associar fotos presentes na base de dados com o actor a que cor-
respondem. Já a tabela A8, tem a mesma função, mas agora, associando um poster/cartaz a
um filme.
A tabela A16 é a de maior importância no âmbito do nosso projecto e que resume a sua
essência. Prende-se com a representação de uma licença e de todos as variáveis que a
constituem que passaremos a descriminar:
• URI: esta variável guarda um identificador, único, o qual indexa de forma inequí-
voca a licença. É gerado tendo em conta o conteúdo para o qual a licença é gerada,
o utilizador que requer a licença e a data/hora em que esta é gerada.
• Grant_KeyName: identifica o utilizador que fez o requerimento da licença para
determinado conteúdo.
• Issuer_KeyName: identifica o distribuidor do conteúdo para o qual a licença é
gerada.
• Count: armazena o número de vezes que o filme pode ser reproduzido no caso de
esta licença ter uma condição de limite de utilização.
• Content_Right: esta variável representa o direito que a licença possibilita ao utili-
zador para actuar sobre o conteúdo, por exemplo, editar, imprimir ou reproduzir,
etc.
• Country: representa o país onde pode ser executado um direito sobre um conteúdo
no caso de existir uma condição do tipo região de validade.
• Region: representa uma região dentro de determinado país, mantendo-se o caso
descrito anteriormente.
• NotBefore: variável representativa da data anterior à qual o direito não pode ser
executado sobre o conteúdo, quando existe uma condição de validade num interva-
lo de tempo.
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 49
• NotAfter: o mesmo que o anterior, representando no entanto, a data limite depois
da qual o direito sobre o conteúdo não pode ser executado.
• CountLimit: variável booleana que define a existência de uma condição de limite
de utilização sobre o conteúdo.
• ValidityRegion: também uma variável booleana definindo agora a existência de
uma condição de região de validade.
• ValidityInterval: o mesmo tipo de variável descrevendo a existência de uma condi-
ção do tipo validade num intervalo de tempo.
• ID_Media: identificador do filme ao para o qual a licença foi gerada.
A tabela A17 é uma aplicação dos descritores TV-Anytime, contendo dois outros campos,
representando a localização do ficheiro no disco e imagem do poster/cartaz associado.
Na tabela A18 são armazenados os dados relevantes de cada utilizador justificando-se
assim a sua utilização:
• Login: o nome que o utilizador define e usa para se identificar na nossa aplicação.
• User_Type: define o nível de permissões que o utilizador tem na sua interface com
a aplicação.
• PNome: primeiro nome do utilizador
• UNome: último nome do utilizador.
• Email: correio electrónico do utilizador, o qual necessita ser válido para o envio de
um código de activação. Só depois de activo é que o utilizador pode aceder ao sis-
tema.
• Data_Nascimento: data de nascimento do utilizador. Pode ser utilizada, por exem-
plo, para verificar o parental rating permitindo ao utilizador o acesso ou não ao
conteúdo. Esta funcionalidade não está implementada mas poderá ser desenvolvida
no futuro.
• Activated: variável booleana que indica se o utilizador já activou o seu registo.
• MD5Activation: código de activação gerado para o utilizador.
• Password: a senha do utilizador.
As tabelas A20 a A29 apenas evidenciam a relação entre as várias tabelas que constituem
a base de dados, não contendo no entanto informação relevante.
4.2 O Cliente
A abordagem web permite uma fácil organização do lado do cliente. Como é possível ver
na Figura 24, tudo o que cliente necessita para aceder à aplicação, sem qualquer tipo de
restrição, é um browser e um reprodutor multimédia.
50 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
Figura 24 – A arquitectura no lado Cliente
4.2.1 O Browser
Possuir um browser é condição essencial para poder aceder à aplicação criada. O utiliza-
dor que pretende usufruir da totalidade dos serviços terá que ter instalado esse aplicativo
no seu terminal de acesso à Internet. Existem vários browsers disponíveis como o Internet
Explorer, Mozilla Firefox, Safari e Opera entre outros. No entanto, o design da aplicação
foi optimizado para o Mozilla Firefox pelo que aconselhamos o seu uso.
4.2.2 O Reprodutor MPEG-4
Outra condição essencial para a utilização do serviço que este projecto oferece é possuir
um reprodutor multimédia equipado com o descodificador MPEG-4, ou com capacidade
para reproduzir este tipo de ficheiros. O Windows Media Player tem esta capacidade, no
entanto, todos os testes foram realizados utilizando o QuickTime Player. Aconselhamos o
uso deste último por ser o programa aconselhado pela Apple, empresa que desenvolveu o
Darwin Streaming Server, a aplicação usada para fazer o streaming do vídeo.
4.3 A conexão ao servidor de streaming
O trabalho realizado pelo DMP parte de um pressuposto que o terminal é fiável, pelo que
não seria possível ao utilizador alterar os mecanismos de acesso estabelecidos. No entanto
sabe-se que actualmente não existe um terminal que satisfaça este pressuposto pelo que
foram implementadas algumas rotinas de segurança.
Depois de uma análise das capacidades do DSS verificou-se que este implementava con-
trolo de acesso. No entanto, um utilizador registado na base de dados do DSS, de forma
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 51
permanente, poderia reproduzir qualquer conteúdo que este disponibilize, independente-
mente de possuir ou não licença para essa reprodução, onde o único requisito seria saber
qual o URL para o conteúdo.
Descreve-se um caso real da sua utilização indevida: um utilizador compra uma licença de
limite de reprodução para uma única utilização. Decide então reproduzir o conteúdo, pelo
que recebe o URL desse conteúdo e visualiza-o. Após esta reprodução a sua licença expira
pelo que esse utilizador não poderá voltar a reproduzir o conteúdo. Constatou-se que ape-
sar disso, se o utilizador estivesse registado na base de dados, como possui o URL para o
conteúdo, poderia sempre visualizá-lo.
Para combater esta possível falha desenvolveu-se um sistema de protecção que se caracte-
riza por, registar o utilizador que pretende aceder ao conteúdo na base de dados do DSS,
apenas por 60 segundos. Deste modo, o utilizador pode aceder ao DSS com o seu nome de
utilizador e a sua senha nos 60 segundos após ter requerido determinado conteúdo para o
qual tinha licença. Após ter expirado essa temporização o registo é removido pelo que não
poderá voltar a aceder ao DSS a não ser que requisite de novo o filme.
A implementação desta solução obrigou à criação de um ficheiro com o nome “qtaccess”
no directório que alberga o repositório de filmes, no caso, /usr/local/movies/ e cujo con-
teúdo se representa de seguida:
<Limit WRITE> require user adminis </Limit> AuthName "Ver Filme" AuthUserFile /etc/streaming/qtusers AuthGroupFile /etc/streaming/qtgroup require user vod require group require valid-user
Foi necessária também a alteração do ficheiro /etc/sudoers possibilitando à aplicação web,
via PHP, executar comandos do sistema sem qualquer tipo de restrição. Esses comandos
são necessários para o registo de utilizadores na base de dados do DSS e a sua remoção
após a expiração do tempo de login. Salientam-se as alterações feitas no ficheiro referen-
ciado:
(…) www-data ALL=NOPASSWD: /usr/local/bin/qtpasswd, /bin/cp, /bin/mkdir, /usr/sbin/sendmail
(…)
As instruções que permitem adicionar e remover o par utilizador e a sua password à base
de dados do DSS apresentam-se respectivamente:
52 CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB
(…) function addUser($username,$pass) { $output=shell_exec("sudo qtpasswd ".$username." -p ".$pass); } function removeUser($username) { $output=shell_exec("sudo qtpasswd -F -d ".$username); } (…)
Esta foi uma solução encontrada, que sabemos não ser ideal, mas dado o tempo disponibi-
lizado foi a possível. No entanto foram pensadas outras soluções as quais serão apresenta-
das no capítulo de Perspectivas de Desenvolvimento Futuro que poderão colmatar algu-
mas deficiências desta opção.
4.4 Caso de utilização
Apresentado o sistema implementado é importante dar um exemplo de utilização desse
mesmo sistema. Na Figura 25 é possível identificar um caso de utilização em que um uti-
lizador registado na aplicação tenta aceder a um vídeo da sua preferência e efectua o pedi-
do da sua reprodução.
Figura 25 – Troca de mensagens entre o cliente e a aplicação Web
Como é possível ver na Figura 25, o utilizador através do seu browser efectua o pedido da
listagem dos filmes existentes no servidor. Após a visualização da listagem de todos os
filmes, o utilizador escolhe o seu conteúdo de preferência e faz o pedido para a visualiza-
CAPÍTULO 4: SISTEMA BASEADO EM APLICAÇÃO WEB 53
ção das informações desse mesmo conteúdo. Após analisar as informações retornadas, o
utilizador faz um pedido de reprodução o qual é seguido por uma verificação da licença
associada ao utilizador para a reprodução desse conteúdo. Ao confirmar a autorização des-
se pedido, a aplicação VoD devolve também o URL para o conteúdo pretendido. Pode-se
verificar o código-fonte que implementa esse procedimento no extracto de código seguin-
te. Pode verificar-se a utilização de um plugin para o Quicktime, a aplicação aconselhada.
(…) <OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" height="32" width="32" CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab">
<param name="src" value="images/play.mov"> <param name="controller" value="true"> <param name="href" value="rtsp://194.117.26.50/{$filme.file_uri}"> <param name="target" value="quicktimeplayer"> <EMBED src="images/play.mov" width="176" height="200"
controller="true" href="rtsp://194.117.26.50/{$filme.file_uri}" target="quicktimeplayer">
</EMBED> </OBJECT> (…)
O URL é utilizado pelo reprodutor multimédia Quicktime, ou caso este não exista, pelo
reprodutor predefinido para realizar a conexão ao servidor de streaming DSS através do
protocolo RTSP.
Capítulo 5
5 Sistema baseado na Aplicação Cliente residente
Esta aplicação caracteriza-se por ser um software para instalação local no terminal do uti-
lizador, pretendendo fornecer serviços complementares aos que são já oferecidos via apli-
cação web.
Foi desenvolvido para o sistema operativo Windows dado ser este o mais utilizado pelos
utilizadores comuns. A linguagem de programação escolhida foi o Visual Basic pois é um
produto Microsoft cuja finalidade é desenvolver aplicações para Windows. Contém todas
as bibliotecas essenciais e permite um desenho fácil para aplicações gráficas. Estas vanta-
gens levaram à sua adopção apesar do nosso escasso conhecimento sobre a linguagem.
A arquitectura para o sistema baseado na aplicação cliente residente é diferente da anterior
pelo facto da reprodução de conteúdos audiovisuais ser efectuada localmente, sendo des-
necessário o módulo referente ao servidor de streaming. A Figura 26 representa esta nova
arquitectura.
Figura 26 – A arquitectura do sistema baseado na aplicação cliente residente
56 CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE
5.1 O Servidor
Mantiveram-se os princípios básicos do servidor como suporte aos novos serviços ofereci-
dos por este sistema. A alteração mais importante prende-se com o facto de se ter criado
uma nova rotina capaz de processar os pedidos de reprodução de um conteúdo armazena-
do localmente no lado do cliente. Esta rotina pode ser vista com mais detalhe no capítulo
5.3 referente a um caso de utilização.
Este novo sistema permite ao cliente efectuar o download dos conteúdos audiovisuais pre-
sentes no servidor para o seu disco local, recorrendo-se a uma cópia do ficheiro pretendido
pelo cliente para uma pasta temporária, sendo retornado o link para essa transferência. O
código em PHP que permite essa funcionalidade é apresentado a seguir.
(…) //Esta função permite copiar o conteúdo para uma pasta temporária //criada de acordo com o nome do utilizador e o conteúdo pretendido //É retornado o caminho para o ficheiro function putFileTMP($username, $uri) { $mediafile = $uri; if( strrchr($uri, "/") != FALSE ) $mediafile = substr(strrchr($uri, "/"), 1); $command = "sudo mkdir tmp/".$username; $output=shell_exec($command); $download = "tmp/".$username."/".$mediafile; $command = "sudo cp /usr/local/movies/".$uri."
/var/www/vod_soft/".$download." -l"; $output=shell_exec($command); return $download; } //Este trecho de código chama a função necessária para retornar o //link para realizar o download ao utilizador $filme=getFilme($id); $file=putFileTMP($username, $filme["file_uri"]); $file="http://unhygienix.inescn.pt/vod_soft/".$file; (…)
5.2 O Cliente
Tal como já foi dito no início do presente capítulo, a aplicação cliente foi desenvolvida na
linguagem Visual Basic, linguagem desconhecida para os autores deste documento até ao
início do projecto. Essa deficiência foi ultrapassada através da consulta de manuais dispo-
nibilizados pelo MSDN permitindo o estreito contacto com esta linguagem e realçando
todas as suas potencialidades.
Na secção seguinte serão apresentadas as características da aplicação cliente.
CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE 57
5.2.1 As características da aplicação
Na sua essência, esta aplicação pretende fazer a gestão dos direitos de autor no contexto
do conteúdo armazenado localmente no terminal do utilizador. Está dividida em duas tabs,
uma denominada Online e outra Local.
Figura 27 - Tab Online e Local
A tab Online assemelha-se a um pequeno browser possibilitando o acesso via HTTP a
uma aplicação semelhante à anterior descrita no capítulo quatro, mas com apresentação
visual adequada ao formato do software e funcionalidades diferentes. Estas funcionalida-
des passam por consultar as licenças pessoais de cada utilizador, consultar todos os filmes
disponibilizados, pesquisar, efectuar o download de um determinado filme para o disposi-
tivo de armazenamento local ou efectuar o download do ficheiro XML representativo de
uma licença.
A tab Local trata-se de uma espécie de browser local em que o utilizador navega pelo seu
sistema de armazenamento procurando o filme que deseja reproduzir. Existem várias
maneiras de listar o dispositivo de armazenamento cuja apresentação pode ser definida
pelo utilizador no menu Ver como se demonstra na Figura 28. Deste modo as possibilida-
des são: ver como miniaturas, mosaicos, lista ou ícones. É também possível aplicar um
filtro para ficheiros de filme evitando que o utilizador desvie a atenção do seu objectivo.
Figura 28 – O menu Ver
O menu Editar tem uma única opção e permite apenas inserir ou editar os dados de login
utilizados para identificar o utilizador que executa a aplicação. Assim cada utilizador defi-
ne as suas credenciais, as quais são armazenadas num ficheiro de preferências e utilizadas
sempre que seja necessária inquirir a base de dados. Garante-se assim que o utilizador não
necessita introduzir as suas credencias de todas as vezes que tenta reproduzir um vídeo.
58 CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE
Figura 29 - Editar dados de Login no menu Editar
Existem também alguns botões que facilitam a navegação pelo sistema de armazenamento,
isto é, o utilizador pode navegar em profundidade nos seus directórios carregando dupla-
mente no directório. Para fazer a função inversa existe um botão semelhante aos que esta-
mos habituados a utilizar nos nossos sistemas Windows. Implementou-se o conceito de
Directório Casa possibilitando ao utilizador definir qual o directório da sua preferência
para os seus filmes, esta solução evita que de todas as vezes seja necessário percorrer a
hierarquia do armazenamento para localizar determinado filme. Existe assim um botão de
acesso rápido a esse directório previamente definido com casa. Pode-se constatar esta
acessibilidade na Figura 30.
Figura 30 - A acessibilidade da interface
5.2.2 Reprodução dos conteúdos digitais
Para reproduzir um filme basta fazer duplo clique sobre o ficheiro que o representa. Nesse
momento, são executadas rotinas de verificação da autorização para a reprodução desse
conteúdo. Se no servidor existir uma licença válida, é invocado o reprodutor de multimé-
dia preferido do utilizador para reproduzir o ficheiro especificado.
5.3 Caso de utilização
Na Figura 31 é apresentado um caso de utilização em que o utilizador tenta reproduzir um
conteúdo digital para o qual possui uma licença válida. Como é possível ver na figura, a
aplicação cliente envia o pedido de reprodução para o servidor que se encarrega de verifi-
CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE 59
car a coerência dos dados desse pedido como o nome do filme, dados do utilizador e sua
licença. Passada essa verificação, a aplicação cliente recebe a confirmação de que é possí-
vel reproduzir o conteúdo e chama o reprodutor multimédia preferido.
Figura 31 – Troca de mensagens entre a aplicação cliente e o servidor
O código da aplicação cliente, em Visual Basic, que invoca a confirmação da autorização
para a reprodução do filme apresenta-se de seguida:
(…) ‘# O URL da rotina que trata o pedido cujos parâmetros são inseridos ‘# automaticamente (username, password, nome do filme) sURL = "http://unhygienix.inescn.pt/vod_soft/offline.php?username=" & user & "&password=" & pass & "&movie=" & stFileName ‘# O pedido é enviado por HTTP wrGETURL = WebRequest.Create(sURL) wrGETURL.Proxy = WebProxy.GetDefaultProxy() ‘# A resposta ao pedido é armazenada na variável objStream objStream = wrGETURL.GetResponse.GetResponseStream() (…)
Do lado do servidor esse pedido é processado pela seguinte rotina PHP:
(…) // Se a password e o nome de utilizador coincidirem com os dados // presentes na base de dados é executada o seguinte código if ($password === $MD5Pass) { //Verifica a existência do filme
$id=getFilmeByName($movie); if($id === false){ $error = "404 - File Not Found : The movie provided does not exist."; print_r($error); die; } // Verifica a existência de uma licença de um utilizador para // determinado filme $license=getLicense($username, $id); if($license === false){ $error = "405 - Licence Required : User does not have a li-cense for the file."; print_r($error); die;
60 CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE
} // Verifica se a licença é válida else { $condition1=true; $condition2=true; $condition3=true; // Verifica a existência de uma condição do tipo limite de utilização if($license['countlimit'] == 't'){ if($license['count'] > 0) $condition1=true; else $condition1=false; } // Verifica a existência de uma condição do tipo intervalo de utilização if($license['validityinterval'] == 't'){ if(date("Y-m-d")>$license['notbefore'] and date("Y-m-d")<$license['notafter']) $condition2=true; else $condition2=false; } // Verifica se a licença é válida, ou seja, se todas as condições // são verdadeiras if($condition1 and $condition2 and $condition3) { updateUserLicenceOnPlay($username, $id); $answer = "200 - OK : Action completed successfully."; print_r($answer); die; } // Caso em que a licença existe mas necessita ser renovada else { $answer = "406 - Not Acceptable"; print_r($answer); die; } } } // A password fornecida está errada else {
$error = "401 - Unauthorized : User failed to provide a valid password required for access to the server."; print_r($error); die; } (…)
Caso exista alguma incoerência que iniba a reprodução do conteúdo, é apresentado ao
utilizador uma mensagem de erro que traduza esse obstáculo.
As mensagens de erro que poderão ocorrer são:
CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE 61
• O conjunto do seu Username e Password não coincidem, por favor redefina as
suas credenciais no menu ‘Editar > Registo’.: Como a própria mensagem de erro
sugere, o par Username e Password não está de acordo com os utilizadores regista-
dos no servidor.
• O ficheiro que pretende abrir não está disponível no servidor.: O filme que o utili-
zador pretende reproduzir não foi descarregado através do serviço que este projec-
to disponibiliza, pelo que também não se publicam licenças para esse conteúdo.
• Não têm licença para ver este filme. Compre a sua licença online.: O utilizador
nunca teve uma licença associada ao filme que pretende pelo que terá de comprar
uma nova licença.
• A sua licença para este filme expirou. Por favor renove a sua licença online.: O
utilizador já possuiu uma licença para o conteúdo pretendido, no entanto, encontra-
se expirada pelo que se aconselha a sua renovação.
• O tempo do seu pedido expirou. Tente mais tarde.: Esta mensagem de erro ocorre
quando o servidor foi inquirido mas entretanto o tempo de resposta expirou devido,
por exemplo, a problemas de conectividade.
• O serviço não está disponível, por favor tente mais tarde!: Esta mensagem ocorre
sempre que o programa cliente não consegue resolver o endereço do servidor que
deve contactar nas suas inquirições.
• Erro não definido!: Ocorre sempre que a aplicação inquere o servidor e este res-
ponde com uma mensagem desconhecida.
Quando o utilizador tenta executar, através desta aplicação, um ficheiro que não seja um
ficheiro de vídeo é notificado que não pode executar essa operação.
Esta aplicação funciona como um mediador, que permite ao utilizador escolher o filme
que deseja, verificar se o utilizador tem autorização para a acção que pretende executar e
só depois o reprodutor é invocado para abrir o filme.
5.4 Cliente fiável
Abrir um conteúdo digital directamente com o reprodutor de multimédia impede as verifi-
cações que esta aplicação implementa e pode ser considerado como uma falha na gestão
dos direitos de autor.
No entanto, desde o início do projecto que se considerou o cliente final como um cliente
fiável e tal como em outro projectos em que existe um cliente de confiança (“trusted
client”), tomou-se como adquirido que na máquina do utilizador final a única forma de
reproduzir os conteúdos digitais seria através da plataforma criada e aqui anunciada.
62 CAPÍTULO 5: SISTEMA BASEADO NA APLICAÇÃO CLIENTE RESIDENTE
Assim, se olharmos para esta solução do ponto de vista de um terminal fiável ou, até num
caso mais realista, de uma set-top-box, a implementação desta aplicação de gestão dos
direitos digitais sobre os conteúdos disponibilizados faz todo o sentido.
Passa-se a explicar o conceito desta aplicação a correr numa set-top-box:
Imagine-se uma set-top-box dedicada para o acesso ao serviço, cuja interface com o utili-
zador é uma aplicação semelhante a esta até agora descrita. Deste modo o utilizador não
tem como reproduzir o filme directamente num reprodutor multimédia a não ser que utili-
ze a interface que a set-top-box lhe proporciona e que apenas invocará o reprodutor para
visualizar o filme se lhe for dada autorização.
Capítulo 6
6 Conclusões
Ao longo deste documento foram descritas as diversas fases do projecto que levaram à
criação de um serviço de Video on Demand usando DRM de forma a proteger os direitos
de autor. Os objectivos iniciais foram cumpridos, havendo ainda disponibilidade para se
atingir resultados para além dos objectivos propostos, deixando no ar várias perspectivas
de desenvolvimento.
Este projecto apresentou-se bastante atractivo e enriquecedor na medida em que foi possí-
vel adquirir conhecimentos sobre a criação e utilização de licenças e ainda sobre a distri-
buição de conteúdos audiovisuais através do streaming. Para tal, foi necessária uma exten-
sa fase inicial de estudo das tecnologias existentes, capazes de responder aos requisitos do
sistema a produzir. Este estudo revelou-se fundamental no arranque e progressão do pro-
jecto.
Diversas propostas para a criação e gestão de licenças foram equacionadas, vindo a ser
aprovada a proposta da plataforma de DRM do projecto DMP, o Chillout, visto ser a plata-
forma mais flexível de entre as estudadas e aquela que melhor se adequa no âmbito deste
projecto de Video on Demand. Assim, após uma antevisão teórica, esta tecnologia foi
colocada em prática tendo sido adaptada para uma melhor integração no projecto.
Foram criadas duas interfaces de modo a permitir a interactividade do serviço com o utili-
zador, uma interface baseada numa aplicação web e uma outra, baseada numa aplicação
cliente que pode ser instalada no computador do utilizador, sendo ambas produzidas com o
intuito de se revelarem interfaces dinâmicas e intuitivas.
A aplicação web, dependendo do estatuto de utilizador, apresenta a informação dos servi-
ços disponíveis e a possibilidade de edição da informação respeitando a privacidade e a
segurança da informação. Possibilita a reprodução dos conteúdos digitais se estiverem
reunidas as condições necessárias, sendo que para isso, o utilizador deve ser um utilizador
registado e possuir uma licença válida para a reprodução desse conteúdo. Essa licença
pode já existir, ser comprada ou renovada.
A aplicação cliente, VoD Client, é uma extensão do que é oferecido pela aplicação web.
Para além das funcionalidades disponibilizadas na aplicação web é possível realizar o
download do conteúdo digital e reproduzir localmente, estando salvaguardada a gestão dos
direitos de autor. Para isso é necessário haver sempre conectividade com o servidor online,
64 CAPÍTULO 6: CONCLUSÕES
embora a troca de mensagens seja mínima. A implementação desta aplicação parte do
pressuposto de que o cliente se trata de um cliente seguro ou de confiança, ou seja, o clien-
te não utiliza outras ferramentas para a reprodução do conteúdo.
Este projecto revelou-se importante para a aquisição de conhecimento numa área que seria
desconhecida até ao momento, a gestão dos direitos digitais através da criação de licenças,
e também sobre as tecnologias envolvidas no sistema implementado. Os objectivos foram
cumpridos na íntegra dentro do prazo estabelecido devido a uma capacidade de organiza-
ção e a uma boa estruturação de tarefas entre as partes envolvidas no projecto.
É ainda de salientar, a experiência pessoal e profissional adquirida pela integração num
ambiente dinâmico e bastante jovem, como aquele que existe no INESC Porto.
Capítulo 7
7 Perspectivas de Desenvolvimento
O cumprimento dos objectivos propostos levou ao surgimento de outros novos pontos de
desenvolvimento que seriam possíveis de realizar numa fase posterior ao término do pro-
jecto.
Uma das funcionalidades possíveis de implementar seria a automatização da introdução
dos conteúdos digitais na base de dados, garantindo a coerência da informação entre esta e
o repositório de multimédia. Neste momento, a introdução do conteúdo no repositório e
das informações na base de dados são duas coisas distintas o que pode levar ao problema
de alguns conteúdos disponíveis no repositório não estarem disponíveis na base de dados
ou a sua informação estar incorrecta ou mesmo haver informação relativamente a um fil-
me que não esteja no repositório. Uma das soluções possíveis passaria por criar um fichei-
ro XML para cada filme contendo as informações relativas a esse conteúdo, havendo um
script que estaria sempre a verificar quais os conteúdos existentes no repositório e suas
alterações comunicando à base de dados acções do tipo inserir, remover ou editar as
informações de um filme.
Outra funcionalidade com possível exploração no sistema seria a verificação da idade do
utilizador tendo em conta o parental rating associado a cada filme. O cliente só poderia
reproduzir o filme se for verificada a conformidade entre a sua idade, calculada através da
informação da sua data de nascimento presente na base de dados, e o controlo parental
associado ao filme.
Na aplicação cliente, o pedido de autorização para a reprodução de um conteúdo é acom-
panhado com o nome do ficheiro que o utilizar pretende visualizar. No futuro poderá ser
pensada uma forma de passar o identificador URI do filme, inserida como metadata no
próprio ficheiro, de modo a proteger o sistema contra uma possível alteração do nome do
ficheiro e a inevitável perda de funcionalidade a partir daí.
Outra melhoria possível no presente sistema seria modificar o Darwin Streaming Server,
acrescentando-lhe um módulo para efectuar a gestão do número de vezes que o utilizador
visualiza os conteúdos. Neste momento, após o pedido de visualização por parte de um
66 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
utilizador, actualiza-se de imediato o número de vezes que o cliente ainda pode visualizar
o filme. No entanto podem surgir situações em que o utilizador não se liga efectivamente
ao DSS. Propõe-se assim, que a gestão passe para o lado do servidor DSS e quando o uti-
lizador termina a conexão o próprio DSS comunicaria à base de dados a necessidade de
decrementar o número de vezes que o cliente pode visualizar o conteúdo.
Referências Bibliográficas
[1] Wikipedia.org, Digital rights management [Em linha]. Disponível em
http://en.wikipedia.org/wiki/Digital_rights_management. [Consultado em 21/06/2007]
[2] International Organization For Standardization, MPEG-21 Overview v.5, Shanghai, Outu-
bro 2002
[3] International Organization For Standardization, Introducing MPEG-21 REL - an Over-
view, Poznan, Poland, Julho 2005
[4] VISNET II Networked Audiovisual Media Technologies [Em linha]. Disponível em
http://www.visnet-noe.org/index.html. [Consultado em 16/06/2007]
[5] VISNET II Networked Audiovisual Media Technologies, D3.1.2 - Intermediate Progress
Report on DRM-based Content Protection Initial Integration, pp. 18-34, Setembro 2005
[6] Marušič, Boštjan; Dobravec, Štefan; de Cuetos, Philippe; Concolato, Cyril; Piron, Lau-
rent; Tasič, Jurij F.; TIRAMISU: A Novel Approach to Content Representation and Key
Management for Seamless Super-Distribution of Protected Media,
[7] Chiariglione, Leonardo; Navigating the Digital Media Project [Em linha]. Disponível em
http://www.dmpf.org/documents/documents/navigating_DMP.htm. [Consultado em
21/06/2007]
[8] The Digital Media Project; Technical Specification, Phase II, In Interoperable Digital
Rights Management Platform, 9 February 2006
[9] VISNET II Networked Audiovisual Media Technologies [Em linha]. Disponível em
http://www.visnet-noe.org/index.html. [Consultado em 16/06/2007]
[10] Chillout - The Interoperable DRM Platform [Em linha]. Disponível em
http://chillout.dmpf.org/index.php. [Consultado em 16/06/2007]
[11] Chillout Setup and Development Guide [Em linha]. Disponível em
http://wiki.dmpf.org/index.php/Main_Page. [Consultado em 16/06/2007]
[12] Creative Commons (CC) PT [Em linha]. Disponível em http://www.creativecommons.pt.
[Consultado em 16/06/2007]
[13] Wikipedia.org, Creative Commons [Em linha]. Disponível em
http://en.wikipedia.org/wiki/Creative_Commons. [Consultado em 21/06/2007]
68 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
[14] Wikipedia.org, Transmission Control Protocol [Em linha]. Disponível em
http://en.wikipedia.org/wiki/Transmission_Control_Protocol. [Consultado em 14/06/2007]
[15] Wikipedia.org, User Datagram Protocol. [Em linha]. Disponível em
http://en.wikipedia.org/wiki/User_Datagram_Protocol. [Consultado em 14/06/2007]
[16] Network Working Group, RTP: A Transport Protocol for Real-Time Applications, Julho
2003 [Em linha]. Disponível em http://tools.ietf.org/html/rfc3550. [Consultado em
21/06/2007]
[17] Network Working Group, Real Time Streaming Protocol (RTSP), Abril 1998, [Em
linha]. Disponível em http://tools.ietf.org/html/rfc2326. [Consultado em 21/06/2007]
[18] Wikipedia.org, Real Time Streaming Protocol [Em linha]. Disponível em
http://en.wikipedia.org/wiki/RTSP. [Consultado em 21/06/2007]
[19] International Organization For Standardization, MPEG-4 Overview - (V.21 – Jeju Ver-
sion), In Coding Of Moving Pictures And Audio, Março 2002
[20] Alves, P.; Andrade, M. T.; Acetatos das aulas teóricas na disciplina de Televisão Digital,
Feup, Dezembro 2006
[21] Apple, QuickTime Streaming Server Administrator’s Guide [Em linha]. Disponível em
http://developer.apple.com/opensource/server/streaming/qtss_admin_guide.pdf. [Consultado
em 18/06/2007]
[22] Network Working Group, RTP Payload Format for MPEG-4 Audio/Visual Streams, RFC
3016, Novembro 2000 [Em linha]. Disponível em http://www.rfc-editor.org/rfc/rfc3016.txt.
[Consultado em 22/06/2007]
[23] The Apache HTTP Project. [Em linha]. Disponível em http://httpd.apache.org/. [Consul-
tado em 22/06/2007]
[24] PHP: Hypertext Processor. [Em linha]. Disponível em http://www.php.net/. [Consultado
em 22/06/2007]
[25] PostgreSQL. [Em linha]. Disponível em http://www.postgresql.org/. [Consultado em
22/06/2007]
[26] phpPgAdmin :: Web Based PostgreSQL Administration Tool. [Em linha]. Disponível em
http://phppgadmin.sourceforge.net/. [Consultado em 22/06/2007]
[27] Apache Tomcat. [Em linha]. Disponível em http://tomcat.apache.org/. [Consultado em
22/06/2007]
[28] WebServices – Axis. [Em linha]. Disponível em http://ws.apache.org/axis/. [Consultado
em 22/06/2007]
ANEXOS 69
[29] The TV-Anytime Forum, Specification Series: S-3, em Metadata (Normative), 16 de
Fevereiro de 2001 [Em linha]. Disponível em
ftp://tva:[email protected]/pub/Specifications/SP003v10.zip. [Consultado em 22/06/2007]
Apêndice A – Base de dados
Nas secções seguintes são apresentadas as tabelas e relações entre as tabelas presentes na base
de dados.
A.1 Tabelas
Tabela A1 – Tabela Actor
Actor ID_Actor Nome Data_Nascimento Nacionalidade
Tabela A2 – Tabela AVTechnicaAttributes
AVTechnicalAttributes #ID_Media FileFormat FileSize BitRate
Tabela A3 - Director
Director ID_Director Nome Data_Nascimento Nacionalidade
Tabela A4 - AspectRatio
AspectRatio ID_Aspect AspectRatio
Tabela A5 - Color
Color ID_Color Color
Tabela A6 - Country
Country Abreviatura Country
Tabela A7 – Foto_Actor
Foto_Actor ID_Foto #ID_Actor
72 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Tabela A8 - Galery
Galery ID_Foto #ID_Media
Tabela A9 - Genre
Genre ID_Genre Genre
Tabela A10 - Language
Language ID_Language Language
Tabela A11 – ParentalRating
ParentalRating ID_PR Rating
Tabela A12 - Distributor
Distributor ID_Distributor Nome Nacionalidade
Tabela A13 - AudioAttributesType
AudioAttributesType #ID_Media AudioCoding NumOfChannels
Tabela A14 – User_Types
User_Types ID Type
Tabela A15 - Subtitles
Subtitles Abreviatura SubTitle
Tabela A16 - Licenca
Licenca
URI Grant_KeyName Issuer_KeyName Content_Right CountLimit
Count ValidityRegion ValidityInterval NotBefore NotAfter
Country Region #ID_Media
ANEXOS 73
Tabela A17 - Media
Media
ID_Media KeyWord ProductionYear CreationDate File_URI
Title #ID_Genre ProductionCountry #ID_Language
Synopsis #ID_PR CreationLocation Poster
Tabela A18 – User_Info
User_Info Login PNome Email Activated Password
User_Type UNome Data_Nascimento MD5Activation
Tabela A19 - VideoAttributesType
VideoAttributesType
#ID_Media HorizontalSize Scan #ID_Aspect
VideoCoding VerticalSize #ID_Color
A.2 Relações entre as tabelas
Tabela A20 - CastList
CastList #ID_Media #ID_Actor
Tabela A21 - FilmDirector
FilmDirector #ID_Media #ID_Director
Tabela A22 - FilmDistributor
FilmDistributor #ID_Media #ID_Distributor
Tabela A23 - MediaSubTitles
MediaSubTitles #ID_Media #Abreviatura
Tabela A24 - UserPreferencesActor
UserPreferencesActor #User_Login #ID_Actor
74 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Tabela A25 - UserPreferencesDirector
UserPreferencesDirector #User_Login #ID_Director
Tabela A26 - UserPreferencesGenre
UserPreferencesGenre #User_Login #ID_Genre
Tabela A27 - UserPreferencesLanguage
UserPreferencesLanguage #User_Login #ID_Language
Tabela A28 - UserPreferencesMedia
UserPreferencesMedia #User_Login #ID_Media
Tabela A29 - UserPreferencesSubtitle
UserPreferencesSubtitles #User_Login #Abreviatura
Apêndice B
B.1 Apresentação
Tal como foi referido ao longo do relatório, a aplicação web foi dese
sido utilizado um template para o desenvolvimento do site completo. Nesta secção apresenta
se a página de entrada da interface web.
Figura B1
Apêndice B – Aplicação Web
Apresentação da aplicação
i referido ao longo do relatório, a aplicação web foi desenvolvida em PHP tendo
sido utilizado um template para o desenvolvimento do site completo. Nesta secção apresenta
se a página de entrada da interface web.
Figura B1 – Página de entrada da interface Web
Aplicação Web
nvolvida em PHP tendo
sido utilizado um template para o desenvolvimento do site completo. Nesta secção apresenta-
e Web
76
B.2 Manual da aplicação
Nesta secção será apresentado um manual d
a interface ao leitor e também guiá
digital.
Depois de o utilizador aceder à
lizar o acesso à aplicação. Esse acesso, normalmente denominado login, pode ser realizado na
seguinte caixa.
Depois de efectuado o acesso
sugestões de filmes ao utilizador
sugerindo ao utilizador a especificação das suas preferências. Neste caso o utilizador já tem
algumas preferências definidas por isso
Figura B3
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Manual da aplicação web
Nesta secção será apresentado um manual da aplicação web que terá a vantagem de apresentar
a interface ao leitor e também guiá-lo através do nosso site até à reprodução de um conteúdo
Depois de o utilizador aceder à página de entrada, apresentada na secção anterior
lizar o acesso à aplicação. Esse acesso, normalmente denominado login, pode ser realizado na
Figura B2 – Caixa de login
fectuado o acesso, a página de entrada altera-se dinamicamente, apresentando
sugestões de filmes ao utilizador, caso este já tenha especificado as suas preferências, ou
sugerindo ao utilizador a especificação das suas preferências. Neste caso o utilizador já tem
algumas preferências definidas por isso são apresentadas algumas sugestões.
Figura B3 – Efectuado o acesso à aplicação
NVOLVIMENTO
web que terá a vantagem de apresentar
lo através do nosso site até à reprodução de um conteúdo
apresentada na secção anterior, deverá rea-
lizar o acesso à aplicação. Esse acesso, normalmente denominado login, pode ser realizado na
se dinamicamente, apresentando
caso este já tenha especificado as suas preferências, ou
sugerindo ao utilizador a especificação das suas preferências. Neste caso o utilizador já tem
são apresentadas algumas sugestões.
ANEXOS
O utilizador pode alterar as suas prefer
as suas preferências o sistema poderá sugerir filmes que estejam de acordo com
cias.
Figura B4
O próximo passo será fazer a listagem dos filmes ou pesquisar um filme específico. Estas
opções são encontradas no menu lateral esquerdo. Na Figura B5 é apresentada a listagem de
todos os filmes existentes na base de dados
para a pesquisa de filmes.
campo de pesquisa, onde se pode pesquisar não só por filmes mas também por
zadores ou distribuidores.
O utilizador pode alterar as suas preferências acedendo à sua área pessoal. Ao criar ou alterar
as suas preferências o sistema poderá sugerir filmes que estejam de acordo com
Figura B4 – Alteração das preferências do utilizador
O próximo passo será fazer a listagem dos filmes ou pesquisar um filme específico. Estas
opções são encontradas no menu lateral esquerdo. Na Figura B5 é apresentada a listagem de
s os filmes existentes na base de dados enquanto na Figura B6 é apresentado o formulário
para a pesquisa de filmes. É ainda de salientar que na Figura B6 é indicado a presença de um
campo de pesquisa, onde se pode pesquisar não só por filmes mas também por
77
dendo à sua área pessoal. Ao criar ou alterar
as suas preferências o sistema poderá sugerir filmes que estejam de acordo com as preferên-
Alteração das preferências do utilizador
O próximo passo será fazer a listagem dos filmes ou pesquisar um filme específico. Estas
opções são encontradas no menu lateral esquerdo. Na Figura B5 é apresentada a listagem de
na Figura B6 é apresentado o formulário
É ainda de salientar que na Figura B6 é indicado a presença de um
campo de pesquisa, onde se pode pesquisar não só por filmes mas também por actores, reali-
78
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Figura B5 – Listagem dos filmes
Figura B6 – Página de pesquisa
NVOLVIMENTO
ANEXOS
Escolhido o filme é possível obter informação detalhada sobre esse mesmo fil
possível ver na Figura B7 essa informação contem todos
base de dados acrescentando
Escolhido o filme é possível obter informação detalhada sobre esse mesmo fil
igura B7 essa informação contem todos os descritores que se encontram na
base de dados acrescentando-se o elenco de actores, realizadores e distribuidores.
Figura B7 – Item filme
79
Escolhido o filme é possível obter informação detalhada sobre esse mesmo filme. Tal como é
os descritores que se encontram na
se o elenco de actores, realizadores e distribuidores.
80
Se o utilizador tiver uma licença válida para o filme apresentado, poderá pedir autorização
para o visualizar. Esse pedido será aceite apresentando uma nova janela dando a indicação de
que o utilizador deve clicar na imagem de modo a executar o seu reprodutor multimédia.
nova janela apresenta também a informação da licença, mostrando por exemplo o número de
vezes que o utilizador poderá ainda reproduzir o conteúdo.
Figura B8
De notar que se o utilizador não possuir uma licença válida para o filme será reencaminhado
para a página de criação de licenças já apresentada na secção sobre a cr
tentes no capítulo 4.
A reprodução do conteúdo deve ser comunicada ao servidor de streaming e apresentará um
novo campo para a introdução do username e password. Só depois de ter fornecido os dados
correctos, de acordo com o presente
duzido o conteúdo.
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Se o utilizador tiver uma licença válida para o filme apresentado, poderá pedir autorização
se pedido será aceite apresentando uma nova janela dando a indicação de
que o utilizador deve clicar na imagem de modo a executar o seu reprodutor multimédia.
nova janela apresenta também a informação da licença, mostrando por exemplo o número de
s que o utilizador poderá ainda reproduzir o conteúdo.
Figura B8 – Reprodução do conteúdo
De notar que se o utilizador não possuir uma licença válida para o filme será reencaminhado
para a página de criação de licenças já apresentada na secção sobre a criação de licenças exi
A reprodução do conteúdo deve ser comunicada ao servidor de streaming e apresentará um
novo campo para a introdução do username e password. Só depois de ter fornecido os dados
correctos, de acordo com o presente na base de dados da aplicação web, será de facto repr
NVOLVIMENTO
Se o utilizador tiver uma licença válida para o filme apresentado, poderá pedir autorização
se pedido será aceite apresentando uma nova janela dando a indicação de
que o utilizador deve clicar na imagem de modo a executar o seu reprodutor multimédia. Essa
nova janela apresenta também a informação da licença, mostrando por exemplo o número de
De notar que se o utilizador não possuir uma licença válida para o filme será reencaminhado
iação de licenças exis-
A reprodução do conteúdo deve ser comunicada ao servidor de streaming e apresentará um
novo campo para a introdução do username e password. Só depois de ter fornecido os dados
na base de dados da aplicação web, será de facto repro-
ANEXOS
Figura B9 – Reprodução do conteúdo digital através do acesso ao DSS
Reprodução do conteúdo digital através do acesso ao DSS
81
Reprodução do conteúdo digital através do acesso ao DSS
Apêndice C
A aplicação cliente foi desenvolvida em Visual Basic de modo a
ca intuitiva para o utilizador. Tal como foi falado na secção referente às características desta
aplicação presente no capítulo
Online e um modo Local. Nas secções seguintes serão apresentados algumas
desses modos.
C.1 Modo Online
Tal como na aplicação web, esta aplicação no seu modo online apresenta várias funcionalid
des de fácil compreensão e aprendizagem. Assim, serão apresentadas nas figuras seguintes
alguns estados dessa aplicação.
A interface gráfica sofreu algumas alterações relativamente à anterior apresentada para a apl
cação web devido ao dimensionamento da janela desta nova aplicação. A página de entrada
passa a ser a apresentada na Figura C1.
Figura C1
Apêndice C – Aplicação Cliente
A aplicação cliente foi desenvolvida em Visual Basic de modo a oferecer
ca intuitiva para o utilizador. Tal como foi falado na secção referente às características desta
capítulo 5, esta aplicação tem dois modos fundamentais, um modo
. Nas secções seguintes serão apresentados algumas
Modo Online
Tal como na aplicação web, esta aplicação no seu modo online apresenta várias funcionalid
de fácil compreensão e aprendizagem. Assim, serão apresentadas nas figuras seguintes
alguns estados dessa aplicação.
interface gráfica sofreu algumas alterações relativamente à anterior apresentada para a apl
cação web devido ao dimensionamento da janela desta nova aplicação. A página de entrada
passa a ser a apresentada na Figura C1.
Figura C1 – Página de Entrada no modo Online
Aplicação Cliente
oferecer uma interface gráfi-
ca intuitiva para o utilizador. Tal como foi falado na secção referente às características desta
5, esta aplicação tem dois modos fundamentais, um modo
. Nas secções seguintes serão apresentados algumas funcionalidades
Tal como na aplicação web, esta aplicação no seu modo online apresenta várias funcionalida-
de fácil compreensão e aprendizagem. Assim, serão apresentadas nas figuras seguintes
interface gráfica sofreu algumas alterações relativamente à anterior apresentada para a apli-
cação web devido ao dimensionamento da janela desta nova aplicação. A página de entrada
odo Online
84
Realizado o acesso à aplicação, o utilizador terá à sua disposição algumas funcionalidades
como a pesquisa de filmes, listagem dos filmes para os quais o utilizador tem licença e real
zar o download do filme para o seu disco rígido. Na Figura C2
pesquisa enquanto na Figura C3 são apresentados os filmes para os quais o utilizador tem
licença. Ainda na Figura C3 é perceptível a funcionalidade de descarregar o filme do servidor.
Figura C2 –
Figura C3 – Apresentação dos filmes com licença e de algumas funcionalidades
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Realizado o acesso à aplicação, o utilizador terá à sua disposição algumas funcionalidades
como a pesquisa de filmes, listagem dos filmes para os quais o utilizador tem licença e real
zar o download do filme para o seu disco rígido. Na Figura C2 é apresentado o formulário de
pesquisa enquanto na Figura C3 são apresentados os filmes para os quais o utilizador tem
licença. Ainda na Figura C3 é perceptível a funcionalidade de descarregar o filme do servidor.
Funcionalidade de Pesquisa no modo Online
Apresentação dos filmes com licença e de algumas funcionalidades
NVOLVIMENTO
Realizado o acesso à aplicação, o utilizador terá à sua disposição algumas funcionalidades
como a pesquisa de filmes, listagem dos filmes para os quais o utilizador tem licença e reali-
é apresentado o formulário de
pesquisa enquanto na Figura C3 são apresentados os filmes para os quais o utilizador tem
licença. Ainda na Figura C3 é perceptível a funcionalidade de descarregar o filme do servidor.
no modo Online
Apresentação dos filmes com licença e de algumas funcionalidades
ANEXOS
No caso de o utilizador não ter licença para realizar a reprodução de um conteúdo ou no caso
de a licença ter expirado é necessário criar ou renovar a licença. Ta
interface para a criação de licenças apresentada na Figura C4.
Figura C4 – Interface para a criação de licença associada a um conteúdo
C.2 Modo Local
No modo Local é dada ao utilizador a possibilidade de reproduzir conteúdos prote
zenados localmente. De lembrar que esses conteúdos foram descarregados através do modo
Online. Para aceder aos conteúdos armazenados localmente foi criada uma interface que pe
mite ao utilizador explorar os seus directórios
dows. Essa interface pode ser vista nas Figuras C5 e C6.
No caso de o utilizador não ter licença para realizar a reprodução de um conteúdo ou no caso
de a licença ter expirado é necessário criar ou renovar a licença. Tal pode ser feito através da
interface para a criação de licenças apresentada na Figura C4.
Interface para a criação de licença associada a um conteúdo
Modo Local
No modo Local é dada ao utilizador a possibilidade de reproduzir conteúdos prote
zenados localmente. De lembrar que esses conteúdos foram descarregados através do modo
Online. Para aceder aos conteúdos armazenados localmente foi criada uma interface que pe
mite ao utilizador explorar os seus directórios tal como se tratasse de um explorador do Wi
dows. Essa interface pode ser vista nas Figuras C5 e C6.
85
No caso de o utilizador não ter licença para realizar a reprodução de um conteúdo ou no caso
l pode ser feito através da
Interface para a criação de licença associada a um conteúdo
No modo Local é dada ao utilizador a possibilidade de reproduzir conteúdos protegidos arma-
zenados localmente. De lembrar que esses conteúdos foram descarregados através do modo
Online. Para aceder aos conteúdos armazenados localmente foi criada uma interface que per-
e um explorador do Win-
86
Figura C5
Figura C6 – Navegação entre os directórios da máquina do utilizador
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Figura C5 – Entrada no modo Local
Navegação entre os directórios da máquina do utilizador
NVOLVIMENTO
Navegação entre os directórios da máquina do utilizador
ANEXOS
Para efectuar a reprodução dos conteúdos é necessário editar as credenc
viamente. Para isso o utilizador deverá aceder ao menu
Através da nova janela que aparece, o utilizador deverá inserir os dados de username e pas
word que estão associados à sua conta utilizada na ap
ver essa o modo com esse registo é feito.
Figura C7
A reprodução do conteúdo é efectuada depois do pedido de autorizaç
este pedido transparente para o
dução do conteúdo é clicar duas vezes sobre o seu ícone. Se a licença para esse filme for vál
da o programa encarrega-
cutado. Na Figura C8 é apresentada a reprodução de um conteúdo.
Para efectuar a reprodução dos conteúdos é necessário editar as credenc
viamente. Para isso o utilizador deverá aceder ao menu Editar e escolher a opção
Através da nova janela que aparece, o utilizador deverá inserir os dados de username e pas
word que estão associados à sua conta utilizada na aplicação online. Na Figura C7 é possível
ver essa o modo com esse registo é feito.
Figura C7 – Alteração das credenciais de utilizador
A reprodução do conteúdo é efectuada depois do pedido de autorizaç
este pedido transparente para o utilizador. Tudo o que o utilizador tem que fazer para a repr
dução do conteúdo é clicar duas vezes sobre o seu ícone. Se a licença para esse filme for vál
-se de chamar o reprodutor multimédia preferido e o filme será ex
igura C8 é apresentada a reprodução de um conteúdo.
87
Para efectuar a reprodução dos conteúdos é necessário editar as credenciais de utilizador pre-
e escolher a opção Registo.
Através da nova janela que aparece, o utilizador deverá inserir os dados de username e pass-
licação online. Na Figura C7 é possível
Alteração das credenciais de utilizador
A reprodução do conteúdo é efectuada depois do pedido de autorização ao servidor, sendo
utilizador. Tudo o que o utilizador tem que fazer para a repro-
dução do conteúdo é clicar duas vezes sobre o seu ícone. Se a licença para esse filme for váli-
se de chamar o reprodutor multimédia preferido e o filme será exe-
88
Figura C8 –
C.3 Código em Visual Basic da aplicação cliente
Nesta secção é apresentado o ccomentários relevantes para a compreensão do código. // Realiza a importação de bibliotecas necessárias para a implementação// das rotinas necessárias Imports System.Windows.FormsImports System.IO Imports System.Threading Imports System.Net Public Class vod Public filtered As Boolean Public UserName As String Public UserPassword As Public FileNamePath As Dim imIcons As ImageList = Shared Sub ThreadMethod() Thread.Sleep(4000) End Sub
CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
– Reprodução de um conteúdo no modo Local
Código em Visual Basic da aplicação cliente
Nesta secção é apresentado o código em Visual Basic da aplicação cliente com alguns es para a compreensão do código.
Realiza a importação de bibliotecas necessárias para a implementaçãodas rotinas necessárias
System.Windows.Forms
Boolean = True String = "" As String = "" As String = ""
ImageList = New ImageList()
ThreadMethod() Thread.Sleep(4000)
NVOLVIMENTO
Reprodução de um conteúdo no modo Local
Código em Visual Basic da aplicação cliente
ódigo em Visual Basic da aplicação cliente com alguns
Realiza a importação de bibliotecas necessárias para a implementação
ANEXOS 89
// Função que permite verificar a existência de credenciais // Se as credenciais não tiverem sido configuradas o utilizador // Recebe um aviso para a necessidade de o realizar Private Function CheckCredencial() As Boolean If Not IO.File.Exists("credenciais.txt") Then MsgBox("Ainda não definiu as suas credenciais!" & vbCrLf & _ " Dirija-se ao menu 'Editar > Registo'") Return False Else Return True End If End Function // Função executada quando o utilizador clica duas vezes no ficheiro // Verifica a existência de credenciais e também se o ficheiro // que o utilizador está a tentar executar é um ficheiro de video // Por fim chama a função responsável por abrir o video Private Sub OpenFile_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenFile.Click If CheckCredencial() = False Then Exit Sub End If Dim stFilePathAndName As String = "" Dim openFileDialog1 As New OpenFileDialog openFileDialog1.InitialDirectory = System.Environment.CurrentDirectory openFileDialog1.Title = "Open a File" openFileDialog1.Filter = "Movie Files (*.mov;*.mpeg;*.mpg;*.wmv)|*.mov;*.mpeg;*.mpg;*.wmv|All Files (*.*)|*.*" openFileDialog1.FilterIndex = 1 openFileDialog1.RestoreDirectory = True If openFileDialog1.ShowDialog() = DialogResult.OK Then stFilePathAndName = openFileDialog1.FileName OpenMovieFile(stFilePathAndName) End If End Sub // Função importante para a reprodução dos conteúdos // Primeiro realiza o pedido ao servidor para a autorização de reprodução // O pedido é enviado através de um pedido HTTP // Verifica a resposta do servidor e no caso de haver erro passa essa // informação para o utilizador através de mensagens de erro claraas. // No caso de a resposta ser positiva inicia a reprodução do conteúdo Private Sub OpenMovieFile(ByVal stFilePathAndName As String) Dim MyFile As IO.FileInfo = New IO.FileInfo(stFilePathAndName) Dim stFileName As String = ""
90 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
Dim command As String = "" Dim sURL As String Dim wrGETURL As WebRequest Dim LineIn As String Dim i As Integer = 0 Dim objStream As Stream stFileName = MyFile.Name FileNamePath = stFilePathAndName Dim oRead As System.IO.StreamReader oRead = IO.File.OpenText("credenciais.txt") Dim user As String = oRead.ReadLine().ToString Dim pass As String = oRead.ReadLine().ToString oRead.Close() sURL = "http://unhygienix.inescn.pt/vod_soft/offline.php?username=" & user & "&password=" & pass & "&movie=" & stFileName wrGETURL = WebRequest.Create(sURL) wrGETURL.Proxy = WebProxy.GetDefaultProxy() objStream = wrGETURL.GetResponse.GetResponseStream() Dim objReader As New StreamReader(objStream) LineIn = objReader.ReadLine Select Case LineIn Case "200 - OK : Action completed successfully." command = Chr(34) & stFilePathAndName & Chr(34) System.Diagnostics.Process.Start(command) Case "400 - Bad Request." MsgBox("Não foi possível contactar o servidor de Licenças," & vbCrLf & _ " por favor tente mais tarde!") Exit Sub Case "401 - Unauthorized : User failed to provide a valid password required for access to the server." MsgBox(" O conjunto do seu Username e Password não coincidem," & vbCrLf & _ "por favor redefina as suas credenciais no menu 'Editar > Registo'.") Exit Sub Case "402 - User not found : User failed to provide a valid user name." MsgBox(" O seu Username não foi encontrado no servidor," & vbCrLf & _ "por favor registe-se ou redefina as suas credênciais no menu 'Editar > Registo'.") Exit Sub Case "404 - File Not Found : The movie provided does not exist." MsgBox("O ficheiro que pretende abrir não está disponível no servidor.") Exit Sub Case "405 - Licence Required : User does not have a license for the file." MsgBox("Não têm licença para ver este filme." & vbCrLf & _ " Compre a sua licença online.")
ANEXOS 91
Exit Sub Case "406 - Not Acceptable" MsgBox("A sua licença para este filme expirou." & vbCrLf & _ "Por favor renove a sua licença online.") Exit Sub Case "408 - Request Timeout" MsgBox("O tempo do seu pedido expirou. Tente mais tarde.") Exit Sub Case "409 - Local Conflict" MsgBox("Um erro interno impediu o bom funcionamento do processo.") Exit Sub Case "500 - Server Error : In most cases, this error is a result of a problem with the code or program you are calling rather than with the web server itself." MsgBox("Ocorreu um erro no servidor, o processo abortou.") Exit Sub Case "503 - Service Unavailable" MsgBox("O serviço não está disponível," & vbCrLf & _ " por favor tente mais tarde!") Exit Sub Case Else MsgBox("Erro não definido!") Exit Sub End Select End Sub // A saída do programa pede ao utilizador uma confirmação Private Sub ExitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click If MsgBox("Tem a certeza que " & _ "deseja fechar a aplicação?", _ MsgBoxStyle.Question Or _ MsgBoxStyle.YesNo Or _ MsgBoxStyle.DefaultButton2) = MsgBoxResult.No Then Exit Sub Else Me.Close() End If End Sub // A seguinte função apresenta a janela onde se introduzem as credenciais // de utilizadores Private Sub RegistoToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RegistoToolStripMenuItem.Click Dim login As Form = LoginVoD
92 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
login.Show() End Sub // Função que permite ao utilizar a selecção de um directório especifico // através da caixa de diálogo do Windows Private Sub FolderButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FolderButton.Click Dim FolderBrowserDialog1 As New FolderBrowserDialog If FolderBrowserDialog1.ShowDialog() = DialogResult.OK Then LocalPathBox.Text = FolderBrowserDialog1.SelectedPath() localListView_BeginUpdate() End If End Sub // Função que faz a listagem dos ficheiros presentes no directório // escolhido. Tem a particularidade de apresentar os ficheiros com vários // tipos de icones, tendo o tipo sido seleccionado pelo utilizador Private Sub localListView_BeginUpdate() localListView.Clear() Dim defaultDirectory As String = LocalPathBox.Text Dim directories() As String directories = System.IO.Directory.GetDirectories(defaultDirectory) Dim dlength As Integer = directories.Length Dim di As Integer For di = 0 To dlength - 1 Step 1 Dim item As ListViewItem Try imIcons.Images.Add(Bitmap.FromFile("folder.ico")) item = New ListViewItem(Path.GetFileName(directories(di)), imIcons.Images.Count - 1) item.SubItems.Add(Path.GetFullPath(directories(di))) item.SubItems.Add("Folder") localListView.Items.Add(item) Catch ex As Exception MsgBox(ex.Message) End Try Next di Dim files() As String files = System.IO.Directory.GetFiles(defaultDirectory) Dim flength As Integer = files.Length Dim fi As Integer For fi = 0 To flength - 1 Step 1
ANEXOS 93
Dim item As ListViewItem Dim extension As String = Path.GetExtension(Path.GetFileName(files(fi))) Dim finfo As FileInfo = New FileInfo(files(fi)) If filtered = True Then Select Case extension Case ".mov" GoTo AddToList Case ".mpeg" GoTo AddToList Case ".mpg" GoTo AddToList Case ".wmv" GoTo AddToList Case Else GoTo EndProcedure End Select Else GoTo AddToList End If AddToList: Try Dim myIcon As System.Drawing.Icon = Icon.ExtractAssociatedIcon(Path.GetFullPath(files(fi))) imIcons.Images.Add(myIcon) item = New ListViewItem(Path.GetFileName(files(fi)), imIcons.Images.Count - 1) item.SubItems.Add(Path.GetFullPath(files(fi))) item.SubItems.Add("File") localListView.Items.Add(item) myIcon = Nothing Catch ex As Exception MsgBox(ex.Message) End Try EndProcedure: Next fi localListView.SmallImageList = imIcons localListView.LargeImageList = imIcons End Sub // A função seguinte define a vista como miniaturas Private Sub Miniaturas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Miniaturas.Click localListView.View = View.SmallIcon End Sub
94 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
// A função seguinte define a vista como mosaicos Private Sub MosaicosToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MosaicosToolStripMenuItem.Click localListView.View = View.Tile End Sub // A função seguinte define a vista como uma lista Private Sub ListaToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListaToolStripMenuItem.Click localListView.View = View.List End Sub // A função seguinte define a vista como icones Private Sub ÍconesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ÍconesToolStripMenuItem.Click localListView.View = View.LargeIcon End Sub // A função seguinte verifica o tipo de filtragem especificada (se pretende // ver todos os tipos de ficheiros ou apenas os ficheiros de video) e // actualiza a listagem do directório Private Sub FilterToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FilterToolStripMenuItem.Click If filtered = False Then filtered = True ElseIf filtered = True Then filtered = False End If localListView_BeginUpdate() End Sub // Função que verifica o duplo clique nos itens apresentados na listagem // do directório. No caso de ser um directório entra nesse directório, // no caso de um ficheiro de video tenta executá-lo através da função // específica ou se for outro tipo de ficheiro indica que deve escolher // apenas um ficheiro de vídeo. Private Sub localListView_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles localListView.DoubleClick Dim objDrawingPoint As Drawing.Point Dim objListViewItem As ListViewItem objDrawingPoint = localListView.PointToClient(Cursor.Position) If Not IsNothing(objDrawingPoint) Then With objDrawingPoint objListViewItem = localListView.GetItemAt(.X, .Y) End With If Not IsNothing(objListViewItem) Then
ANEXOS 95
If CheckCredencial() = False Then Exit Sub End If Dim spath As String = localListView.Items(objListViewItem.Index).SubItems.Item(1).Text Dim stype As String = localListView.Items(objListViewItem.Index).SubItems.Item(2).Text If stype.ToString = "Folder" Then LocalPathBox.Text = spath localListView_BeginUpdate() Else Dim extension As String = Path.GetExtension(Path.GetFileName(spath)) Select Case extension Case ".mov" GoTo OpenMovieFile Case ".mpeg" GoTo OpenMovieFile Case ".mpg" GoTo OpenMovieFile Case ".wmv" GoTo OpenMovieFile Case Else MsgBox("O ficheiro que pretende abrir não é um video") GoTo ExitProcedure End Select OpenMovieFile: OpenMovieFile(spath) ExitProcedure: End If End If End If End Sub // Através desta função o directório escolhido passa a ser aquele que o // utilizador tem definido como seu directório casa. A definição deste // directório pode ser vista mais adiante. Private Sub HomeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles HomeButton.Click If IO.File.Exists("home.txt") Then Dim homepath As String Dim oRead As System.IO.StreamReader oRead = IO.File.OpenText("home.txt") homepath = oRead.ReadLine() oRead.Close() If Not String.IsNullOrEmpty(homepath) Then LocalPathBox.Text = homepath localListView_BeginUpdate() End If Else
96 CAPÍTULO 7: PERSPECTIVAS DE DESENVOLVIMENTO
MsgBox(" Ainda não definiu o seu directório Casa," & vbCrLf & _ " por favor navegue até ao directório pretendido" & vbCrLf & _ "e pressione o botao 'Definir Directório com Casa'") End If End Sub // Esta função realiza a actualização do directório actual Private Sub RefreshButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RefreshButton.Click If Not String.IsNullOrEmpty(LocalPathBox.Text) Then localListView_BeginUpdate() End If End Sub // Esta função vai para o directório pai do directório em que se encontra // de momento. Private Sub ParentDirButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ParentDirButton.Click If Not String.IsNullOrEmpty(LocalPathBox.Text) Then If Not LocalPathBox.Text = Directory.GetDirectoryRoot(LocalPathBox.Text) Then LocalPathBox.Text = Directory.GetParent(LocalPathBox.Text).FullName localListView_BeginUpdate() End If End If End Sub // Através desta função é definido o directório casa introduzindo num // num ficheiro de preferências, essa informação Private Sub DefineHomeButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DefineHomeButton.Click Dim oWrite As System.IO.StreamWriter If String.IsNullOrEmpty(LocalPathBox.Text) Then MsgBox("Não seleccionou nenhum directório!") Else oWrite = IO.File.CreateText("home.txt") oWrite.WriteLine(LocalPathBox.Text) oWrite.Close() End If End Sub // Ao iniciar a aplicação esta função teste se existe algum directório // definido como casa. Se existir abre esse directório para listagem. Caso // contrário abre o explorador em branco e deixa o utilizador navegar // pela árvore de directórios Private Sub vod_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If IO.File.Exists("home.txt") Then
ANEXOS 97
Dim homepath As String Dim oRead As System.IO.StreamReader oRead = IO.File.OpenText("home.txt") homepath = oRead.ReadLine() oRead.Close() If Not String.IsNullOrEmpty(homepath) Then LocalPathBox.Text = homepath localListView_BeginUpdate() End If End If End Sub End Class