如何使用Node fluent-ffmpeg将音频添加到视频?

3

我正在尝试使用ffmpeg在视频之上添加音频

ffmpeg -i sample.mp4 -i sample.mp3 -c copy -map 0:v:0 -map 1:a:0 output.mp4

以上代码在我的终端中运行良好,但我想通过ffmpeg节点包 fluent-ffmpeg 使用它。

这段代码无法正常工作,也没有抛出任何错误。

ffmpeg()
    .input('DATA/sample.mp4')
    .input('DATA/sample.mp3')
    .videoCodec('copy')
    .outputOptions(['-map 0:v:0', '-map 1:a:0'])
    // .outputOption('-map 1:a:0')
    .save('node.mp4') 

我无法重现你的问题。也许尝试添加一个错误处理器 .on('error', function (err, stdout, stderr) { console.log(err.message); }); 来记录可能的错误。 - TGrif
3个回答

3

new FFmpeg()
    .addInput(video)
    .addInput(audio)
    .saveToFile(destination, "./temp");

这对我来说很有用,因为我有一个没有声音的视频。


1

将输出传递到其他函数中:

ffmpeg()
  .addInput(videoInput) //your video file input path
  .addInput(audioInput) //your audio file input path
  .output(output) //your output path
  .outputOptions(['-map 0:v', '-map 1:a', '-c:v copy', '-shortest'])
  .on('start', (command) => {
    console.log('TCL: command -> command', command)
  })
  .on('error', (error) => console.log("errrrr",error))
  .on('end',()=>console.log("Completed"))
  .run()  

这个命令也会自动调整,如果你的视频时长小于音频时长,(-shortest) 这个参数将选取时长更短的文件

保存文件的方法:

 ffmpeg()
  .addInput(videoInput) //your video file input path
  .addInput(audioInput) //your audio file input path
  .output(output) //your output path
  .outputOptions(['-map 0:v', '-map 1:a', '-c:v copy', '-shortest'])
  .saveToFile(destination, "./temp")

0

MergeAdd和mergeToFile实际上有误导性的名称。它们用于将视频连接成单个视频文件。

您应该使用addInput添加音频文件,然后使用saveToFile保存合并的输出。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接