Arquivos históricos do BR-Linux.org apresenta:

Criando VCD e SVCD no Linux

Leia abaixo um tutorial do Sidney3 (sidney3@domain.com.br) explicando como criar VCDs e SVCDs (inclusive com legendas) utilizando apenas ferramentas nativas do Linux.

Nota:Atualizado em 13/6 com uma nova versão do texto do Sidney3

Criando VCD e SVCD no Linux
Sidney3 ( sidney3@domain.com.br)

Bom, eu há muito tempo procurava uma maneira de criar um VCD ou SVCD no linux, então logo de início, achei umas páginas interessantes. Por exemplo o TLM ( The Linux Manual ) mostrando como fazer, mas infelizmente ele usa os programas TMPGEnc para converter o arquivo para mpeg e o VirtualDub para separar áudio e video do filme, e usa alguns plugins para "colar" a legenda no filme.

Até aí tudo bem... descobri como fazer, mas como fazer isso no GNU/Linux ? Já que os programas citados são para Windows. Primeiro pensamento que veio na mente: wine ; Segundo pensamento que veio na mente: Emulando vai ficar uma porcaria, deixa eu procurar mais.

Procurei e encontrei duas páginas explicando como criar VCD e SVCD, são Big J's Linux e essa que se não me engano achei a partir de projeto mjpegtools no sourceforge.

Bom... meio caminho andado... descobri que existem programas no GNU/Linux que fazem a mesma coisa que o Hugo explica no TLM. Não vou entrar no mérito de explicar como instalar esse programa, mas na página do projeto existem documentações disponíveis.

Agora só falta uma coisa... como eu vou "colar" a legenda no filme ? Bom... procurar mais um pouco que deve existir algum projeto no sourceforge ou no freshmeat que deve fazer isso...
Depois de muita procura... descobri que não... não existe tal projeto para fazer apenas isso... Sentimento de frustração... Eis que alguns dias depois, um estalo me indicou o caminho... Existe um projeto que faz isso. Bom... na verdade ele não faz "apenas" isso... ele faz isso e MUITO mais! MPlayer... com ele eu consigo ver filmes com legendas, e será que essa opção funciona também no mencoder ? Gotcha! funcionou... então eu não precisava de mais nada para fazer o meu svcd.

Então aí vai a receita de bolo. Após se certificar de que a legenda está devidamente sincronizada, e verificar que você tem espaço no seu HD para fazer isso... basta seguir esses passos:

1 - Converter o arquivo e "colar" a legenda
mencoder <arquivo> -oac pcm -ovc lavc -lavcopts vcodec=mjpeg -sub <legenda> -o <arquivo de saida>

2 - Separar áudio e vídeo
lav2wav <arquivo de saida> | mp2enc -V -o sound.mp2
lav2yuv <arquivo de saida> | yuvscaler -O SVCD | mpeg2enc -f 4 -q 7 -I 1 -V 200 -o video.m2v

3 - Juntar áudio e vídeo nos padrões para SVCD
mplex -f 4 -b 200 -r 2750 sound.mp2 video.m2v -o svcd_out.mpg ( A opção -b aqui deve ter o mesmo valor do mpeg2enc -V )

4 - Agora só basta criar uma imagem com o SVCD para queimar
vcdimager -t svcd svcd_out.mpg

Agora explicando melhor:

Vou usar essa convenção para extensão de arquivos:
.mp2 -> MPEG layer 2
.m1v -> MPEG 1 ( Usado para VCD )
.m2v -> MPEG 2 ( Usado para SVCD )

Bom... para o VCD, usamos o padrão MPEG 1 de vídeo, e para o padrão MPEG 1 pode ser usado o padrão de áudio do MPEG layer 2, voce pode ter um bitrate variável para vídeo e constante para áudio. Então usaremos o mp2enc para gerar o arquivo de saída de áudio, mas como conseguir o arquivo de entrada ?

De duas maneiras práticas:

1 - Se voce já colou a legenda descrito como no passo 1 acima, voce pode apenas executar o comando lav2wav <arquivo de saida> | mp2enc -V -o sound.mp2, ou...

