Masterização de VCD's com menu interativo

Este artigo descreve passo-a-passo o processo direto de como fazer (termo correto: "masterizar") um VCD numa forma que será possível substituir as antigas fitas VHS por vídeos digitais até para o mais leigo Linuxer. E isso fazendo uso de um recurso simples, mas visualmente muito atraente, que são os menus interativos.

[ Hits: 63.025 ]

Por: Gustavo Vasconcelos em 03/10/2005


Estrutura do XML



Tome uma xícara de café antes de continuar lendo.

<?xml version="1.0"?>
<!DOCTYPE videocd PUBLIC "-//GNU/DTD VideoCD//EN"
  "http://www.gnu.org/software/vcdimager/videocd.dtd">
<videocd xmlns="http://www.gnu.org/software/vcdimager/1.0/"
  class="vcd" version="2.0">
<info>
  <album-id>ALICE_DISC</album-id>
  <volume-count>1</volume-count>
  <volume-number>1</volume-number>
  <restriction>0</restriction>
</info>

Informações sobre o disco. Esta sessão contém informações do disco, que não precisam ser modificadas. De fato, na maioria dos DVD player os dados colocados aqui jamais serão visualizados. A única coisa que alguém pode se interessar em modificar é a marca <album-id>, que contém o "label" do disco.

<pvd>
  <volume-id>ALICE_CHEGOU</volume-id>
  <system-id>CD-RTOS CD-BRIDGE</system-id>
  <publisher-id>GUSTAVO VASCONCELOS - TANGO</publisher-id>
</pvd>

Descrição do volume primário (PVD). De novo, mais informações sobre o disco. Você pode querer modificar ou acrescentar o <volume-id> (informação de volume, pode ser a mesma do <album-id>) e <publisher-id> para colocar seu nome.

<segment-items>
  <segment-item src="menuprincipal.mpg" id="seg-top-menu"/>
  <segment-item src="menu1.mpg" id="seg-menu-1"/>
  <segment-item src="menu2.mpg" id="seg-menu-2"/>
</segment-items>
<sequence-items>
  <sequence-item src="meuvideo1.mpg" id="seq-title-1"/>
  <sequence-item src="meuvideo2.mpg" id="seq-title-2"/>
  <sequence-item src="meuvideo3.mpg" id="seq-title-3"/>
  <sequence-item src="meuvideo4.mpg" id="seq-title-4"/>
  <sequence-item src="meuvideo5.mpg" id="seq-title-5"/>
</sequence-items>

Aqui as coisas começam a ficar interessantes. Este trecho do XML trata dos itens de segmento, que são justamente os menus e dos itens de seqüência, que são os filmes em si. Esta é apenas uma declaração dos mesmos, que serão referenciados daqui para frente por nomes como seq-menu-1 e seq-title-3.

<pbc>
  <selection id="select-top-menu">
    <bsn>1</bsn>
    <timeout ref="select-menu-1"/>
    <wait>298</wait>
    <loop jump-timing="immediate">1</loop>
    <play-item ref="seg-top-menu"/>
    <select ref="select-menu-1"/>
    <select ref="select-menu-2"/>
  </selection>
  <selection id="select-menu-1">
    <bsn>1</bsn>
    <return ref="select-top-menu"/>
    <timeout ref="select-menu-2"/>
    <wait>222</wait>
    <loop jump-timing="immediate">1</loop>
    <play-item ref="seg-menu-1"/>
    <select ref="play-title-1"/>
    <select ref="play-title-2"/>
    <select ref="play-title-3"/>
    <select ref="select-top-menu"/>
  </selection>
  <playlist id="play-title-1">
    <prev ref="play-title-1"/>
    <next ref="play-title-2"/>
    <return ref="select-menu-1"/>
    <wait>0</wait>
    <play-item ref="seq-title-1"/>
  </playlist>
  <playlist id="play-title-2">
    <prev ref="play-title-1"/>
    <next ref="play-title-3"/>
    <return ref="select-menu-1"/>
    <wait>0</wait>
    <play-item ref="seq-title-2"/>
  </playlist>
  <playlist id="play-title-3">
    <prev ref="play-title-2"/>
    <next ref="select-menu-1"/>
    <return ref="select-menu-1"/>
    <wait>0</wait>
    <play-item ref="seq-title-3"/>
  </playlist>
  <selection id="select-menu-2">
    <bsn>4</bsn>
    <return ref="select-top-menu"/>
    <timeout ref="select-top-menu"/>
    <wait>207</wait>
    <loop jump-timing="immediate">1</loop>
    <play-item ref="seg-menu-2"/>
    <select ref="play-title-4"/>
    <select ref="play-title-5"/>
    <select ref="select-top-menu"/>
  </selection>
  <playlist id="play-title-4">
    <prev ref="play-title-4"/>
    <next ref="play-title-5"/>
    <return ref="select-menu-2"/>
    <wait>0</wait>
    <play-item ref="seq-title-9"/>
  </playlist>
  <playlist id="play-title-5">
    <prev ref="play-title-4"/>
    <next ref="select-menu-2"/>
    <return ref="select-menu-2"/>
    <wait>0</wait>
    <play-item ref="seq-title-5"/>
  </playlist>
