Mostrando postagens com marcador mencoder. Mostrar todas as postagens
Mostrando postagens com marcador mencoder. Mostrar todas as postagens

terça-feira, 18 de janeiro de 2011

Retirando os intervalos comerciais de uma gravação

Quem possui um dispositivo de captura de vídeo no computador, pode gravar um programa de televisão direto para seu disco rígido (http://dan-scientia.blogspot.com/2009/05/capturando-transmissao-da-tv-com-o.html). Em uma operação normal, antes de iniciar o programa ativa-se a gravação e só desliga após o término, sem se preocupar em pular os intervalos comerciais.

É muito chato ficar controlando o intervalo enquanto assistimos e gravamos o programa, também é difícil prever com exatidão o momento que termina uma parte ou que inicia a próxima. Felizmente, esta edição simultânea é desnecessária pois podemos fazer isto depois.

Com a ferramenta MEncoder, distribuído juntamente com o MPlayer, é possível copiar trechos de um arquivo de vídeo e gravá-los gerando outros arquivos. Assim, escolhemos somente o programa, deixando de fora os intervalos comerciais.

Antes de extrair é preciso anotar os tempos de cada parte do programa, a hora do início e do fim, e calcular a duração de cada parte. Reproduzindo o vídeo, da gravação na íntegra, por exemplo com o MPlayer, podemos pressionar a tecla "o" para alterar o estado do OSD até aparecer na tela o relógio da reprodução.

Se, por exemplo, anotarmos que a primeira parte vai do tempo 00h00m27s até 00h13m12s, podemos calcular que esta parte termina em 13 x 60 + 12 = 792 segundos e que a duração desta parte tem 792 - 27 = 765 segundos. Então, a linha de comando para o MEncoder copiar somente este trecho, para um outro arquivo, é:

$ mencoder gravacao.mpg -o parte1.mpg -oac copy -ovc copy -ss 00:00:27 -endpos 765

Este procedimento se repete para as outras partes que existirem. Quando tivermos todas as partes separadas em arquivos, podemos juntá-las gerando agora um novo arquivo com todo o programa, sem os intervalos comerciais. Um exemplo de linha de comando para juntar as partes é:

$ mencoder -oac copy -ovc copy -o editado.mpg parte1.mpg parte2.mpg parte3.mpg parte4.mpg

Consulte a página manual do MEncoder para informações detalhadas sobre sua linha de comando. Esta ferramenta é bastante versátil.

segunda-feira, 11 de maio de 2009

Capturando a transmissão da TV com o MEncoder

Existe uma dupla de aplicativos de linha de comando para player multimídia e codificação de vídeos chamada MPlayer e MEncoder, ambos são uma ferramenta extremamente poderosa para reprodução e conversão de vídeo. Neste artigo vou mostrar como é possível capturar a transmissão da TV, através de uma placa de TV, e gerar um arquivo no formato DivX ou DVD. Os exemplos são feitos tendo como base o ambiente Linux com a placa de captura BT878 Prolink PixelView. Dependendo do modelo da placa de captura os parâmetros poderão ser diferentes.

Reproduzir a TV:

Apenas ilustrando, para reproduzir o conteúdo da transmissão da TV, sem gerar um arquivo, utiliza-se o MPlayer. Abaixo segue o exemplo da linha de comando:

mplayer tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable

No comando acima o MPlayer reproduzirá o conteúdo do canal 14, usando o driver V4L2, na entrada de televisão (input=0), no sistema PAL-M (normid=9) e sintonizando pela lista de canais da freqüência de tv a cabo.


Capturar a TV para um arquivo:

Na captura utiliza-se o aplicativo MEncoder. Sua sintaxe difere pois é necessário especificar também qual o codec que será utilizado e bem como a qualidade do arquivo gerado:

Para DivX:

mencoder tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable:alsa:adevice=hw.1,1:amode=1:forceaudio:forcechan=2:audiorate=48000 -o arquivo.avi -ovc lavc -lavcopts vcodec=mpeg4:vhq:vqmax=31:vbitrate=600:keyint=300 -oac mp3lame -lameopts cbr:br=128 -srate 48000 -sws 1 -vf crop=608:456:4:12,pp=lb,scale=520:390 -endpos 60

Para DVD:

mencoder tv://14 -tv driver=v4l2:input=0:normid=9:width=640:height=480:chanlist=us-cable:alsa:adevice=hw.1,1:amode=1:forceaudio:forcechan=2:audiorate=48000 -o arquivo.avi -oac lavc -ovc lavc -of mpeg -mpegopts format=dvd:tsaf -lavcopts vcodec=mpeg2video:vrc_buf_size=1835:vrc_maxrate=9800:vbitrate=5000:keyint=18:vstrict=0:acodec=ac3:abitrate=192:aspect=4/3 -ofps 30000/1001 -srate 48000 -af lavcresample=48000 -vf crop=608:456:4:12,pp=lb,scale=720:480 -endpos 60

Nestes dois exemplos foram acrescentados parâmetros no driver V4L2 para a captura do sinal de áudio. O arquivo de saída está especificado no parâmetro -o e o parâmetro -ovc define o codec de vídeo e -oac define o codec de áudio. Em ambos exemplos foi necessário cortar as bordas para eliminar o desalinhamento da imagem em relação a área de captura. E também foi alterado o tamanho da imagem, recomendável pelo menos na geração do arquivo para DVD onde a resolução é padrão. No caso da codificação em DivX tem-se maior liberdade na variação da qualidade do vídeo e do áudio alterando a taxa de bits, para DVD geralmente utiliza-se as taxas padrão. Veja abaixo algumas possibilidades.


Variações de qualidade para DivX:

Diferentes qualidades geram arquivos de tamanhos diferentes, obviamente quanto melhor a taxa maior será o arquivo. Em nossos exemplos a taxa foi definida de modo fixo sendo vídeo em "vbitrate" e a taxa de áudio em "br":

Baixa, 1 minuto ocupa 3.3 MB (2h -> 396mb): vbitrate=350 br=48
Boa, 1 minuto ocupa 7 MB (2h -> 840mb): vbitrate=800 br=128
Alta, 1 minuto ocupa 9.6 MB (2h -> 1152mb): vbitrate=1200 br=128
Ótima, 1 minuto ocupa 14 MB (2h -> 1680mb): vbitrate=1800 keyint=150 br=128
CD, 1 minuto ocupa 5.6 MB (2h -> 672mb): vbitrate=600 br=128


Entrada do áudio:

Existe duas formas de capturar o áudio da TV, uma é pela entrada da placa de som (line-in) e a outra é diretamente pelo hardware da placa de TV.

Line in: adevice=hw.0,0
BT878: adevice=hw.1,1 (requer o módulo snd-bt87x carregado)


Duração da gravação:

Com este parâmetro a gravação encerra-se automaticamente após o tempo determinado.

-endpos 60 (segundos)
-endpos 01:10:00 (hora:minuto:segundo)
-endpos 100mb (tamanho do arquivo)


A aplicabilidade deste software pode ir muito além, como por exemplo um script chamado pelo cron para automatizar a gravação de um programa de TV, como fazíamos em um VCR. Consulte os manuais destes aplicativos para conhecer toda a variedade de parâmetros, que é muito maior do que foi exemplificado neste artigo. Boa gravação!