2 - Se ainda está com o Divx pode fazer o seguinte... mplayer -vop null -vo null -ao pcm <arquivo Divx>. Esse comando vai criar um arquivo audiodump.wav no diretório corrente. Com ele voce pode usar o mp2enc para criar o .mp2 da seguinte forma cat audiodump.wav | mp2enc -V -o sound.mp2

Já temos o áudio... agora só falta o vídeo. Se o arquivo não tiver nenhum erro... ótimo, mas se tiver... nada que um pouco de paciencia e espaço em disco não resolvam!

Para gerar o arquivo de vídeo, infelizmente voce tem que perder tempo em transformá-lo em um arquivo de padrão mjpeg, não é tanto tempo perdido porque na verdade voce vai estar "colando" a legenda. Bom... basta usar o comando mplayer -sub <Arquivo de legenda> -o arquivo.lav -ofps 25.

Uma dica muito importante! Tanto o VCD quando o SVCD utilizam 2 padrões. O PAL ( 25 fps ou 25:1 ) e o NTSC ( 29.97 fps ou 30000:1001 ) , e infelizmente existem alguns filmes em outro padrão que se chama NTSC-FILM ( 23.95 fps, se não me engano ), mas existem muitos filmes por aí com frames por segundos diferente desses padrões, e infelizmente as ferramentas do mjpeg-tools só trabalham com os padrões PAL e NTSC, então já sabem o que fazer para não perder tempo... antes de colar toda a legenda no arquivo de saída, dê um CTRL-C quando tiver passados alguns frames e dê o comando lavinfo arquivo.lav. A saída do comando pode ser algo tipo:

++ WARN: [lavinfo] Input file arquivo.lav is not in  JPEG 4:2:2 or 4:2:0 format
**ERROR: [lavinfo] File arquivo.lav has 14.984900 frames/sec, choose norm with +[np] param

ou

++ WARN: [lavinfo] Input file arquivo.lav is not in  JPEG 4:2:2 or 4:2:0 format
video_frames=15
video_width=352
video_height=240
video_inter=-1
video_norm=PAL
video_fps=25.000000
video_sar_width=0
video_sar_height=0
max_frame_size=6650
MJPG_chroma=0
has_audio=1
audio_bps=4
audio_chans=2
audio_bits=16
audio_rate=24000
num_video_files=1

se estiver tudo certo. Bom... aquele WARNING ( aviso ), só vai influenciar em alguma coisa se você for usar o lavplay, glav ou o studio do Linux Video Studio, mas isso pode ser contornado e eu vou explicar isso depois.

Ok. Agora você tem o arquivo para ser tratado... basta fazer assim:

para VCD:
lav2yuv arquivo.lav | yuvscaler -M BICUBIC -O VCD | mpeg2enc -f 1 -q 7 -I 1 -V 200 -S 625 -B 260 -o video.m1v

para SVCD:
lav2yuv arquivo.lav | yuvscaler -M BICUBIC -O SVCD | mpeg2enc -f 4 -q 7 -I 1 -V 200 -S 625 -B 260 -o video.m2v

O yuvscaler irá ajustar o filme para caber na tela da televisão, assim como existem os padrões PAL e NTSC, existem diferenças no número de linhas e colunas exibidas nos padrões VCD e SVCD. Veja abaixo:

VCD:
PAL  - 25 fps    - 352 x 288
NTSC - 29.97 fps - 352 x 240

SVCD:
PAL  - 25 fps    - 480 x 576
NTSC - 29.97 fps - 480 x 480

e se o filme estiver no format Widescreen (16:9) voce ainda pode usar a opção -M WIDE2STD no yuvscaler, ele irá adicionar uma tarja preta acima e abaixo do filme.

E com relação aos parametros do mpeg2enc, o -f irá definir se a saída será VCD ou SVCD, para "1" ou "4" respectivamente, o -S e o -B tem uma função muito importante! Eles servem para definir dentro do arquivo onde ficará uma marca para a quebra de um próximo arquivo... então se voce vai queimar o seu VCD ou SVCD em um CD de 640 Mb, esses valores são o sufiente, se for numa mídia de 700 Mb, você pode definir o valor de -S para 680 tranquilamente.

E agora que já temos os arquivos de video ( video.m1v / video.m2v ) e áudio ( sound.mp2 ), podemos brincar :)