</pbc>
</videocd>

Se você ainda não dormiu, essa é uma péssima hora para fazê-lo. Conforme foi dito antes, dentro do XML é que é feita a masterização de verdade, quando definimos como o DVD player reagirá aos eventos de teclado e vídeo.

Como é possível perceber, é uma grande quantidade de texto a ser destrinchada, mas a maioria são métodos que se repetem em vários vídeos. Explicaremos um tipo de cada, a começar pelo menu:

<selection id="select-top-menu">
  <bsn>1</bsn>
  <timeout ref="select-menu-1"/>
  <wait>298</wait>
  <loop jump-timing="immediate">1</loop>
  <play-item ref="seg-top-menu"/>
  <select ref="select-menu-1"/>
  <select ref="select-menu-2"/>
</selection>

  • <bsn> é a base de seleção numérica, e diz em que número começar a contar as entradas. O que vier abaixo dele responderá aos botões do aparelho de DVD, em seqüência. Exemplo: Se <bsn> for 4, o primeiro vídeo será acessível através da tecla 4, o segundo na tecla 5 e assim por diante.

  • <timeout> especifica a ação a ser tomada depois de decorrido <wait> segundos. No caso acima ao terminar a trilha de áudio do menu principal (que dura 298s) ele irá automaticamente para o menu secundário 1. E, como você pode observar, daí ele irá para o menu secundário 2 e então para o menu principal, num looping entre os menus.

  • <loop> especifica quantas vezes o menu deve ser reproduzido antes de ir para a referência de <timeout>. Neste caso ele não se repetirá, sendo reproduzido apenas uma única vez.

  • <select> é a ação a se tomar quando os botões de número <bsn> forem digitados. Neste caso o botão 1 do aparelho de DVD chamará o menu secundário 1 e o botão 2 chamará o menu secundário 2.

<playlist id="play-title-5">
  <prev ref="play-title-4"/>
  <next ref="select-menu-2"/>
  <return ref="select-menu-2"/>
  <wait>0</wait>
  <play-item ref="seq-title-5"/>
</playlist>

Aqui vemos como será a seqüência de reprodução dos filmes. Neste em particular a reprodução de meuvideo5.mpg, que está aqui referenciado por title-5.

Podemos ver claramente (através da marca <prev>) que ao pressionar a tecla "anterior" («) do DVD player ele irá iniciar a reprodução do vídeo 4, enquanto a tecla "próximo" (») o levará de volta ao menu secundário 2 (a ação <next> também se aplica ao fim do vídeo sem interrupção do usuário).

Resumindo todo este arquivo, o que ele quer dizer é que o VCD, ao ser inserido no DVD player, será reproduzido da seguinte maneira:
  • O vídeo principal tem sua reprodução iniciada;
  • Se nenhuma interação for feita por parte do usuário ele será reproduzido uma única vez e então pulará automaticamente para o menu secundário 1;
  • Se nenhuma interação for feita por parte do usuário ele será reproduzido uma única vez e então pulará automaticamente para o menu secundário 2;
  • Se nenhuma interação for feita por parte do usuário ele será reproduzido uma única vez e então pulará automaticamente para o menu principal;
  • No menu principal, o usuário pode alcançar manualmente os menus secundários através das teclas 1 (secundário 1) e 2 (secundário 2);
  • Uma vez dentro de algum dos menus secundários, a reprodução dos vídeos pode ser iniciada através das teclas 1 - 3 no menu 1 (4 volta ao menu principal) e 4 - 5 no menu 2 (6 volta ao menu principal);
  • Ao se iniciar a reprodução de um dos vídeos, ela prosseguirá sequencialmente passando por todos os vídeos depois dele até chagar ao último.
  • Ao final do último vídeo o DVD player volta ao menu secundário que chamou o vídeo.

