Estoy trabajando en un convertidor de lienzo a video. Los fotogramas se generan a partir de un lienzo animado con .toDataURL() , luego se envían a una función en la nube para convertirlos en un archivo de video con FFMPEG. Dado que las solicitudes http tienen sus límites, en lugar de enviarlas directamente en un cuerpo de solicitud, primero subo marcos a Firebase Storage y luego los descargo en mi Cloud Function. Con FPS configurado en 25 y una duración de video de 1 minuto, obtengo 1.5K cuadros que deben enviarse a Firebase Storage. Su límite diario gratuito es de 20 000 cargas, que puedo alcanzar bastante rápido si tengo un video más largo o varias conversiones de lienzo cada día. Mi idea era concatenar esas URL de datos en un solo archivo de texto, subirlo a Firebase Storage y luego dividirlo en archivos individuales en mi Cloud Function.
const frames = []; for (let index = 0; index < maxFrames; index++) { ... frames.push(canvas.toDataURL('image/jpeg', .75)); } const blob = new Blob([frames.join('\n')], { type: 'text/plain' }); Todo funciona a la perfección con videos cortos, sin embargo, los videos más largos obtienen este Uncaught RangeError: Invalid string length que básicamente significa que la cadena resultante es demasiado larga. ¿Alguna idea o solución?