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: 66.017 ]

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

Software Livre... e um passo além

Instalação do Arch Linux com LVM + Luks

Integração MRTG e RRDTool

Mais desempenho no GNU Emacs com o YASnippet

Salada mista de Linux

  
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

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts