Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

193
Visualizações
Problemas al pasar canvas.toDataURL() a ffmpeg.wasm

Estoy tratando de configurar la conversión de animación de lienzo a video con FFMPEG.wasm. La idea es generar un montón de imágenes con canvas.toDataURL() y luego enviarlas a un servidor Node para generar un video. Todo funciona perfectamente con las imágenes precargadas que extraigo del directorio público para realizar pruebas; sin embargo, cuando intento enviar un montón (o una sola) de imágenes creadas con canvas.toDataURL() el siguiente error:

 RuntimeError: abort(Error: ENAMETOOLONG: name too long, open 'data:image/png;base64, ...

Traté de reemplazar canvas.toDataURL() con canvas.getContext('2d').getImageData() , sin embargo, esto tampoco ayudó. A continuación se muestra un código de corte que estoy usando:

frente:

 async function fetchData() { const response = await fetch('/api/record-canvas', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ image: here_goes_the_canvas_data }), }); }

back-end:

 await ffmpeg.load(); ffmpeg.FS('writeFile', `001.png`, await fetchFile(image)); await ffmpeg.run('-loop', '1', '-i', '001.png', '-c:v', 'libx264', '-t', '30', '-pix_fmt', 'yuv420p', 'out.mp4'); await fs.promises.writeFile('out.mp4', ffmpeg.FS('readFile', 'out.mp4'));

El código anterior está simplificado para hacer un video de una sola imagen repitiéndola durante 30 segundos. Una vez más, funciona muy bien con la imagen precargada, pero no con los datos del lienzo.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Para aquellos que se encontraron con el mismo problema, esta es la solución que se me ocurrió:

  1. dataURL debe ser jpeg (por ejemplo, canvas.toDataURL('image/jpeg') ).

  2. Debe transformarlo en un valor de búfer (por ejemplo Buffer.from(image.split(',')[1], 'base64') antes de pasar a la función fetchFile de FFMPEG.

  3. Las respuestas son largas y difíciles de entender.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda