Busca online em todo site:
NETITC

Você não está logado, deseja logar na comunidade? clique aqui.




Título do Artigo

Desenvolvimento de Aplicativos para TV Digital - Parte 4


Data Publicação: 20/1/2009 17:05:06
Total de visualizações: 1100

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: 1100
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.orgSite pessoal  www.mauriciojunior.org


Comentários:

Comentado por: Cleide Silva - 3/7/2009 0:00:00
Mauricio, sou iniciante neste assunto e estou com muita vontade de aprender esta nova tecnologia, parabéns e muito obrigada pelos exemplos e dicas.
Deus te abençõe.
abs,

Comente (dê sua opinião): VOCÊ PRECISA ESTAR LOGADO

Comentário:
Código Imagem:  (digite o código da imagem respeitando maiúsculo e minúsculo)

Favor digitar o código da imagem para cadastramento.

 

Outros Artigos do Autor

Vídeo - Mitos da bateria
Vídeo do Visual SourceSafe - Parte I
Sistema de Controle de Gasolina Mobile - iGas
Importação e Comunicação entre Sistemas
Retirar Tag HTML dos campos utilizando expressão
Permissão de Página Utilizando Web.Config
Web 2.0 - A máquina somos nós
Google Chrome no Windows
Internet Explorer 8 RC em Português
Criando a Tag Cloud em C#
QR Code com ASP.NET
Sistema de Login em ASP – Parte IX
Google Sync Mobile
Forum utilizando VS 2005 e Ajax
Aplicativos para Dispositivos Móveis, Usando C#.NET com a ferramenta Visual Studio.NET e com Banco de Dados MySQL e SQL Server
Gravando erros com eventlog - Parte I
Como fazer uma enquete - parte 2
Chrome - não reconhecimento...
Tópicos: Criptografia de Dados
Documento padrão de desenvolvimento
Zune
Como fechar todos os forms de um aplicativo para dispositivo móvel
Sistema de Catalogar Livros
Reconhecimento do Google
Tech Fest 2009
Não publicação
Artigo Criando RSS Xml para o Seu Próprio Site
Agrupar Email no Mail - MacBook
Chama método que está dentro do COM PLUS (COM +)
2 Eventos, 1 dia: Mix On UniEURO
Instalando o .NET Compact Framework 2.0 SP2 em seu Dispositivo Móvel
Vídeo - Serviços do Windows Live
Desenvolvendo com Atributos (Javascript) e StringBuilder
SQL Dinâmico Compilado
Promoção ASPNETi.COM versus Autor - e-Books grátis hoje e amanhã

Publicidade:

[sumir] [aparecer]
NETITC




Informações Online:

Usuários Online: 502
Artigos:  649
Vídeos:  47
PodCast's:  31
Fórum:  3098
Empregos:  1222
Usuários Cadastrados: 5776

Categoria de Artigos

Vídeos

Enquete - Dê sua opinião

 Os podcasts tem sido proveitoso pra você?

 

Colaboradores

Foto Autor autor: Mauricio Junior   
publicou 377 artigo(s).
Foto Autor autor: Júlio Battisti   
publicou 51 artigo(s).
Foto Autor autor: Fabio Galante Mans   
publicou 28 artigo(s).
Foto Autor autor: Kleber Becerra   
publicou 10 artigo(s).
Foto Autor autor: Ramon Durães   
publicou 6 artigo(s).
Foto Autor autor: Ebenézer de Souza   
publicou 5 artigo(s).
Foto Autor autor: Fabio Aguiar   
publicou 4 artigo(s).
NETITC