Com alguma paciência é possível ter idéias bem interessantes sobre o comportamento do VCD somente com estas marcas. Deixo a cargo do leitor esta tarefa, pois já estamos perto de chegar ao resultado final: a gravação do VCD.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Informações sobre o VCD
   3. Software necessários
   4. Editando os vídeos
   5. Criação dos menus
   6. O arquivo de “authoring” XML
   7. Estrutura do XML
   8. Gerando a imagem e queimando o CD
   9. Considerações finais
   10. Alguns agradecimentos especiais
Outros artigos deste autor

Gravação de CD's com o NeroLINUX

Instalação e configuração do AUTO97

Leitura recomendada

Clonar FreeBSD pela rede e sem downtime

Geração de arquivos PDF no Linux

IBQUOTA - Gerenciador de Impressão por Usuário

Conseguindo o reembolso da licença do Microsoft Windows

Interface Gráfica e Ambiente Integrado p/ Free Pascal

  
Comentários
[1] Comentário enviado por fabio em 03/10/2005 - 02:07h

Fala Tango,

Em primeiro lugar, meus parabéns pelo artigo, sem dúvida um dos melhores que já foram publicados aqui no VOL. Antes de perdermos os 3 meses de banco, seu artigo estava na fila de espera e masterização de VCDs era algo que eu já queria pesquisar fazia tempo, pois estava louco pra queimar uns VCDs de vídeos pessoais.

Por incrível que pareça, seu artigo foi o primeiro que me veio em mente quando pensei: "putz, perdi 3 meses de artigos". Fique danado por não tê-lo lido enquanto estava na fila de espera :), ainda bem que tinhas backup em casa.

[]'s,
Fábio

[2] Comentário enviado por komodo em 03/10/2005 - 13:16h

Tango,

muito bom o artigo, estava mesmo pesquisando algo sobre isso.

[]'s

Silésio Gabriel

[3] Comentário enviado por cesarcardoso em 03/10/2005 - 17:31h

Tango, parabéns! Artigo completo e bem explicado. :)

[4] Comentário enviado por ETerNal em 03/10/2005 - 20:40h

Fantastico, muito bom mesmo, parabens!

p.s. linda sim sua sobrinha... :P

Att.

Germano Zang

[5] Comentário enviado por lordello em 03/10/2005 - 21:05h

Cara, seu artigo ficou show e sua sobrinha é linda mesmo :-)
Eu trabalho com vídeo e adoro assuntos sobre multimídia.
Crio DVD com auxílio de programas fechados, infelizmente, por falta de opções realmente eficazes e rápidas na criação de DVDs complexos :-/

Tem umas coisas que gostaria de dizer:
- A resolução 352x288 citada é para imagens em PAL, sistema europeu. Aqui no Brasil usamos o sistema ntsc para criar DVDs e VCDs, portanto a resolução correta seria 352x240.
- Audacity: é melhor editar e converter as músicas usando ele, assim pode adicionar fades e alterar o volume da música como achar melhor. É bom que a música de fundo de menu seja baixa, para não incomodar na hora de assistir.
- Margens: as margens de segurança são de 10% nas bordas da imagem e não 30 pixeis como você disse. Ou seja, se a imagem vai ter 352x240 a margem fica em torno de 35x24. Isso vale para qualquer imagem que seja reproduzida em televisores normais, telas LCD, plasma etc.. não seguem esse cálculo.
- A opção --speed do cdrdao é dispensável, se nada for especificado ele irá gravar na velocidade máxima do gravador. O dispositivo pode ser especificado como um dispositivo comum para quem já usa o Linux 2.6, o comando ficaria assim:
$ cdrdao write --device /dev/hda videocd.cue