Para VCD:
mplex -f 1 -b 200 -r 2750 sound.mp2 video.m2v -o  vcd_out%02d.mpg ( A opção -b aqui deve ter o mesmo valor do mpeg2enc -V )

Para SVCD:
mplex -f 4 -b 200 -r 2750 sound.mp2 video.m2v -o svcd_out%02d.mpg ( A opção -b aqui deve ter o mesmo valor do mpeg2enc -V )

Novamente aqui no mplex, o -f define se a saída será VCD ou SVCD, e a opção -o você pode notar que no nome existe um formato igual ao do comando printf da linguagem C. Bom... isso funciona para aquela quebra em vários CDs que foi comentado com a opção -S e -B do mpeg2enc. Depois disso, é só usar o vcdimager para criar as arquivos para queimar o seu VCD/SVCD e reproduzi-los à vontado no seu DVD. E antes de queimar o CD e ver se tudo ficou ok, você pode também reproduzir com o mplayer através do comando mplayer -vo x11 -vcd 1 -cuefile <arquivo .cue>.

Com relação ao vcdimager, a versão unstable possui alguns recursos muito úteis para deixar o seu VCD/SVCD com um toque profissional, como o recurso a menus por exemplo. Aconselho a leitura das man pages e documentações disponíveis.

Bom... já ia esquecendo... fiquei de comentar sobre o arquivo estar danificado... bom... devem existir maneiras mais fáceis que essa, e programas que fazem isso... como não estava com vontade de procurar pela net, fiz o seguinte...

mplayer -nosound -vo jpeg <Filme.avi>

esse comando irá criar um arquivo jpeg para cada frame do filme... então certifique-se que tem bastante espaço em disco. Depois que ele acabar de gerar todas as imagens, use os seguintes comandos:

jpeg2yuv -f 25 -It -L1 -j %08d.jpg | yuv2lav -f a -I 1 -o saida.avi ( Não funciona se a extensão do arquivo for diferente de avi, estranho não é ??? )
então voce terá um arquivo avi sem problemas e poderá adicionar o som com o comando lavaddwav saida.avi audiodump.wav filme_com_som.avi e a partir dessa etapa começar a gerar o seu VCD/SVCD.

Qualquer novidade ou crítica... por favor, fiquem à vontade!

sidney3 ( sidney3@domain.com.br)

Postado por brain em junho 11, 2003 09:45 AM

Comentários para "Criando VCD e SVCD no Linux"

» Postado por: mulder #1 em junho 11, 2003 02:12 PM, 200.222.3.3:

 

» Postado por: mulder #1 em junho 11, 2003 02:14 PM, 200.222.3.3:

 

» Postado por: Adriel Lyra em junho 11, 2003 03:29 PM, 200.244.74.:

 

» Postado por: jmv em junho 11, 2003 04:24 PM, 200.182.159:

 

» Postado por: Clycio em junho 11, 2003 06:24 PM, 200.169.158:

 

» Postado por: Clycio em junho 11, 2003 06:57 PM, 200.169.145:

 

» Postado por: Luciano em junho 12, 2003 11:43 AM, 200.215.97.:

 

» Postado por: sidney3 em junho 12, 2003 11:56 AM, 200.149.182:

 

» Postado por: Kelly Abrantes Murta em junho 12, 2003 01:01 PM, 200.202.193:

 

» Postado por: sidney3 em junho 12, 2003 01:10 PM, 200.149.182:

 

» Postado por: mulder #1 em junho 12, 2003 01:49 PM, 200.222.3.3:

 

» Postado por: Cabral em junho 13, 2003 12:17 PM, 200.150.24.:

 

» Postado por: Caverna em junho 29, 2003 02:07 PM, 200.146.2.8:

 

» Postado por: André Martinelli em julho 16, 2003 04:43 PM, 200.194.112:

 

» Postado por: Roberto William em agosto 2, 2003 05:06 PM, 200.223.245:

 

» Postado por: Paulo Henrique em agosto 12, 2003 09:11 AM, 200.217.231:

 

» Postado por: luanrocos em agosto 21, 2003 01:30 PM, 200.252.60.:

 

» Postado por: EDUARDO em agosto 28, 2003 09:11 PM, 200.252.145:

 

