Desenvolvimento de Aplicativos para TV Digital - Parte 4
Data Publicação: 20/1/2009 17:05:06
Total de visualizações:
1118
comente
|
Desenvolver aplicativos para TV Digital, tem se tornado cada dia mais popular, tanto no Brasil quanto fora. No Brasil, a linguagem Ginga-NCL tem reinado mais do que outras linguagens, não quer dizer que o Ginga-J ou Java-TV estão fora do mercado; mesmo assim é bom ficar atento com todas as linguagens de software. Todos os passos anteriores mostro exemplos em Ginga-NCL, um passo a passo importante para você que está começando a desenvolver. Só a linguagem não faz com que o software desenvolvido apareça na TV, é necessário uma aparelhagem, ou seja, um Set-top box preparado, com framework instalado e muito mais. Tentei falar com alguns fabricantes e, ninguém conseguiu ainda me mostrar um set-top box preparado com Ginga-NCL, isto é, pronto e funcionando com conectividade. Está muito perto de ser lançado esse aparelho, porém, aos desenvolvedores; fiquem atentos e desenvolvam software para TV Digital. Essa foi só uma dica do que tenho visto junto ao mercado.
Aplicativo
O exemplo mostrado no artigo, reproduz um título e um vídeo numa região da tela de forma sincronizada, com início e término da mídia. Utilizei um arquivo .HTML e um vídeo .MPG, os mesmos estão dentro de uma pasta chamada media; para ficar mais organizado com os arquivos do programa. A ferramenta para desenvolvimento é o Eclipse com o plugin instalado.
Primeiro Passo Gerar um projeto no eclipse.
 Referência 4-1
Cliquei em file / new e Other... Automaticamente apareceu a tela de Wizard, posso escolher o tipo de documento que gostaria criar. (Referência 4-2)
Referência 4-2
Cliquei na pasta NCL e no documento NCL Document, como mostrado na referência 4-2. O próximo passo foi clicar em Next. (Referência 4-3)
Referência 4-3
No campo Container, coloquei “/exemplo02”, é apenas uma pasta específica do projeto, assim não fica diretamente ligado a outros projetos. No campo id, alterei o nome para exemplo02.ncl que, automaticamente apareceu o mesmo nome no campo file name. Isso porque um id é o mesmo nome do arquivo dentro do NCL. Depois de atribuir os valores, cliquei no botão Finish e criou o arquivo.
Codificação
<ncl id="exemplo02" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile">
<head>
<regionBase> <region id="rgTV" width="1920" height="1080"> <region id="rgTitulo1" left="200" top="116" width="600" height="40" /> <region id="rgVideo1" left="200" top="156" width="600" height="768" /> </region> </regionBase>
Code 4.1
O primeiro passo na codificação foi, criar uma base de regiões com definições em tela onde, serão apresentadas as mídias ou arquivos; como no meu caso; um arquivo .HTML contendo o título do programa que está sendo passado. Uma região coloquei com o nome rgTitulo1 com left, top, width e height que significa a posição em tela, altura em tela, tamanho do vídeo em largura e tamanho do vídeo em altura, ou seja, verticalmente falando. Uma observação importante, o rdTitulo1 deve estar com o atributo top menor do que o rgVideo1, para que possa ficar acima do vídeo. Não coloque acento nos atributos ou variáveis criadas. A área total é da minha região é de 1920 com o id rgTV. O próximo passo é, criar uma base de descritores que definem como as mídias são apresentadas. (Code 4.2)
<descriptorBase> <descriptor id="dTitulo1" region="rgTitulo1"> <descriptorParam name="border" value="none" /> </descriptor> <descriptor id="dVideo1" region="rgVideo1"> <descriptorParam name="soundLevel" value="1" /> </descriptor> </descriptorBase>
Code 4.2 É importante entender que as variáveis sempre se relacionam dentro do código. Para criar os descritores, criei variáveis começando com a letra “d”. As mesmas se relacionam com uma região criada anteriormente. O descritor dTitulo1 se relaciona com a região rgTitulo1; o descritor dVideo1 se relaciona com a região rgVideo1. Coloquei uma tag a mais no código, chamada de descriptorParam, coloquei a borda da região sem nada, ou seja, com o valor none. A mesma coisa fiz com o soundLevel, coloquei o valor igual a 1 para ouvir o som caso tenha o mesmo no vídeo. O próximo passo é, definir o comportamento dos elos, ou seja, dos relacionamentos. Preciso criar uma base de conectores; em outro arquivo. (Referência 4-4)
 Referência 4-4
Cliquei em file / new / Other..., em seguida escolhi o documento do tipo Connector Base Document. Coloquei o nome e cliquei no botão Finish. (Referência 4-5)
 Referência 4-5
