es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

“fluent-ffmpeg” en node.js para agregar audio de fondo a un video.

Escenario: Tengo un video mp4 de 30 segundos sin audio de fondo. Ahora quiero agregar 3 audios de fondo (mp3) a este video, es decir, – [0-10s] 1er Audio, [10-20s] 2do Audio, y luego [20-30s] 3er Audio utilizando fluent-ffmpeg. He estado buscando mucho para este escenario, pero no encuentro la solución correcta. Cualquier ayuda en este sentido es muy apreciada.

Nota: Cada vez que busco, encuentro algunas soluciones que son en forma nativa de la línea de comandos de ffmpeg, pero necesito una solución equivalente en relación a “fluent-ffmpeg” en Node.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para agregar múltiples audios de fondo a un video usando Node.js y “fluent-ffmpeg”, podemos seguir los siguientes pasos:

    1. Instala “fluent-ffmpeg” usando el siguiente comando:
    npm install fluent-ffmpeg
    
    1. Importa “fluent-ffmpeg” en tu archivo de Node.js usando el siguiente código:
    const ffmpeg = require('fluent-ffmpeg');
    
    1. Especifica la ruta del archivo de video de entrada y crea un comando ffmpeg usando el siguiente código:
    const inputVideo = 'ruta/al/video/de/entrada.mp4';
    
    const ffmpegCommand = ffmpeg(inputVideo);
    
    1. Agrega el primer audio al video desde 0s hasta 10s usando el siguiente código:
    const primerAudio = 'ruta/al/primer/audio.mp3';
    
    ffmpegCommand
      .setStartTime(0)
      .setDuration(10)
      .input(primerAudio)
      .complexFilter([
        {
          filter: 'adelay',
          options: '10000|10000'
        },
        {
          filter: 'apad',
          options: { 
            padding: 0, 
            start: 0, 
            end: 2000 
          }
        }
      ])
      .outputOptions('-acodec', 'libmp3lame')
    
    1. Agrega el segundo audio al video desde 10s hasta 20s usando el siguiente código:
    const segundoAudio = 'ruta/al/segundo/audio.mp3';
    
    ffmpegCommand
      .setStartTime(10)
      .setDuration(10)
      .input(segundoAudio)
      .complexFilter([
        {
          filter: 'adelay',
          options: '20000|20000'
        },
        {
          filter: 'apad',
          options: { 
            padding: 0, 
            start: 0, 
            end: 2000 
          }
        }
      ])
      .outputOptions('-acodec', 'libmp3lame')
    
    1. Agrega el tercer audio al video desde 20s hasta 30s usando el siguiente código:
    const tercerAudio = 'ruta/al/tercer/audio.mp3';
    
    ffmpegCommand
      .setStartTime(20)
      .setDuration(10)
      .input(tercerAudio)
      .complexFilter([
        {
          filter: 'adelay',
          options: '30000|30000'
        },
        {
          filter: 'apad',
          options: { 
            padding: 0, 
            start: 0, 
            end: 2000 
          }
        }
      ])
      .outputOptions('-acodec', 'libmp3lame')
    
    1. Establece el nombre y la ruta del archivo de salida y ejecuta el comando ffmpeg usando el siguiente código:
    const outputVideo = 'ruta/al/video/de/salida.mp4';
    
    ffmpegCommand
      .output(outputVideo)
      .on('end', function() {
        console.log('Procesamiento finalizado');
      })
      .on('error', function(err) {
        console.error(err);
      })
      .run();
    

    Siguiendo estos pasos, podemos agregar múltiples audios de fondo a un video usando Node.js y “fluent-ffmpeg”. Los filtros complejos utilizados en el código anterior permiten un control preciso sobre el tiempo y el relleno de las pistas de audio, y la opción de salida “-acodec” asegura que el audio esté en el formato deseado.

Comments are closed.