» Postado por: Francisco Bispo em setembro 19, 2003 04:09 PM, 200.164.107:

 

» Postado por: Fernando em outubro 2, 2003 08:36 AM, 200.102.169:

 

» Postado por: Amauri em outubro 7, 2003 10:23 PM, 200.168.52.:

 

» Postado por: Amauri em outubro 7, 2003 10:33 PM, 200.168.52.:

 

» Postado por: Felipe em outubro 12, 2003 04:33 AM, 200.141.105:

 

» Postado por: OgRo em outubro 17, 2003 08:29 AM, 200.207.158:

 

» Postado por: fazas em outubro 18, 2003 06:54 PM, 213.190.192:

 

» Postado por: Fernando Fraga em novembro 5, 2003 06:20 PM, 200.168.14.:

 

» Postado por: Yuru em janeiro 1, 2004 01:59 PM, 200.140.12.:

 

» Postado por: luis em fevereiro 7, 2004 12:16 AM, 194.65.14.7:

 

» Postado por: . em março 3, 2004 01:58 PM, 200.143.124:

 

» Postado por: Juliano em março 28, 2004 05:06 PM, 200.176.140:

 

» Postado por: Roberto Valle em abril 20, 2004 12:05 PM, 200.217.176:

 

» Postado por: thiago em maio 8, 2004 06:21 PM, 200.101.96.:

 

» Postado por: nic1138 em junho 3, 2004 03:02 PM, 150.164.32.:

 

» Postado por: pantie-sexy em julho 20, 2004 10:26 AM, 66.98.226.5:

 

» Postado por: Giovana em julho 24, 2004 06:53 PM, 200.100.177:

 

» Postado por: wanderlan em julho 27, 2004 02:01 AM, 200.101.15.:

 

» Postado por: Christiam em agosto 11, 2004 03:29 AM, 200.151.141:

 

» Postado por: play blackjack em agosto 16, 2004 06:25 PM, 62.14.104.3:

 

» Postado por: Briana Banks em setembro 10, 2004 12:30 AM, 205.218.254:

 

» Postado por: neto em setembro 17, 2004 02:11 PM, 201.3.53.17:

 

» Postado por: neto em setembro 17, 2004 02:11 PM, 201.3.53.17:

 

» Postado por: Juan em setembro 19, 2004 04:14 AM, 200.102.91.:

 

» Postado por: Zithromax em setembro 24, 2004 07:07 PM, 65.75.139.9:

 

» Postado por: Buy Amoxicillin em outubro 5, 2004 07:53 AM, 67.19.91.50:

 

» Postado por: Cialis em outubro 9, 2004 07:31 AM, 67.19.91.50:

 

» Postado por: aline em outubro 10, 2004 08:51 PM, 200.181.187:

 

» Postado por: Levaquin em outubro 13, 2004 07:10 AM, 67.19.91.50:

 

» Postado por: ademir jorge em outubro 16, 2004 12:35 AM, 201.5.153.7:

 

» Postado por: Remeron prescription em outubro 23, 2004 05:48 AM, 65.75.139.9:

 

Antes de comentar...

- Preserve a qualidade desta discussão
- Leia os Termos de Uso.
- Este formulário deve ser usado para comentários sobre a notícia. Se você tem dúvidas ou precisa de ajuda, use o Fórum.
- Mantenha o foco nos argumentos e no assunto
- Não faça ataques pessoais.
- Pense 5 vezes antes de entrar em discussões inúteis, como "qual é a melhor distribuição/ambiente gráfico/linguagem de programação/etc.", mesmo se alguém já tiver provocado - um erro não justifica o outro
- Não seja um e-mala ;-)


O Arquivo Histórico do BR-Linux.org mantém no ar (sem alteração, exceto quanto à formatação) notícias, artigos e outros textos publicados originalmente no site na segunda metade da década de 1990 e na primeira década do século XXI, que contam parte considerável a história do Linux e do Open Source no Brasil. Exceto quando indicado em contrário, a autoria dos textos é de Augusto Campos, e os termos de uso podem ser consultados na capa do BR-Linux.org. Considerando seu caráter histórico, é provável que boa parte dos links estejam quebrados, e que as informações deste texto estejam desatualizadas.