Coloquei o nome de ConnectorBase.NCL. Para iniciar o vídeo, gerei um id causalConnector chamado onBegun1StartN e outro onEnd1StopN. (Code 4.3)
<?xml version="1.0" encoding="ISO-8859-1"?>
<ncl id="connectorBase" xmlns="http://www.ncl.org.br/NCL3.0/EDTVProfile" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ncl.org.br/NCL3.0/EDTVProfile http://www.ncl.org.br/NCL3.0/profiles/NCL30EDTV.xsd">
<head>
<connectorBase>
<causalConnector id="onBegin1StartN"> <simpleCondition role="onBegin"/> <simpleAction role="start" max="unbounded" qualifier="par"/> </causalConnector>
<causalConnector id="onEnd1StopN"> <simpleCondition role="onEnd"/> <simpleAction role="stop" max="unbounded" qualifier="par"/> </causalConnector>
</connectorBase>
</head>
</ncl>
Code 4.3
Existe condições simples onBegin1StartN e onEnd1StopN. Os mesmos recebem como parâmetro e regra onBegin e onEnd. Para importar o arquivo novo criado dentro do exemplo02.ncl, preciso colocar o comando importBase. (Code 4-4)
<connectorBase> <importBase alias="connectors" documentURI="connectorBase.ncl" /> </connectorBase>
Code 4-4
Depois de definir o conector base, fecho a tag de cabeçalho e começo o corpo do programa. (Code 4-5)
</head>
<body>
Code 4-5
Dentro do corpo, coloquei um ponto de entrada que, indica o componente do programa inicialmente. (Code 4-6)
<port id="pInicio" component="video1" />
Code 4-6
Até o momento as mídias não foram definidas, dessa forma, elas não serão executadas. Na parte de mídias, defini o local dos arquivos de mídia e as associo com os descritores criados anteriormente. (Code 4-7)
<media type="text/html" id="titulo1" src="media/titulo1.html" descriptor="dTitulo1" /> <media type="video/mpeg" id="video1" src="media/video1.mpg" descriptor="dVideo1" />
Code 4-7
Cada media type possui um tipo diferente. No final, coloquei o descritor relacionado anteriormente. A tag src é o endereço do arquivo localmente, um .html e outro .mpg. Estou quase acabando o programa para ser executado na TV Digital, porém preciso definir os ELOS de sincronismo simultâneo entre as mídias. Ao iniciar o vídeo, simultaneamente será iniciado o título1 atribuído logo no início do artigo. Para isso, uso o conector base. (Code 4-8).
<link id="lVideo1Titulo1Start" xconnector="connectors#onBegin1StartN"> <bind component="video1" role="onBegin" /> <bind component="titulo1" role="start" /> </link>
<link id="lVideo1Titulo1Stop" xconnector="connectors#onEnd1StopN"> <bind component="video1" role="onEnd" /> <bind component="titulo1" role="stop" /> </link>
</body> </ncl>
Code 4-8
A tag link possui um atributo chamado xconnector onde indico o nome definido do connectors (a tag especificamente) separado por # (sharp ou jogo da velha) e o nome do comando. Esse nome pode ser o que você quiser, lembre-se que deve ser relacionado de uma forma correta, nos arquivos, mídias e elos. A tag bind é necessária para setar a regra (role) com o mesmo nome do arquivo connectorBase.ncl. Existem dois links, um com start e outro com stop. Para executar o programa, cliquei em RUN / RUN AS / 1 NCL Presentation. (Referência 4-6).
 Referência 4-6.
O emulador entra em ação. (Referência 4-7).
 Referência 4-7.
O resultado foi. (Referência 4-8)
 Referência 4-8.
Bom, fico por aqui e espero ter ajudado. Qualquer coisa, favor entrar em contato. Mauricio Junior.
Total de visualizações:
1118
|
|
voltar
comente
subir
|
Autor:
|
Por:Mauricio Junior
|
Maurício Júnior Formado pela Faculdade Anhanguera,
Especialista pela FGV (Fundação Getúlio Vargas), Pós-Graduação em Docência Superior e cursando
Mestrado na UNB Engenharia Elétrica; . Tenho 27 anos e possuo sete livros publicados pela editora Ciência Moderna no ano de 2009.
Sou Certificado Microsoft MCP, MCAD e MVP, faço parte da comunidade ASPNETI.COM, onde publico artigos, vídeos, ebooks e livros Publico artigos, vídeos e podcast em outras comunidades. Trabalho como Analista de Sistemas / Desenvolvedor na empresa ATP S/A. Blog: blog.mauriciojunior.org, Site pessoal www.mauriciojunior.org
|
|