使用流畅的 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();
我有一个主视频文件和动态数量的较小视频文件,这些文件需要根据时间戳在特定时间叠加。
我能够让视频叠加在正确的位置,但现在我没有任何音频。 (注意:我只需要来自第一个输入的音频,因为叠加的视频没有音频)
我认为我的输入语法存在问题,但我不太明白。 感谢任何帮助。
这是我的代码:
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();