É isso aí cara, parabéns :-)

[6] Comentário enviado por Tango em 04/10/2005 - 12:54h

Valeu pelos adenos, Lordello. A dica do Audacity fop muito boa mesmo, evita um bocado de passos.

A questão do PAL e NTSC me deixou meio perdido. Todo o sistema de televisão brasileiro segue o padrão PAL (-M para ser mais específico). Por que o formato de VCD's e DVD's deveria ser diferente?

A opção --speed estava aí com o objetivo de ser auto-explicativa. Nem todas as distros gravam em velocidade máximo por padrão, alguras gravam a 2x ou 4x quando não especificado. E se você especificar o dispositivo como /dev/hdX o cdrdao usará a interface ATAPI para comunicação. É mais aconselhável usar a ATA, que é mais rápida e requer menos processamento.

Abraços e Obrigado

[7] Comentário enviado por lordello em 04/10/2005 - 17:49h

Na verdade o sistema aqui do Brasil é uma mistureba feita usando o NTSC e PAL, criando um sistema completamente diferente dos dois.
Resumindo, técnicamente PAL-M é NTSC+PAL piorado, sacou?

A transmissão de TV fica assim:
NTSC 330x525 30 quadros/seg
PAL 330x625 30 quadros/seg
PAL-M 330x625 30 quadros/seg

No caso de DVD/VCD/SVCD não existe PAL-M, só NTSC e PAL. Existe uma variação do NTSC que possui 24 quadros/seg, mas é o mesmo NTSC com menos quadros, usado em filmes somente. Não sei se você sabe, mas os filmes que vemos no cinema têm 24 quadros/seg.

DVD/VCD/SVCD
NTSC 720x480/352x240/480x480 30 quadros/seg
PAL 720x576/352x288/480x576 30 quadros/seg

Dizem as más linguas que PAL é muito melhor do que o NTSC, mas como nunca vi uma TV PAL.


Quanto ao "--speed", acho que você deve ter se engado, já usei quase todas as distribuições e nenhuma delas limita (nas configurações) a velocidade de gravação. Mas tudo bem, é sempre bom lembrar ao pessoal da existência dessa função.

Falou ae.

[8] Comentário enviado por Tango em 04/10/2005 - 19:00h

Obrigado pelas informações técnicas lordello. Esclareceu muita coisa!

[]'s
TNG

[9] Comentário enviado por Tango em 07/10/2005 - 08:37h

Atualização quanto a opção "--speed", sendo mais específico: Fedora Core 4, se a velocidade não for especificada ele gravará numa velocidade máxima de 8x, mesmo que sua gravadora suporte mais que isso.

[10] Comentário enviado por lindbergluiz em 09/10/2005 - 17:37h

cara... sem comentários... vc mandou bem mesmo no assunto. òtimo. Sem palavras.... Mais um artigo de qualidade no VOL.

parabens

[11] Comentário enviado por zereis em 10/10/2005 - 08:54h

Caro colega Tango,

Excelente artigo... Me embaralhei numa situação: como fazer menus com o Gimp? Não tenho habilidades com a ferramenta e imaginei: como o cada item desenvolvido pelo menu será identificado? Se tiver algum artigo que explique isto no Gimp, me envie, por favor, pois fiquei no meio da estrada...

Zé Reis

[12] Comentário enviado por Tango em 10/10/2005 - 20:33h

Olá Zé,

O menu do GIMP não é nada além de uma imagem e ponto final. Quem define como o menu se comporta é o XML. A finalidade do mesmo é somente de informar ao usuário quais teclas do controle remoto estão disponíveis e a função de cada uma.

Nada impede que você faça um menu completamente branco, só vai ser mais complicado para quem estiver assistindo de descobrir o que apertar para ver o vídeo. ;-)

Você pode utilizar a ferramenta que bem entender, o GIMP foi somente a mais acessível e prática. A única exigência é que a mesma salve figuras no formato PPM RAW.

[13] Comentário enviado por andersonmo7 em 11/12/2005 - 16:24h

