Transloadit anuncia soporte para WebM con marcas de agua
Hoy anunciamos oficialmente el soporte para el formato de video WebM de Google.
Tuvimos que superar bastantes obstáculos para lograrlo. Me gustaría compartir contigo algunas de nuestras experiencias.
Nuestra compilación personalizada de FFmpeg solía ser un fork de FFmpeg SoC. Aunque estaba un par de versiones atrasada, era rica en funciones y, en particular, soportaba marcas de agua (English). Lamentablemente, el fork de SoC no recibía mantenimiento y el trabajo moderno sobre WebM se hacía en el «head» de FFmpeg, lo que significaba que nuestra versión nunca iba a soportar libvpx (códec de video WebM).
Las marcas de agua simplemente no funcionaban con el nuevo FFmpeg, y WebM no funcionaba con «nuestro viejo» FFmpeg. No nos quedó más remedio que encontrar una solución para esto, porque eliminar sin más esta querida función definitivamente no era una opción para nosotros.
Así que nos quedaban dos opciones: ejecutar compilaciones separadas de FFmpeg para distintas tareas (ay), o conseguir que alguien portara las marcas de agua (movie source vfilter) de vuelta al «head» de FFmpeg.
Decidimos ponernos en contacto con uno de los desarrolladores de FFmpeg y trabajamos juntos para implementar la corrección necesaria. Después de eso, FFmpeg era capaz de aplicar marcas de agua a archivos WebM, y ya habíamos avanzado muchísimo.
Pero todavía no habíamos llegado a la meta.
La subida de versión de FFmpeg implicaba que teníamos que actualizar con ella la mayor parte de nuestro stack (piensa en libfaac, x264, etc.). Ahora bien, nos encantan Ubuntu y APT, pero a esas alturas (a pesar del pinning, los paquetes personalizados, etc.) nos traían más problemas de los que resolvían. Nuestros requisitos de versionado y compilación eran simplemente demasiado específicos. Después de que una dependencia llevara a otra una y otra vez, llegamos a la conclusión de que el control total del stack era la única opción viable para nosotros. Así que empezamos a compilar versiones específicas de ExifTool, ImageMagick, Theora, FAAC, JPEG, Ogg, TIFF, FAAD, LAME, opencore-amr, Vorbis, FFmpeg, live_segmenter, PNG, VPX, Ghostscript, MPlayer, SDL y x264. Al principio fue doloroso, pero con scripts de compilación automatizados y nuestro enorme conjunto de pruebas (que compara los resultados visualmente), ahora podemos localizar y corregir problemas de encoding con la más mínima subida de versión de cualquier biblioteca multimedia subyacente. Podemos hacerlo rápido, de forma segura, con relativa facilidad y sin toparnos con conflictos de empaquetado. Es más, incluso podemos actualizar entre distros sin afectar nuestras capacidades de encoding.
Así que, aunque nos tomó un poco más de lo que esperábamos, por fin podemos anunciar, felizmente, el soporte para WebM con marcas de agua, y además tenemos una mejor base que mostrar. Y, ¿mencioné que no rompimos la instalación de ningún cliente en el proceso? ¡Viva la cobertura de pruebas!
