Quiero permitir que los usuarios de mi aplicación web carguen videos con una duración máxima de 10 segundos y recortados/escalados a una resolución determinada. Allí, los usuarios deberían poder recortar el video seleccionado a 10 segundos antes de cargarlo con un editor simple.
¿Hay alguna biblioteca o ejemplos que permitan la edición de video del lado del cliente para reducir la duración del video y recortarlo antes de cargarlo en un servidor? Encontré algunos enfoques de lienzo para filtros, fotogramas de video individuales y exportar a videos webM, pero nada que lo reúna todo. Entonces, ¿alguien ha hecho eso antes?
Agradezco cualquier idea :)
Típicamente, el procesamiento de video es una cosa del servidor porque es más fácil encontrar y ejecutar bibliotecas complejas (a menudo compiladas) (como ffmpeg) allí que en el navegador y puede causar menos problemas de rendimiento para el usuario final. De todos modos creo que hay dos opciones:
El primer enfoque supone que prepara el "editor" del lado del cliente basado en un lienzo que simula la edición de video. Después de la configuración de todos los filtros, recortes, etc., el cliente puede enviar el archivo de video original y la configuración de procesamiento de video que se usaría en un servidor para hacer lo mismo.
Depende del idioma que prefiera en la implementación del lado del back-end puede ser diferente, por lo que no le doy un fragmento de código listo.
Por supuesto, puede cambiar el orden de las tareas y cargar el archivo original en primer lugar, luego simular el procesamiento de video en el lado del cliente y, después de todo, enviar la configuración mencionada al backend y procesar el video.
Si realmente necesita mantener todo en el lado del cliente, puede probar con puertos WebAssembly de bibliotecas como https://github.com/ffmpegwasm/ffmpeg.wasm y enviar un archivo de video ya procesado al servidor.