Transloadit anuncia suporte a WebM com marca-d’água
Hoje, anunciamos oficialmente o suporte ao formato de vídeo WebM do Google.
Tivemos que superar vários obstáculos para que isso acontecesse. Gostaria de compartilhar com você algumas das nossas experiências.
Nossa compilação personalizada do FFmpeg era um fork do FFmpeg SoC. Embora estivesse defasada em algumas versões, ela era rica em recursos e, vale destacar, oferecia suporte à aplicação de marca-d’água (English). Infelizmente, o fork SoC não era mantido, e o trabalho moderno com WebM era feito no “head” do FFmpeg, o que significava que nossa versão nunca daria suporte à libvpx (o codec de vídeo do WebM).
A aplicação de marca-d’água simplesmente não funcionava com o novo FFmpeg, e o WebM não funcionava com o “nosso antigo” FFmpeg. Não tínhamos outra escolha a não ser encontrar uma solução, porque simplesmente abandonar esse recurso tão querido definitivamente não era uma opção para nós.
Restaram, então, duas opções: executar compilações separadas do FFmpeg para tarefas diferentes (ai!) ou conseguir alguém para portar a aplicação de marca-d’água (o vfilter movie source) de volta para o “head” do FFmpeg.
Decidimos entrar em contato com um dos desenvolvedores do FFmpeg e trabalhamos juntos para implementar a correção necessária. Depois disso, o FFmpeg passou a ser capaz de aplicar marca-d’água em arquivos WebM, e já tínhamos dado um enorme passo à frente.
Mas ainda não tínhamos cruzado a linha de chegada.
A atualização de versão do FFmpeg significou que tivemos que atualizar junto a maior parte do nosso stack (pense em libfaac, x264 etc.). Nós adoramos o Ubuntu e o APT, mas, a essa altura (apesar de pinning, pacotes personalizados etc.), ele estava nos trazendo mais problemas do que resolvia. Nossos requisitos de versionamento e compilação eram simplesmente específicos demais. Como uma dependência sempre levava a outra, concluímos que o controle total do stack era a única opção viável para nós. Então, passamos a compilar versões específicas de ExifTool, ImageMagick, Theora, FAAC, JPEG, Ogg, TIFF, FAAD, LAME, opencore-amr, Vorbis, FFmpeg, live_segmenter, PNG, VPX, Ghostscript, MPlayer, SDL e x264. No início foi doloroso, mas, com scripts de compilação automatizados e nossa enorme suíte de testes (que compara os resultados visualmente), agora conseguimos identificar com precisão e corrigir problemas de codificação usando até a menor atualização de versão de qualquer biblioteca de mídia subjacente. Conseguimos fazer isso de forma rápida, segura, com relativa facilidade e sem esbarrar em conflitos de empacotamento. Além disso, podemos até fazer upgrade entre distros sem afetar nossa capacidade de codificação.
Então, mesmo que tenha levado um pouco mais de tempo do que esperávamos, agora finalmente podemos anunciar, com muita alegria, o suporte a WebM com marca-d’água, e ainda temos uma base melhor como resultado. E já mencionei que não quebramos a instalação de nenhum cliente no processo? Vida longa à cobertura de testes!
