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

5 Comentarios

  1. Bruno // May 28th, 2007
    Mozilla Firefox 2.0.0.3 Ubuntu Linux

    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á.

  2. Avi Alkalay // May 28th, 2007
    Mozilla Firefox 2.0.0.4 Windows XP

    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.

  3. Boss // May 29th, 2007
    Epiphany 2.18 Ubuntu Linux

    @Avi: muito obrigado pela dica do H.264. É mesmo muito bom. Vou adicionar ao artigo.

  4. Avi Alkalay // May 30th, 2007
    Mozilla Firefox 2.0.0.4 Windows XP

    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.

  5. Avi Alkalay // May 30th, 2007
    Mozilla Firefox 2.0.0.4 Windows XP

    Meu comentário ficou maior que seu artigo. Desculpe-me.