Transmageddon and Arista pursue simple transcoding
Autor original: Nathan Willis
Publicado originalmente no: lwn.net
Tradução: Roberto Bechtlufft
O Transmageddon de Christian Schaller e o Arista de Daniel Taylor são duas ferramentas fáceis de usar para conversão de vídeos no GNOME, mas elas têm mais em comum do que apenas a visão de uma maneira simples de converter arquivos. Em vez de competir um com o outro (ou de unir os dois projetos), os dois desenvolvedores estão colaborando no meio do caminho: eles compartilham informações e usam os objetivos parecidos de seus projetos para fortalecer o framework multimídia GStreamer, do qual as duas bases de código dependem.
Schaller já contribui para o GStreamer há tempos; ele começou o Transmageddon em março de 2009 por vários motivos. Em primeiro lugar, como um exercício pessoal de desenvolvimento em Python, mas também como uma tentativa de encontrar áreas que pudessem ser aperfeiçoadas por desenvolvedores de aplicativos que usem o GStreamer, e para acabar com algo que o incomodava: a falta de um conversor de vídeo fácil de usar baseado no GStreamer. Taylor também se sentia incomodado com esse vazio, e isso o levou a começar seu trabalho com o Arista. O programa era apenas um projeto pessoal em 2008 e teve sua primeira versão pública em abril de 2009. Taylor descobriu o Transmageddon pelo blog de Schaller, e os dois começaram a discutir sobre qual seria a melhor maneira de ir adiante.
Motivos não faltam…
O fato de dois desenvolvedores terem decidido, independente um do outro, escrever aplicativos com interfaces gráficas simples para a conversão de vídeos não é tão surpreendente assim. A demanda por conversão de vídeos aumenta conforme os dispositivos portáteis com hardware compatível vão surgindo e a distribuição de conteúdo digital dispara. Codificadores de linha de comando, como o FFmpeg e o MEncoder podem cuidar de quase todos os tipos de conversão, mas exigem que o usuário saiba exatamente quais opções ativar e, na maioria dos casos, exigem que cada opção do codec seja especificada, do contrário a conversão não funciona. Isso leva a comandos obtusos (e extremamente longos) difíceis de memorizar e ainda mais difíceis de depurar. Vários aplicativos gráficos de conversão apareceram nos desktops Linux nos últimos anos – Thoggen, OGMRip, K9Copy, AcidRip, dvd::rip, HandBrake e WinFF, só para citar alguns – mas como Taylor e Schaller observam, todos eles têm os seus problemas.
Alguns, como o Thoggen, o OGMRip e o Oggconvert estão limitados a codecs específicos de saída. Outros, como o dvd::rip, tentam oferecer todas as opções possíveis, tornando-se muito difíceis para o usuário casual. “Há dúzias de interfaces gráficas que constituem basicamente as mesmas opções confusas, só que com uma roupagem gráfica agradável. Para mim, isso não ajuda em nada”, observa Taylor. “A ideia do Arista não é a de agradar a todos os públicos, mas sim a de ser uma maneira simples de converter mídia para vários dispositivos. É isso.”
Além disso, muitos dos conversores atuais são interfaces isoladas que não oferecem muita integração com o desktop. “A maioria das interfaces gráficas que eu conheço usam o FFmpeg (libavformat, libavcodec etc) diretamente”, conta Taylor. “Eu quero usar as tecnologias do GNOME para fazer um aplicativo que seja realmente do GNOME, o que significa que estou usando GTK+, GStreamer, Gconf, GIO etc. O Arista tem que ser parte do desktop.” Taylor disse ter alguns recursos em mente para as próximas versões (como suporte a legendas e menus de DVD), mas espera acrescentar uma interface para o D-Bus que permitirá que outros aplicativos controlem o Arista.
Para Schaller, fazer uma interface gráfica para conversão de vídeo também é uma maneira de testar o GStreamer. Ele mencionou a possibilidade em um post de 2008, especulando que um aplicativo de escala tão pequena teria mais utilidade para “testar e garantir que os muxers e codificadores continuam funcionando” do que uma ferramenta mais complexa como um reprodutor ou um editor de vídeo. Até agora, diz ele, alguns bugs foram descobertos, mas os benefícios mais importantes são os testes de recursos do GStreamer que não haviam sido usados antes, como as predefinições de propriedades, que permitem aos aplicativos definir grupos de configurações individuais para cada codificador pelo nome (seja para perfis de codecs, como H.264 básico, ou para dispositivos de hardware específicos).
Os benefícios vão além do código existente, chegando a outros aplicativos, como explica Schaller:
Outra parte do que estamos fazendo é tentar entender que tipos de APIs de alto nível para codificação e conversão podem ser úteis para os desenvolvedores de aplicativos. … Um dos objetivos do GStreamer é facilitar ao máximo as coisas para os desenvolvedores, portanto empacotar alguns passos que estamos dando em nossos aplicativos em APIs de auxílio em C provavelmente é uma boa ideia.
Colaboração e divergência
Depois que Schaller e Taylor estabeleceram contato, eles decidiram manter uma comunicação constante e compartilhar código sempre que possível, mas levando seus aplicativos em rumos levemente diferentes. Taylor prefere uma abordagem mais conservadora e voltada para o usuário, certificando-se de que o Arista sempre possa rodar na versão atual do Ubuntu. Já Schaller prefere acompanhar mais de perto o desenvolvimento do GStreamer, apoiando-se em recursos dele que ainda não estejam disponíveis nas distribuições. Dessa maneira, sempre haverá o conversor Arista disponível, podendo ser usado por usuários não técnicos, enquanto o Transmageddon pode servir de laboratório para novos recursos.
A colaboração entre os dois projetos já está rendendo bons frutos. Schaller diz ter incorporado o suporte a predefinições do Arista ao Transmageddon e está levando o recurso além usando algumas alterações novíssimas da versão de desenvolvimento do GStreamer. Assim que as distribuições Linux começarem a distribuir a próxima atualização do GStreamer, o plano é incorporar o suporte melhorado às predefinições do Transmageddon de volta no Arista.
Os projetos também estão ajudando o GStreamer. Eles também estão acumulando uma coleção de predefinições que serão valiosas para outros aplicativos, descobriram bugs no sistema de capacidades e mostraram que o GStreamer precisa de um codificador e de um decodificador melhores para o formato de áudio AMR (Adaptative Multi-Rate).
Schaller disse que também pretende transformar as notas que vem tomando durante o processo de desenvolvimento em um guia para os interessados:
Decidi tentar usar minha experiência com o Transmageddon para escrever uma série de tutoriais para o desenvolvimento de aplicativos em Python com o GStreamer. Acho que aplicativos como o PiTiVi, o Jokosher, o Arista e o Transmageddon são a prova de que é possível desenvolver aplicativos bastante complexos facilmente usando Python, nós só precisamos de mais tutoriais básicos que sirvam como o ponto de entrada de que os desenvolvedores do Python precisam para começar a mexer com o GStreamer.
Test drive
Os dois aplicativos já podem ser baixados, usados e comparados. O Transmageddon está disponível no site de Schaller em um pacote com o código fonte e em formato RPM. A versão mais recente é a 0.10, de 20 de maio de 2009. Só que ela precisa do Python e da versão de desenvolvimento do GStreamer, o que a põe fora do alcance da maioria dos usuários.
O Arista está disponível para download no site Launchpad do projeto. A versão mais recente é a 0.9.1, de 3 de maio. Um pacote com o código fonte é oferecido, bem como uma versão para o AUR (o repositório da comunidade de usuários do ArchLinux). Quem estiver rodando o Ubuntu 9.04 pode adicionar o PPA de Taylor à lista de repositórios do APT e instalar o aplicativo pelo gerenciador de pacotes. A versão 0.9.1 também precisa do Python e da versão 0.10 do GStreamer, que pode ser encontrada facilmente em muitas distros.
O Arista permite ao usuário escolher como origem arquivos de vídeo de qualquer codificação e tipo que possa ser lido pelo GStreamer (incluindo conteúdo de DVD) e escolher um formato de saída – incluindo predefinições configuradas para uma vasta gama de dispositivos de hardware portáteis. Além disso, a interface não traz muito além de uma barra de progresso estimando o tempo restante para o trabalho de conversão e de uma janela para visualização a dois quadros por segundo, útil para monitorar a saída.
Outros conversores oferecem muito mais opções, mas são bem mais complexos. Na maioria das vezes, os usuários precisam conhecer os codecs de áudio e vídeo, a altura e a largura de saída, a taxa de quadros ou a taxa de bits e muitas outras opções. O Arista e o Transmageddon simplificam dramaticamente o processo abstraindo todos esses detalhes usando as predefinições dos dispositivos – as configurações corretas estão presentes, mas a confusão e as chances de erro humano não. Vai ser interessante acompanhar a evolução desses projetos nos próximos meses; a ideia de um conversor de vídeo fácil de usar é atraente, mas o que pode acontecer quando essa funcionalidade for disponibilizada a outros aplicativos pelo D-BUS é ainda mais atraente.
Créditos a Nathan Willis – lwn.net
Tradução por Roberto Bechtlufft <robertobech at gmail.com>