Gravar e converter screencasts em Linux
Mais uma vez venho falar deste campo ainda “verde” em Linux, a edição/gravação de vÃdeo.
Existem alguns utilitários interessantes para gravação de screencasts, sendo os mais “usáveis” o Istanbul, o recordMyDesktop, o Xvidcap e o Wink.
O Wink tem a abordagem mais completa, com possibilidade total de edição e customização dos vÃdeos, mas peca por ser altamente instável e muito, muito pesado (com uma gravação de 3 ou 4 minutos torna-se numa bomba relógio). Este programa produz ficheiros em formato swf (flash).
O Istanbul tem do seu lado a facilidade de utilização e simplicidade. Carrega-se no botão, escolhe-se a região a gravar, e está a andar. Como aspecto negativo tem precisamente a quase total inexistência de opções e o facto de produzir um output de vÃdeo com qualidade muito fraca. De notar que usa o codec Ogg.
O Xvidcap é o mais completo de todos, com múltiplas opções, possibilidade de gravar som, etc. O output normal é, naturalmente, em formato Xvid. Tem como pontos negativos alguma instabilidade e o facto de produzir vÃdeos muito grandes.
Resta aquele que eu acho o melhor de todos, o recordMyDesktop. A interface gráfica é muito simples, muito prática, permite também escolher a área do monitor que queremos gravar, ou uma janela especÃfica, suporta gravação de som, e o output é também em formato Ogg, mas com qualidade (e tamanho, obviamente) superiror ao Istanbul. É neste momento o programa que uso.
Para quem quiser editar os vÃdeos (cortar partes, etc) com o avidemux, não poderá importar os vÃdeos no formato Ogg directamente, mas a solução é simples.
Instalam o pacote mencoder, abrem uma consola, e na directoria onde têm o vÃdeo em formato ogg (vamos supor que se chama out.ogg) inserem o comando:
mencoder out.ogg -ovc xvid -xvidencopts fixed_quant=5 -o video_final.avi
Com este comando o vÃdeo vai ser codificado para o formato Xvid, e não demorará mais que 1 minuto, para um vÃdeo de 5 ou 6 megas (pelo menos no meu laptop da pré história). Quem gravar o vÃdeo com som, convém também codificar o som:
mencoder out.ogg -ovc xvid -xvidencopts fixed_quant=5 -oac mp3lame -lameopts br=128 -o video_final.avi
Neste caso, codifica o vÃdeo para Xvid e o som para mp3, com bitrate de 128Kb.
Alguma dúvida, já sabem onde apitar.
Edit: seguindo a dica do Avi, pode-se utilizar o formato H.264 para a codificação, que produz um vÃdeo com melhor qualidade e de menor dimensão. Com o mencoder será:
mencoder out.ogg -ovc x264 -o video_final.avi








Eu uso uma versão modificada do ffmpeg para gravar screencasts e posso dizer que funciona bastante bem.
Como uso uma resolução de 1280×1024, tenho que fazer screencasts a 2fps, se não parece que se perderam mais de metade dos frames pelo caminho. Não se compara a nenhum programa do género para Windows, mas o que interessa é que está lá.
Nunca fiz isso, mas o man do ffmpeg diz que esse programa grava movimentos da tela.
E sobre codecs, Xvid ainda é bom mas 1/2 ultrapassado. MPEG-4 AVC/H.264 é o melhor hoje em dia. E ffmpeg pode capturar e gerar video nesse formato.
O desafio aqui é comprimir tão ou mais rápido que o mundo real.
@Avi: muito obrigado pela dica do H.264. É mesmo muito bom. Vou adicionar ao artigo.
Rui, Ogg não é um codec, e sim um container.
A suite de multimÃdia free-open-source da Xiph.org tem Vorbis como formato de som (absurdamente bom, mas pouco usado), Theora como formato de video (péssimo, obsoleto, de qualidade comparável ao MPEG-1) e OGG como container. Há tb o FLAC que é compressão de audio lossless.
Então, um arquivo de música .ogg é na verdade um envelope que contém só a trilha de audio. Vc poderia incluir vÃdeo no arquivo, ou a letra da música, e ainda chama-lo de OGG.
AVI, um container, foi inventado pela Microsoft, é muito popular, mas tem fama de ter overhead enorme. Li em algum lugar que o overhead de OGG é enorme tb.
Os melhores containers hoje em dia são:
- MP4: padrão ISO, suporta multiplas trilhas de audio, video, capÃtulos, legendas, e meta informações, mas só nos formatos MPEG-4 (AAC, MP3, MPEG-4 ASP/H.264, MPEG-4 ASP/Xvid/DivX, Timed text) e todo DVD player novo é capaz de desenvelopar seu conteúdo (o player ainda vai precisar saber interpretar o conteúdo, ter o codec). O suporte de criação de arquivos nesse formato em Linux é bomzinho, mas ainda meio instável. O pacote GPAC faz o trabalho. Uma das partes da especificação MPEG-4 tb diz respeito a animações como as de Flash, integrando com (atenção, vc vai gostar) SVG (lembra do Inkscape ?). E MP4 é o container para isso.
- Matroska: pouco popular, suporta tudo que o MP4 suporta, e pode envelopar qualquer conteúdo: AC3, MP3, FLAC, H.264, outros videos MPEG-4 como o Xvid, legendas em vários formatos, menus interativos como os de DVD, capÃtulos, etc). É free e gratuito, e seu suporte em Linux (atráves do pacote mkvtoolnix) é bem melhor que o MP4. Nenhum DVD player hoje consegue nativamente desenvelopar um MKV.
As operações que vc mostrou, recodificam o vÃdeo, e esse processo perde qualidade. Você pode simplesmente extrair as trilhas de mÃdia e reenvelopa-las sem perda (se o container suportar o tipo do codec), mais ou menos assim:
bash$ ffmpeg -i source.ogg -acodec copy -vcodec copy target.avi
Eu tenho preferido MP4 e MKV como containers, H.264 como video, e AAC ou MP3 como audio.
Eu faço backups dos meus DVDs nesses formatos, e se não quero usar a legenda do DVD (que em DVD é uma seqüencia de imagens, e não texto), baixo o SRT de opensubtitles.org e embarco no MKV ou MP4. Fica perfeito.
Meu comentário ficou maior que seu artigo. Desculpe-me.