Encoding en tiempo real: más de 150 veces más rápido
Nota histórica sobre la función: el encoding en tiempo real se discontinuó en mayo de 2012. La función y la configuración que se describen a continuación corresponden al lanzamiento original de 2010, no a una opción actual.
Hoy nos complace anunciar una gran novedad: el encoding en tiempo real.
El encoding en tiempo real permite que tus videos se codifiquen mientras todavía se están subiendo. Como nuestros servidores pueden codificar archivos de video mucho más rápido de lo que la mayoría de tus usuarios puede subirlos, ya no tendrán que esperar a que el proceso de encoding termine después de subir un video. Como puedes ver en el screencast de arriba, esto equivale a un aumento de 150 veces en la velocidad de encoding.
Los clientes actuales pueden habilitar esta función simplemente añadiendo
"realtime": true a su Step de encoding
de video. También hemos actualizado la documentación de esta
función.
Si eres nuevo en Transloadit, regístrate para probarlo.
Detalles técnicos
Desde el punto de vista técnico, el encoding en tiempo real funciona canalizando el flujo de subida del video hacia FFmpeg a través de la entrada estándar.
Aunque en teoría suena fácil, es bastante difícil de lograr en la mayoría de los stacks. Por suerte, nuestro sistema está construido sobre Node.js, que está muy bien preparado para este tipo de redirección de flujos.
Para conseguirlo, usamos nuestro parser de subida de archivos hecho a medida, que escribe el archivo subido en disco y nos entrega eventos de progreso sobre la marcha. Cada evento de progreso envía un nuevo fragmento del video a FFmpeg. Sin embargo, si FFmpeg no puede seguir el ritmo, esperamos a que el flujo de entrada estándar se vacíe. De esta forma, nunca puede producirse ningún tipo de acumulación en memoria.
Gestionar los errores también es importante. Si FFmpeg nos devuelve un error durante el encoding en tiempo real, simplemente lo abandonamos y recurrimos al encoding normal.
En resumen, así es como funciona. Si te interesan más detalles, deja un comentario. Si ya has invertido mucho en tu propio stack de video, también ofrecemos consultoría para llevar esta tecnología a tu plataforma. Simplemente contáctanos.
Qué sigue
Este es solo uno de los pasos para llevar la funcionalidad de streaming a todas las partes de nuestro servicio. Lo siguiente que debemos abordar es transmitir a Amazon S3 los videos codificados en tiempo real.
Otro desafío está en ciertos archivos "mov" que tienen sus metadatos al final del archivo.
Por suerte, entusiasmamos con esto a Daniel G. Taylor, lo que lo
llevó a portar su versión en python de
qtfaststart a JavaScript. Por eso confiamos en
que todo esto quedará resuelto con la próxima actualización de nuestro SDK de jQuery.
También queremos contarte que Daniel está buscando trabajo remoto en este momento, así que deberías contactarlo si quieres sumar a un hacker muy inteligente a tu equipo.
Reflexiones finales
Nuestra misión es mejorar la subida de archivos en la web, así que cuéntanos qué otros aspectos de ella te están arruinando el día: ¡estaremos encantados de construir la solución!
Créditos
El video de ejemplo que se sube en el screencast fue producido por nuestros amigos de némata.
