O FFmpeg é uma daquelas coisas fantásticas que o mundo do software livre proporciona. Está por aí desde o ano 2.000, firme e forte ainda hoje, e é muito maior do que a maioria das pessoas conhecem.

O projeto como um todo é composto por diversas bibliotecas e aplicativos, tornando-o efetivamente o mais completo framework para multimídia conhecido pela civilização. O FFmpeg decodifica, codifica, transforma, multiplexa, demultiplexa, gera fluxos, filtra e toca 'praticamente qualquer coisa que humanos e máquinas tenham criado'.

Esse prestígio todo tem um preço: o FFmpeg pode ser tudo, menos simples de usar. O usuário diletante pode sofrer bastante para realizar tarefas simples com converter um vídeo para assistir em casa. Eu que nasci e cresci dentro de uma emissora de rádio e TV e passei boa parte da vida enfiado na engenharia de broadcast, ainda recorro (e continuarei recorrendo) à extensa e excelente documentação do FFmpeg para as tarefas mais complicadas.

Mas é a este lugar que o FFmpeg pertence. Ele é um backend. E um puta backend, diga-se!

Em nossa vida cotidiana as coisas não podem ser complicadas. Apresento o traGtor.

O traGtor é um interface gráfica (GUI) para o FFmpeg. Ele é escrito por um alemão gente finíssima chamado Markus Schmidt. E o Markus é um cara caprichoso. A interface do traGtor é primorosa e tira da frente os complicados argumentos da linha de comando do FFmpeg, convertendo-os em parâmetros na janelinha do traGtor, que é assim:

Interface gráfica do traGtor, mostrando a aba 'Formato'.

O fluxo de trabalho implementado no traGtor não poderia ser mais óbvio dado os paradigmas de interface atuais. Aba por aba, é assim o seu jeitão:

  1. Fonte: escolha um ou mais arquivos multimídia e os streams (canais) de cada arquivo de áudio e/ou vídeo para a conversão.
  2. Formato: defina os parâmetros de conversão (a tela mostrada acima);
  3. Meta: informe os metadados a serem usados para o arquivo de saída (título, autor, essas coisas);
  4. Prosseguir: onde o trabalho duro é feito. Defina a pasta, o contêiner (formato) e o nome do arquivo de saída e clique em 'Mostre-me a luz!' (é um fanfarrão esse Markus!) para que o FFmpeg faça o que precisa ser feito;
  5. Configurações: aquilo que você ajusta uma vez e esquece.

Algumas observações importantes:

  1. Na aba 'Fonte', o botão 'Único/Múltiplo' serve para você trabalhar com uma fonte apenas ou múltiplas fontes, mas sempre para um único arquivo de saída. Por exemplo, se você quer gerar um vídeo com uma imagem JPG e uma trilha de áudio, ou inserir uma nova trilha de áudio em um vídeo que já possui áudio ou não, gerar um vídeo Matroska com várias trilhas de áudio para idiomas diferentes;
  2. A aba 'Formato' e 'Prosseguir' estão intimamente relacionadas, mas isso não é óbvio na interface do traGtor. Por exemplo, se você definir o contêiner mp4 - MP4 (MPEG-4 Part 14) para o arquivo de saída, então você precisa usar codecs compatíveis com esse contêiner (ex.: libx264 e libfaac). Se você não tomar cuidado com isso, o FFmpeg responderá com um erro que é difícil de traduzir para o mortal comum;
  3. Na aba 'Configurações', se o seu FFmpeg é relativamente novo (>2, veja com ffmpeg -version), defina Video Filter (x:y:w:h), -b:v / -b:a (new) e : para 'opções de cortar', 'taxa' e 'fluxo separador', respectivamente. Se você não fizer isso, também dá pau;
  4. Na aba 'Prosseguir', depois de clicar em 'Mostre-me a luz!' você pode simplesmente clicar em 'Aplicar' e o traGtor e o FFmpeg vão fazer o que é preciso. Mas se você estiver se sentindo aventureiro, clique na setinha ao lado de Command Line e o traGtor mostrará a linha de comando completa que será enviada ao FFmpeg. Você pode copiar essa linha para colar e rodar você mesmo no terminal.

O site do traGtor contém uma documentação mais detalhada de todos os seus recursos. Recomendo a leitura.

Agora a parte que interessa aos Slackers: eu criei e mantenho o pacote do traGtor para o Slackware. No meu repositório do GitHub tem um pacote pronto pra instalar com o installpkg e tem também o SlackBuild caso você não confie em mim (e não deve mesmo) e queria fazer o seu próprio pacote a partir dos fontes do traGtor. O pacote pronto é multiplataforma e deve rodar tanto em x86 (32-bit) quanto em x86_64 (64-bit). Como o meu Slackware é 64, current e multilib, eu sei que nele meus pacotes funcionam. Sua experiência pode variar.

Como o traGtor é feito em Python e GTK-Engine, você precisa verificar se o seu Slackware tem os pacotes python, gtk+, gtk+2, gtk+3 e pygtk instalados antes de rodá-lo. Os pacotes libid3tag e, óbvio, ffmpeg também são necessários. Para este último recomendo usar o FFmpeg restrito do AlienBOB, que já inclui os formatos e codecs que enfrentam lengas-lengas de patentes estúpidas.

E daí você pergunta: 'Por que não usar o HandBrake, catzo?!' Simples: porque eu não quero, oras! ;)