使用流畅的 ffmpeg 覆盖视频时丢失音频

Losing audio when overlaying videos with fluent ffmpeg

我有一个主视频文件和动态数量的较小视频文件,这些文件需要根据时间戳在特定时间叠加。

我能够让视频叠加在正确的位置,但现在我没有任何音频。 (注意:我只需要来自第一个输入的音频,因为叠加的视频没有音频)

我认为我的输入语法存在问题,但我不太明白。 感谢任何帮助。

这是我的代码:

 const mergedVideo = ffmpeg("/tmp/orignal.mp4");
 screenShareFileNames.forEach((fileName) => mergedVideo.addInput(fileName));

 const filters = screenShareFileNames.map((fileName, index) => {
    const inputs = index === 0 ? "[0:v][1:v]" : `[tmp][${index + 1}:v]`;
    const outputs = `tmp`;
          
    return {
            filter: "overlay",
            options: { enable: `between(t,${insertPoint},${insertPoint + 5})` },
            inputs,
            outputs,
          };
  });

  mergedVideo
     .complexFilter(filters, "tmp")
     .save("/tmp/final.mp4");



看来我需要添加一个 outputOptions 来映射原始视频中的音频。

 mergedVideo
          .complexFilter(filters, "tmp")
          .outputOptions(["-map 0:a"])
          .output("/tmp/final.mp4")
          .run();