Criar VCD com pontos de entrada (capítulos)

Iniciado por ElMago, 20 de Julho de 2011, 04:06

tópico anterior - próximo tópico

ElMago

Criar VCD com capítulos

Olá pessoal, sabemos que é algo antigo, mas ainda é bastante útil, e quem gosta de gravar videos, tambem usa CDs para gravar o velho VCD, principalmente um video que não irá ocupar mais que 700 MB de espaço... Poderia-mos queimar o MPEG/VCD numa mídia de DVD, apenas gravando como dados, já que os aparelhos suportam dados e, lógico, os formatos MPEGs e seus contêiners.
Sabemos que o VCD nos sistemas Unix são complicados de serem copiados e reproduzidos, justamente porque os arquivos DAT (extensão do VCD na mídia) dão erros de I/O, ou seja, de entrada e saída. Já o Windows copia os arquivos .dat sem problema algum, independentemente dos erros. Um exemplo aqui > http://pclinuxos2007.blogspot.com.br/2007/09/how-to-copy-vcd-in-linux-especially-in.html
Graças ao MPlayer e MEncoder ou Vcd Gear, este problema acabou, principalmente aqueles VCDs criados pelo Devede (nada contra o programa) ou pelo Windows, onde apenas o MPlayer reproduz....Alias, o MPlayer reproduz qualquer VCD, mesmo o mais podre. Até o VLC que tenho aqui e gosto, não roda qualquer VCD.
Com o MPlayer, reproduzo até um VCD com muitos títulos ou faixas, no qual, ao inves de digitar o comando gigante (mplayer -fs vcd://1  vcd://2  vcd://3 ...), já deixei o comando com suporte a muitas faixas em um script, já que não uso GUI para ele...
Com o MEncoder(além do Vcd Gear, o unico que ripa VCD problematico)  deixo a função de extrair o VCD , com um script que ripa um VCD com muitas faixas. O exemplo do comando é; mencoder vcd://1 -oac copy -ovc copy -ffourcc MPEG1 -o /home/usuario/Vídeos/Video1.mpg; mencoder vcd://2 -oac copy -ovc copy -ffourcc MPEG1 -o /home/usuario/Vídeos/Video2.mpg; mencoder vcd://3 -oac .... e assim por diante. Porém, o Vcd Gear, mesmo que por linha de comando, é ainda mais pratico que o MEncoder, pois ripa todas as faixas automaticamente a partir da imagem copiada pelo Brasero ou outro programa equivalente, sem a necessidade de criar script de muitas faixas como o exemplo do Mencoder citado. Já o Vcdxrip falha com Vcds problematicos ou mal autorados.  

Bom, gravar um MPEG 1 (VCD) como dados num DVD seria legal...mas, e um VCD com menus e capítulos? Bom, eu acho (não tenho certeza) que só queimando como VCD mesmo, aí, uma midia de DVD não suporta, já que é um MPEG 1 video e  Mp2 audio (antes Mp1 áudio), com contêiner MPEG-PS...

No Linux, pelo que vi, apenas o Tovid faz menus para VCD, sendo que eu uso o Tovid GUI para facilitar.
Mas, e os capítulos? Bom, não achei nada do suporte do Tovid,VcdImager ou de qualquer programa de Linux para isso, seja só por comando ou não... Se alguem souber, favor se manifeste aqui!!!!!!

O VCD não tem capítulos, mas usa o entry points ou pontos de entrada, que são usados como capítulos...bom, pra mim é quase a mesma coisa.
Este VCD que suporta estas funções como menu, e mais é o 2.0, lançado pouco depois do VCD 1.1 na época, porem a função de ponto de entrada (capitulo) já tinha na versão 1.1.

O VCD Easy faz isso e usa o VCD Imager... Ele é pago e é para Windows.
Usei a versão trial aqui no CrossOver/Wine e funcionou legal, e ainda fez um VCD tocável até no VLC, porem tive dificuldades em fazer funcionar o menu devido a emulação...

Pronto, parti para a luta e consegui fazer um VCD compatível com qualquer tocador, com menu e capítulos, tudo nativamente pelo GNU/Linux....

Abaixo mostrarei como.

ElMago

#1
Pra começar, se temos um video em qualquer formato que não seja MPEG 1, vamos ao Tovid GUI .
É que o programa precisa converter, e se já tem um MPEG 1, terá que converter de novo, além de dá problema na conversão do áudio em alguns casos. Outra limitação é ter que adicionar um menu antes para depois adicionar os videos...contudo mostrarei adiante outro truque, com a ajuda da propria GUI para criar sem menu.

Lá na primeira opção, em 1. Layout, escolhemos VCD em Disc format. Em TV format, deixe ao seu gosto, de preferencia na primeira mesmo. No menu, a interface é bem intuitiva para criar...
Menu header é o cabeçalho pro menu (opcional)
Image é uma foto ou imagem pra o menu como fundo (opcional), se deixar em branco, o menu será o padrão do programa...um fundo azul com os nomes dos titulos.
Size 32 é o tamanho padrão, e eu deixo assim.
Audio é a musica de fundo do menu...eu corto uma canção no Audacity com fade-out pra ficar pequena e salvo pra usar como audio do menu.
Length sec é a duração de segundos do menu...e coloco conforme a duração do audio do menu....20 segundos no máximo.
No canto esquerdo, em Untitled disc e Untitled menu 1, podem renomear ao gosto manipulando com o mouse e depois digitar o nome escolhido.
Adicionando outro menu, o programa adicionará um menu principal (Main menu) com dois submenus, podendo remover o segundo se quiser... O Main menu é opcional, claro....
Menu text format é legal para escolher cores, fonte, alinhamento de texto, etc...
Adicionando os  videos...É como no menu, apos adicionar, é só clicar nele que aparece o painel pra autorar.... Escolha a quantidade que couber depois .
Então em Video opitions fica como está  a resolução, e aspecto eu deixo em 4:3 (opcional).
Quality 8...deixo também...
Codificador pode deixar como estar...Se o Mpeg2enc nao funfar, o prog já seta o Ffmpeg como segunda opção automaticamente....
Na segunda opção, 2. Encode, após clicar, pode aparecer alguma mensagem em ingles sugerindo que escolha outro video ou renomeie, caso tenha algum apostrofo, ou caracteres em excesso...é só clicar em Não, e Não denovo.
Então é só clicar em Start encoding. Ao término da conversão, dê OK.
Nao vá para a terceira opção, 3. Burn, que cria a imagem ou pode tambem queimar... , caso queira adicionar capitulos, se caso for apenas um titulo grande (um show ou filme).
Pulando a terceira opção, vá na pasta /tmp e abram a .xml criada pelo Tovid.

ElMago

#2
Sequindo em referencias do codigo XML para VCD, sigam este modelo abaixo:

<?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>CHAPTERTEST</album-id>
   <volume-count>1</volume-count>
   <volume-number>1</volume-number>
   <restriction>0</restriction>
 </info>

 <pvd>
   <volume-id>CHAPTERTEST</volume-id>
   <system-id>CD-RTOS CD-BRIDGE</system-id>
 </pvd>


 <sequence-items>
   <sequence-item src="/tmp/Track1.mpg" id="seq-title1">
     <entry id="chapter01">0</entry>
     <entry id="chapter02">60</entry>
     <entry id="chapter03">120</entry>
   
   </sequence-item>
 </sequence-items>

<pbc>

   <selection id="select-chapter01">
     <next ref="select-chapter02"/>
     <timeout ref="end"/>
     <wait>1</wait>
     <loop jump-timing="immediate">1</loop>
     <play-item ref="chapter01"/>
   </selection>

   <selection id="select-chapter02">
     <prev ref="select-chapter01"/>
     <next ref="select-chapter03"/>
     <timeout ref="end"/>
     <wait>1</wait>
     <loop jump-timing="immediate">1</loop>
     <play-item ref="chapter02"/>
   </selection>

   <selection id="select-chapter03">
     <prev ref="select-chapter02"/>
     <timeout ref="end"/>
     <wait>1</wait>
     <loop jump-timing="immediate">1</loop>
     <play-item ref="chapter03"/>
   </selection>

   
   <endlist id="end" rejected="true"/>

</pbc>
</videocd>


Obs: CHAPTERTEST é o ID do disco...é quando colocamos o disco pra tocar no PC e ele monta com o seu nome.

No caso de menu, o Makexml acrescentará a linha <segment-items> em cima de <sequence-items>
Ex:
<segment-items>
 <segment-item src="/tmp/Video_do_Menu.mpg" id="seg-menu-1"/>
</segment-items>


Ok, isso ninguem precisará fazer manualmente...só foi um exemplo rsrsrs.

Se mudarem o video do menu para outro diretorio, no caso /home/usuario/Vídeos/Video_do_Menu, o segment-item terá que ser mudado conforme o endereço dos diretorios ...  <segment-item src="/home/usuario/Vídeos/Video_do_Menu.mpg" id="seg-menu-1"/> ...
Isso vale tambem para o video, no caso aí ;  <sequence-item src="/home/usuario/Vídeos/Track1.mpg" id="seg-menu-1"/>


Observem na linha <sequence-item src="/tmp/Track1.mpg" id="seq-title1">
Vejam que tirei uma barra no final  ''/'' ...Ela serve para fechar a linha de posteriores adições de edição do arquivo. Antes estava assim: <sequence-item src="track1.mpg" id="seq-title1"/>
Portanto, sempre tirem esta barra.
Sem a barra agora, é só acrescentar os capítulos; <entry id="chapter01">0</entry>
O 0 no exemplo acima é o primeiro capítulo....tudo onde começa 00:00:00...
Aqui no VCD é feito pelo calculo de segundo.
A calculadora será fundamental para sua ediçao.
Uma dica é a multiplicaçao apenas na primeira e segunda vez, e depois feita somente a soma do resultado nos seguintes calculos. Exemplo; de 2 em 2 minutos de intervado .....60x2=120 (2 min)....120x2=240 ...se na terceira, multiplicar 240x2, dá 480...um intervalo maior que 2 minutos...então, terei que calcular 240+120=360....e assim por diante, 360+120=480, etc...
Finalizando, é só acrescentar a linha </sequence-item> pra fechar a sessão sequence item...perceba a barra na frente. Se nao tivesse tirado a barra na linha explicada anteriormente, nao seria necessário fechar mais a sessão com esta linha com barra. Em baixo já fica a linha </sequence-items> (no plural, ao inves de sequence-item).

Se for com um VCD com menu, a linha <pbc> é adicionada...
Ex:
<pbc>
 <selection id="select-menu-1">
   <bsn>1</bsn>
   <loop jump-timing="immediate">0</loop>
   <play-item ref="seg-menu-1"/>
   <select ref="play-title-1"/>
 </selection>
 <playlist id="play-title-1">
   <prev ref="play-title-1"/>
   <return ref="select-menu-1"/>
   <wait>0</wait>
   <play-item ref="seq-title-1"/>
 </playlist>

</pbc>


Perceba que a linha de navegação do menu termina com </playlist>. Ja a dos capítulos termina com </selection>
Então dê enter como se estivesse pulando um parágrafo p/ nao ficar colado e adicione as linhas de navegação dos capítulos.

É na linha <pbc> também que se edita a navegação dos capítulos. Prestem mais atenção nos 1° e ultimos capítulos, pois nao adiciona botao de faixa proxima ou anterior .

No cap 1 nao tem a linha de prev, porque nao tem cap anterior a ele, apenas tem o next, que é o posterior; <next ref="select-chapter02"/>

Já no último cap, é o contrario, ou seja, não tem a linha next porque não tem cap posterior a ele; <prev ref="select-chapter02"/> .

ElMago

#3
Agora com o XML pronto, vamos usar o Vcdxbuild(do Vcdimager). Poderia-mos usar o Makevcd do Tovid, mas como não testei, acabei não usando. Alem da imagem BIN/CUE criada pelo Vcdxbuild ter sido a melhor e compatível , onde até o VLC tocou, pois é no VLC que testamos os capitulos, e MPlayer o menu (neste ultimo nao acertei como rodar capitulos de VCD). Para queimar a imagem eu uso o K3b.
Interessante é que o contêiner VCD (o MPEG 1/ MPEG-PS na mídia ou imagem) é que roda os capitulos e menu, já fora dela não, pelo menos nao consegui roda-lo na pasta com os capítulos colocando o ENTRIES.VCD e tudo mais na mesma pasta do video. É que a estrutura de diretorios do VCD se divide em 4 pastas basicamente, alem de outras, dependendo da adiçao de funções;  MPEGAV, VCD, SEGMENT e EXT.

Aqui o comando para o Vcdxbuild; vcdxbuild --bin-file='videocd.bin' --cue-file='videocd.cue' Teste.xml

Depois é só queimar no K3b que reconhece pelo CUE.

Vamos agora aos truques, inclusive aproveitando os comandos da GUI usando o Terminal.

Se querem o VCD com capítulos, mas sem menu, ou só com títulos sem menu e capitulo :

Básico ou Medio, um título ou vários títulos sem menu.

* Ir ao diretorio onde está(ão) o(s) video(s) pelo Terminal e digitar:
Com um video (titulo); makexml -vcd Video.mpg -out Teste
Com dois ou mais videos; makexml -vcd Video1.mpg Video2.mpg -out Teste
Se quer capitulo, é só editar o XML conforme orientado neste tuto. Depois é só usar o Vcdxbuild no mesmo diretorio.

Avançado, um titulo com menu ou capitulos.
* Para isso, vamos usar o Makemenu (tambem do Tovid), copiando o comando diretamente do Tovid GUI depois de autorar na aba 1.Layout, já na aba 2. Encode, então é só não clicar em Start encoding e copiar o comando e colar no Terminal, e no meu caso foi; makemenu -noask -quiet -overwrite -ntsc -vcd -align northwest -background "/home/usuario/Imagens/imagem.jpg" -audio "/home/usuario/Filmes/Videovcd/Meuaudio1.wav" -length 19 -font "Helvetica" -fontsize 24 -textcolor "rgb(255,44,44)" -fontdeco '-stroke rgb(193,37,37) -strokewidth 1' "Video.mpg" -out "/tmp/Meumenu_1"

Aí é só usar o Makexml la na pasta /tmp assim; makexml -vcd -menu Meumenu_1.mpg Teste.mpg -out Teste ... Depois é só usar o Vcdxbuild no mesmo diretorio (/tmp). Agora, se quer autorar os capítulos, é só usar o XML como descrito neste tuto antes de usar o Vcdxbuild.

Estes truques são legais porque evitam as limitações do Tovid GUI, ou seja, ele força uma nova conversão para VCD, o que gasta tempo, e cria um XML com menu, porem, podendo tirar as linhas do menu pelo XML no Gedit, caso não queira menu. Isso é bom para quem já tem seus videos editados em VCD pelo Avidemux ou Tovid puro.

Uso o Ubuntu 10.4, e o SO instalou o Tovid sem colocar as ferramentas adicionais como o Makemenu, Makexml, etc no diretorio /urs/bin (instalei pelo Synaptic). Dava comando não encontrado ao tentar usar estas ferramentas. Então copiei o Makexml e Makemenu e colei no diretorio /usr/bin como Root e pronto, problema resolvido.

Referencias :

http://download.videohelp.com/vitualis/general_xml_structure.html

http://download.videohelp.com/vitualis/chapters.html#xml_authoring

http://www.vivaolinux.com.br/artigo/Masterizacao-de-VCDs-com-menu-interativo?pagina=1

Divirtam-se!!!

pigdin

Parece um pouco trabalhoso, será que usando o emovix não facilitaria um pouco as coisas?
Desk: Phenom X3 2GB DDR II - Win 7 / Ubuntu 10.04 64 Bits
Note MUB: Core2Duo 4GB - Win7 / Ubuntu 10.04 / Bodhi Linux.
@alexpigdin

ElMago

#5
Oi pigdin, me desculpa pela longa demora para responder, tinha já até esquecido deste tópico, pois meu tempo é bastante curto.

Quanto ao emovix é muito bom, mas nao serve exatamente p/ isso.
O proposito deste tuto é exatamente autorar um VCD para ser lido não somente em PC, mas tambem em DVD de mesa com opção de menu e capítulo.
Só que, olhando bem, é mais para experimento do que utilidade, e mostrar que dá para fazer também no GNU/Linux.
O formato VCD é antigo e proprietário, o que dificulta o suporte a todos os seus recursos nos aparelhos de DVD ... é o que acho.
E pelo que pesquisei, poucos aparelhos suportam. Só pra citar um exemplo o Xtreamer DVD que pega tudo e mais um pouco, mas não suporta capitulos de VCD, e suporta capitulos e todas as funções do Matroska (que é código aberto rsrsrs).
Assim, tambem, praticamente abandonei o VCD.

Abraço!