使用fluent-ffmpeg叠加多段视频时出现音频丢失问题求助
问题原因
你当前使用complexFilter仅配置了视频流的叠加规则,未明确指定音频流的映射规则,ffmpeg在使用复杂滤镜场景下不会默认携带输入音频,因此输出文件只有视频没有音频。
修复方案
在调用save方法前,添加2行配置即可:
- 用
-map 0:a参数指定将第一个输入(主视频)的音频流映射到输出文件 - 用
audioCodec('copy')指定直接拷贝音频流,不需要转码,大幅提升处理效率
修改后的完整代码
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") .outputOptions('-map', '0:a') // 新增:映射主视频的音频流到输出 .audioCodec('copy') // 新增:直接拷贝音频不转码 .save("/tmp/final.mp4");
内容的提问来源于stack exchange,提问作者Benjamin Hawkins
相关产品推荐
相关产品推荐