Primeiramente parabéns pelo excelente artigo.
Eu capturei um VHS pela placa de captura. Foi gerado um avi (audio: 8bit mono, 44100, com 12 frames/sec, e resolucao de 384x288)
Quando eu abro ele no avidemux, ele corta parte do começo do video.
Além disso quando tento selecionar o "VCD res" ele informa: cannot find PAL/NTSC type". Entretanto se eu tento com um arquivo mpeg, ele funciona certinho, conforme seu artigo.

[14] Comentário enviado por Tango em 31/12/2005 - 21:18h

Anderson,

O problema que você está tendo se deve ao fato de que o seu vídeo possui um framerate bem peculiar (12fps). O Avidemux não sabe que tipo de formato dar ao vídeo, se PAL ou NTSC. Já enfrentei este problema antes com um vídeo Quicktime e na época não havia solução disponível.

Agora porém existe uma maneira bem simples (para Avidemux >= 2.0.40): Siga todos os passos descritos acima até chegar em V Filter. Neste momento, antes de selecionar "VCD res" clique em "Adicionar" e escolha "Resample FPS". Mude para 25 ou 30 quadros por segundo e todo o procedimento pode ser seguido normalmente.

Por favor, me dê um retorno se isso foi suficiente para resolver seu problema, reamostragem de quadros ainda é algo que não experimentei extensivamente e apesar de estar bem certo de que irá funcionar, não posso dar garantias.

Abraços.
E Feliz 0x7D6 para todos. ;)

[15] Comentário enviado por lanux em 25/12/2006 - 12:32h

Muito bom, parabéns.

Só queria lembrar o excelente tovid. Vale a pena conferir:
http://tovid.wikia.com/wiki/Main_Page
http://www.linux.com/article.pl?sid=05/08/01/1734201

Abraços!

[16] Comentário enviado por kazzttor em 07/07/2007 - 19:03h

Vamos lá, meu povo!

Umas observações legais para serem feitas:

1. Audacity - Façam uso dele caso desejem uma trilha sonora para o menu mais incrementada, depois salve como wav. Uma dica: Execute o efeito "Compressor" no áudio, caso acho que o som contenha clippings, e em seguida, o "Normalize", para ajustar o som a um volume mais agradável.

2. Padrão de Cor - Essa é a grande questão. Se você grava programas da televisão, não recomendo você salvar o arquivo em PAL e sim em NTSC. Eu explico: O sistema de cor daqui do Brasil é PAL-M, que é o vídeo em formato PAL, mas com a taxa de 29,97 frames por segundo, a mesma do NTSC. Ao salvar um vídeo em PAL com a gravação de TV daqui, o vídeo perde qualidade, pois o video PAL roda a 25 quadros por segundo e por isso o programa tem que jogar fora quase 5 frames a cada segundo e o vídeo, evidentemente perde qualidade. Só utilize o formato Pal, se você, evidentemente gravou o vídeo de uma câmera que opere em modo PAL (e não PAL-M) também.

3. Queimando etapas com o K3b - Como sabemos, o K3b é um aplicativo do gerenciador de janelas kde para gravação de CD's. O K3b, na verdade é um frontend de vários aplicativos úteis em gravação e autoria de CD's e DVD's, inclusive da maioria dos citados nesse tutorial. Se você puder utilizá-lo, você criará facil e rapidamente uma ferramenta poderosa para criação de seus VCD's.

4. Margens do menu - A questão da margem é importante, mas pode ser descartada, visto que grande parte dos televisores modernos não cortam a imagem.

5. Juntando audio e vídeo no menu - Esse ponto é importantíssimo. pois pode causar um efeito indesejado ao menu. Duas coisas podem ocorrer com o menu: ou o som acaba e o vídeo continua, ou o vídeo acaba antes da música e corta o som de repente. Qual a dica? Calcular quantos frames serão necessários para que áudio e vídeo terminem juntos. O cálculo é simples: Mutiplique o tempo da música em segundos pela taxa de frames por segundo utilizada pelo vídeo.

6. Gravação de boa qualidade - A premissa de que a pressa é inimiga da perfeição é válida para a gravação de CD's. Não utilize a velocidade máxima para gravar o CD, e sim uma velocidade menor, pois assim a qualidade dos dados gravados será superior. Uma gravação boa utiliza uma velocidade de 12x ou menos. Eu costumo usar 8x.

Esse tutorial é estupendo, sobretudo na criação de menus. Um abraço.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts