El problema requiere implementar una arquitectura compleja de un servicio dedicado para la transcodificación de archivos de video en paralelo. La gran idea de implementar el servicio para recibir primero el archivo cargado para procesar, luego comenzará la transcodificación concurrente del archivo de video cargado en el formato / tamaño deseado y, cuando termine, devolverá la respuesta de las URL públicas del archivo transcodificado en JSON o formatos consumibles Ajax similares. . El mejor resultado podría lograrse si el servicio se aloja en otro dominio / host (o un conjunto de, dependiendo de la frecuencia de trabajo esperada) con recursos informáticos adecuados, es decir, CPU y memoria, y accede a través de CORS desde la carga del archivo (envío del trabajo ) dominios. De esa manera, el resto de la aplicación de usuario final no se verá afectada. Además, los archivos transcodificados podrían cargarse directamente en almacenes en la nube como cubos de Amazon que evitarán que las máquinas donde se aloja el servicio de transcodificación se llenen de espacio de almacenamiento y la solución sería más escalable.
Ahora centrémonos en los instrumentos tecnológicos que elegiría para implementar dicho servicio:
1. La parte de carga de archivos en HTML se implementaría utilizando el complemento de carga de archivos jQuery [https://github.com/blueimp/jQuer… que ha incorporado soporte para CORS y navegadores heredados.
2. El servicio se implementaría usando nodejs debido a que es soporte nativo para el manejo de tareas asíncronas. De hecho, recomendaré tomar el servicio de nodo de los ejemplos de jQuery File Upload Plugin y modificarlo / modificarlo en consecuencia.
3. A continuación, utilizaría algunas bibliotecas de nodos (empaquetadas y disponibles como módulos) como async (para el procesamiento paralelo de trabajos), node-fluent-ffmpeg (para facilitar el acceso a ffmpeg desde el nodo JavaScript) y knox (para cargar fácilmente al bucket s3 tan pronto como el proceso sea realizado por un proceso). Si desea seguir este enfoque, encontrará todas estas bibliotecas en el registro npm y podrá instalarlas con los comandos “npm install” con su nombre.
- ¿Vale la pena Netflix en India?
- Cómo hacer una aplicación de Android de transmisión en vivo
- ¿Qué tecnologías se utilizan al crear una aplicación y un sitio web de transmisión en vivo?
- ¿Qué plataforma de transmisión en vivo admite la transmisión P2P?
- ¿Qué es la videoconferencia?
Descargo de responsabilidad: seguramente creo que la implementación seguramente se puede hacer con otros idiomas como go o similar, pero como no tengo experiencia con ellos, no puedo señalar los recursos correctos, pero la idea general debería ser la misma. Además, creo que esto no debe intentarse con lenguajes de script como PHP que no tienen compatibilidad integrada para concurrencia o al menos hilos.