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

sábado, 21 de janeiro de 2012

Extrair o áudio de um DVD

No ambiente Linux existe um reprodutor multimídia com o qual é possível, dentre muitas funcionalidades, extrair o áudio de um filme em DVD. Trata-se do MPlayer (http://www.mplayerhq.hu/), uma aplicação de linha de comando com código aberto.

O MPlayer suporta e reproduz dezenas de formatos de vídeos, incluindo uma mídia física no formato DVD, utilizando a opção 'dvd://número_do_título'. Para especificar a saída de áudio em um arquivo usa-se a opção do driver de saída de áudio '-ao' com a subopção 'pcm', onde '-ao pcm' especifica o driver de saída de áudio raw PCM/wave para escrita em arquivo. A subopção pcm permite 'file=arquivo.wav' para especificar o nome do arquivo que será gerado.

Opções adicionais podem ser utilizadas caso houver interesse ou necessidade, por exemplo, a opção '-ss hh:mm:ss' inicia em determinada posição do vídeo, '-endpos segundos' encerra na posição dada, '-alang LL' especifica a linguagem do áudio, '-chapter capítulo' especifica o capítulo para reprodução e '-dvd-device /dev/XXX' especifica o caminho para o dispositivo DVD.

Um exemplo de linha de comando é apresentado a seguir, reproduzindo o título 1 do DVD, encerrando após 8 segundos e gerando o arquivo title1.wav:

$ mplayer dvd://1 -endpos 8 -ao pcm:file=title1.wav

Com este arquivo wave em mãos, pode-se converter pra qualquer outro formato de áudio que desejar, com a ferramenta que desejar. O formato de áudio raw PCM/wave é um dos melhores para manter o áudio na íntegra, sem qualquer compactação com perda de dados.

O MPlayer está disponível também para outras plataformas e sistemas, consulte a documentação. Existem muitas interfaces gráficas para o MPlayer mas para explorar todas as opções, a linha de comando é necessária.

quarta-feira, 28 de julho de 2010

A capacidade real de um dvd gravável

Um DVD virgem, no modelo mais comum encontrado no mercado, informa em sua embalagem uma capacidade máxima de 4,7 GB. Entretanto, os fabricantes de DVD adotam o Sistema Internacional de Unidades (SI) para indicar a capacidade.

No SI os prefixos dos valores indicam a multiplicação por potências de base dez, assim 1 KB = 1000 Bytes, 1 MB = 1000 KB e 1 GB = 1000 MB. A informação de 4,7 GB no DVD equivale à 4700000000 Bytes, seguindo o Sistema Internacional de Unidades.

Como na computação os prefixos são binários, indicando a multiplicação por potências de base dois, torna-se necessário um ajuste no valor da capacidade máxima. Na computação 1 KB = 1024 Bytes, 1 MB = 1024 KB e 1 GB = 1024 MB, então a capacidade de 4700000000 Bytes será:

4700000000 Bytes / 1024 = 4589843 KB

4589843 KB / 1024 = 4482 MB

4482 MB / 1024 = 4,38 GB

A capacidade de uma mídia DVD, informado em sua embalagem como 4,7 GB, possui realmente 4,38 GB. O mesmo cálculo deve ser feito para DVD de dupla camada, que em sua embalagem é informado 8,54 GB e na realidade possui 7,95 GB. Não é o fabricante que nos engana mas utiliza outra unidade de medida.

A capacidade pode apresentar diferenças sutis dentre diversos softwares, e as diferentes tecnologias de mídias DVD, como DVD-R, DVD+R, DVD-RW e DVD+RW também possuem capacidades ligeiramente diferentes.

sábado, 6 de junho de 2009

Gravando um DVD de dados em terminal de texto no Linux

Os aplicativos em modo texto para gravação de CD e DVD no Linux são uma forma muito eficiente de ter seus dados copiados para estes tipos de mídia. São ferramentas que proporcionam um controle total no processo e permitem a escolha de qualquer parâmetro de gravação.

Antes de qualquer gravação é necessária a organização dos arquivos que serão copiados. Uma maneira segura é juntá-los dentro de um diretório, assim tudo o que estiver lá dentro não será esquecido. Uma solução ainda mais eficiente é a geração de uma imagem de DVD, na qual pode-se testar se tudo está como deseja antes de queimar uma mídia.

Para a geração de uma imagem existe uma ferramenta chamada "genisoimage", do pacote de mesmo nome, capaz de criar sistemas de arquivos híbridos com ISO9660/Joliet/HFS e opcionalmente com atributo Rock Ridge. Esta ferramenta possui uma vasta variedade de parâmetros, bem documentada em sua página manual, e permite obter qualquer sistema que desejar. Segue um exemplo de uma linha de comando com os parâmetros comentados:

genisoimage -r -J -joliet-long -iso-level 4 -l -V nome -o imagem.iso diretório/

-r: Adiciona a extensão Rock Ridge para o sistema de arquivos e setando os arquivos e diretórios com permissões e modos em valores mais proveitosos, como dono e grupo setados em zero, permissão de escrita removida etc. Reconhecido no Linux apenas.

-J: Adiciona a extensão Joliet para o sistema de arquivos, permitindo nomes com até 64 caracteres.

-joliet-long: Permite nomes de arquivos Joliet com até 103 caracteres.

-iso-level: Especifica o nível do ISO9660, de 1 a 4, que vai do modo mais compatível, com nomes de no máximo 8.3 caracteres, ao mais relaxado, o nível 4, usando o padrão ISO-9660:1999, onde os nomes dos arquivos podem ter até 207 caracteres e não há mais o limite de 8 níveis para os subdiretórios.

-l: Permite 31 caracteres para o nome dos arquivos, relaxando as restrições do padrão ISO9660.

-V: Especifica um nome para o volume, de até 32 caracteres.

-o: Especifica o arquivo de saída para a imagem gerada.

Neste exemplo será gerado o arquivo "imagem.iso" contendo tudo que estiver dentro do "diretório/", excluindo o próprio, ou seja, na raiz do sistema de arquivo gerado ficarão os arquivos e subdiretórios existentes dentro do diretório especificado.

Uma outra forma de gerar uma imagem é em um processo de cópia de um DVD, onde utiliza-se a ferramenta "dd", do pacote "coreutils", para copiar o conteúdo da mídia e gerar a imagem. Segue um exemplo:

dd if=/dev/dvd of=imagem.iso

Este comando simplesmente faz uma cópia idêntica do sistema de arquivo do DVD para a imagem especificada.

Antes de gravar a imagem em uma mídia vazia convém testar se os arquivos foram copiados corretamente para a imagem, utilizando o comando "mount" como no exemplo abaixo:

mount -o loop -t iso9660 imagem.iso /mnt/iso/

Todo o sistema de arquivo contido na imagem será aberto em modo somente leitura no diretório "/mnt/iso/". Se os arquivos não estiverem corrompidos, tudo estará certo. O comando "umount /mnt/iso/" fechará esta montagem.

Arquivo imagem correto, tudo pronto para gravar na mídia. Um programa muito bom para isso é o "growisofs" do pacote "dvd+rw-tools". Este programa suporta todos os tipos de mídias DVD inclusive mídias Blu-ray.

Para que este comando funcione é necessário saber o nome do dispositivo do gravador, usando o comando abaixo:

wodim --devices

Como retorno aparece uma informação semelhante a que está abaixo:

wodim: Overview of accessible drives (2 found) :
----------------------------------------------------------------
0 dev='/dev/scd0' rwrw-- : 'HL-DT-ST' 'DVD-RAM GSA-H50N'
1 dev='/dev/scd1' rwrw-- : 'HL-DT-ST' 'DVD-ROM GDR8163B'
----------------------------------------------------------------

Neste exemplo percebe-se que o gravador é o dispositivo "/dev/scd0". Então um exemplo de linha de comando para o growisofs fica assim:

growisofs -dvd-compat -speed=4 -Z /dev/scd0=imagem.iso

-dvd-compat: Proporciona o máximo de compatibilidade com o resultado da mídia DVD, necessário para filmes e em DVD de dados faz com que a sessão fique fechada.

-speed: Determina a velocidade de gravação, em x.

-Z: Especifica o dispositivo do gravador, que por sua vez recebe o nome do arquivo da imagem.

Como podem perceber, são comandos simples que fazem muito. Consultem as páginas manuais destas ferramentas e vejam o quanto elas são capazes de fazer.

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!