segunda-feira, 18 de maio de 2009

Como Converter Vídeos no Linux?

  • Introdução

Converter arquivos de vídeos e som no Linux, abrangendo os mais variados formatos e codecs, pode ser uma tarefa razoavelmente simples, bastando conhecer o programa certo. Nesta dica vamos apresentar o programa "ffmpeg". Este conversor de áudio e vídeo é extremamente flexível e poderoso, em linha de comando, permitindo que você faça as suas conversões remotamente, em seu servidor, ou mesmo escreva programas de conversão que fiquem rodando no servidor, esperando a próxima tarefa para ser disparada. O ffmpeg não só converte mídias, como também muda o bitrate, redimensiona o vídeo, dentre muitas outras opções avançadas.
Para baixar o ffmpeg, vá até a página oficial do projeto:

http://ffmpeg.mplayerhq.hu/

Ou use o seu gerenciador de pacotes favorito. Pode ser instalado via apt-get com o comando:

apt-get install ffmpeg

Observe que o ffmpeg necessita de algumas bibliotecas de áudio e vídeo, como a libavcodec e a libavformat. Para instalá-lo "na mão", procure antes as versões requeridas destas bibliotecas e as instale. Para conhecer a sintaxe e escrever a linha de comando correta, veja a página do manual "man ffmpeg" ou o FAQ oficial:

http://ffmpeg.mplayerhq.hu/faq.html

Existem versões do ffmpeg para várias plataformas, o que facilita o seu uso ou a implementação em um laboratório de convesão profissional. Abaixo, um breve tutorial de alguns parâmetros:


  • Conversão simples
Um arquivo pode ser convertido de maneira simples apenas com o comando:

ffmpeg -i arquivo.wmv arquivo.avi

O parâmetro "-i" indica o arquivo fonte. O formato do arquivo de saída é automaticamente reconhecido pelo ffmpeg, a partir da sua extensão.


  • Sugerindo um Codec de Vídeo

Se você quiser um codec específico, como Xvid ou DivX (versão 4+), use a opção -vcodec, passando o codec desejado (mpeg4, para o caso citado).

ffmpeg -i arquivo.wmv -vcodec mpeg4 arquivo.avi


  • Sugerindo um Codec de Áudio

Assim como o vídeo do seu arquivo pode ser comprimido, igualmente o áudio também o pode, reduzindo drasticamente o tamanho do arquivo final. Em alguns casos, como mídias para celulares, é necessário que o áudio esteja em AAC+ (AAC Plus), sob pena de não ser executado. Assim, utilize a opção -acodec, passando o codec desejado (libfaac, para o caso citado).

ffmpeg -i arquivo.wmv -vcodec mpeg4 -acodec libfaac arquivo.avi


  • Como converter vídeos para iPod?

ffmpeg -i arquivo.wmv -acodec libfaac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv -trellis 2 -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X output.mp4

Este comando acima contém diversas configurações do áudio e do vídeo necessárias para que seu vídeo seja convertido no formato suportado pelo iPod. Veja mais destas opções adiante...


  • Definindo o bitrate do áudio e do vídeo
O bitrate do áudio e do vídeo são definidos separadamente, com os parâmetros:

-ab: é uma opção apenas do áudio, que define o bitrate em bits/s.
-b: é uma opção apenas do vídeo, que define o bitrate em bits/s.


  • Definindo o Frame Rate (quadros por segundo)
Basta usar a opção "-r" seguida do número desejado. Por exemplo, para forçar 25 quadros por segundo, use:

ffmpeg -i arquivo.wmv -r 25 arquivo.avi

Mas, cuidado: alguns codecs só suportam pequeno número de framerates padronizados. Se este for seu caso, a informação de framerate será ignorada.


  • Como ripar DVD com o ffmpeg??
Para este também tem uma "fórmula", com toda a configuração necessária!! Segue:

ffmpeg -i cap_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k cap.avi


  • Como ler a entrada padrão, ou escrever para a saída padrão?
Basta usar, em lugar do nome do arquivo, o caracter "-".


  • Como fazer um vídeo a partir de figuras?
Primeiramente, coloque todas as figuras no mesmo diretório e as renomeie para um padrão qualquer, como img001.jpg, img002.jpg, img003.jpg, e assim por diante. Depois, execute o comando:

ffmpeg -f image2-i img%d.jpg saida.mpg


  • Como inspecionar as streams presentes em um arquivo?
Um arquivo de vídeo, por exemplo, pode estar em um formato dito container, ou seja, uma espécie de cápsula onde se podem encontrar diversas streams de áudio, vídeos e legendas. Com o ffmpeg é possível se extrair cada uma delas, ou mesmo formar um arquivo novo com determinadas streams específicas de arquivos diferentes. Para inspecionar um arquivo e descobrir quais streams existem nele, basta executar o comando:

ffmpeg -i arquivo.mp4

As streams estão no fim da mensagem, normalmente numeradas no padrão "0.0", "0.1", etc. Exemplo:

Duration: 00:01:48.48, start: 0.000000, bitrate: 550 kb/s
Stream #0.0(und): Audio: libfaad, 44100 Hz, stereo
Stream #0.1(und): Video: h264, yuv420p, 480x200, 23.97 tb(r)

Indica que a primeira stream é de áudio e a segunda de vídeo. O codec da primeira é libfaad, com 44100 Hz de freqüência e bitrate de 550 kb/s. Não tem stream de legenda neste arquivo.


  • Como trabalhar com legendas?
Para incluir uma legenda, basta usar uma das opções:

-scodec codec: define o codec da legenda (subtitle codec). O padrão de arquivos VOB, por exemplo, é o codec dvdsub. Se você não sabe qual é o codec e simplesmente quer copiar o existente no arquivo original, use a opção copy em lugar do nome do codec.

-newsubtitle: adiciona uma legenda inteiramente nova para seu arquivo de saída!! Pode ser esta sua opção!!

Como vou saber onde está a minha legenda?? Bom, é preciso primeiro inspecionar um arquivo, conforme demonstrado no item acima, e escolher a stream correta. Para montar seu arquivo final com streams de diversos arquivos, inclusive de legenda, siga a orientação abaixo...


  • Como montar um arquivo de partes de outros?
Simples e fácil: basta identificar as streams de cada arquivo fonte e usar a opção -map. Exemplo:

ffmpeg -i filme.vob -i audio.wav -map 0:0 -map 1:0 etc...

Este trecho de comando indica 2 arquivos de entrada, o arquivo "0" e o "1", e indica, pela opção map, que deve compor o arquivo de saída com a primeira stream do primeiro arquivo "0" e a primeira stream do arquivo "1".


Diversas outras opções e exemplos presentes na página de manual e no FAQ bem documentado do projeto!! Um tutorial avançado e detalhado encontra-se aqui.
O ffmpeg é livre e gratuito, seguro e poderoso!! Boa sorte!!

(Gostou?? Detestou?? COMENTE!!!)