使用ffmpeg叠加两个视频时的音频异常问题求助
FFmpeg 双视频叠加+双音频混音修正方案
核心修改点
- 给弹窗音频添加对应起始时间的延迟,解决音频提前播放问题
- 新增
amix滤镜混合原视频和弹窗的两路音频,替换原有仅映射弹窗音频的逻辑
修正后代码
start = 30 popup_path = os.path.join(path, "popup.mov") popup_duration = get_duration(popup_path) subprocess.run( f'ffmpeg -y \ -i {os.path.join(path, "2minutevideo.mp4")} \ -i {popup_path} \ -filter_complex \ "[0:v]setpts=PTS-STARTPTS[v0]; \ [1:v]setpts=PTS-STARTPTS+{start}/TB[v1]; \ [v0][v1]overlay=enable=\'between(t, {start}, {start + popup_duration})\' [out_v]; \ [1:a]adelay={start * 1000}|{start * 1000}[delayed_a1]; \ [0:a][delayed_a1]amix=inputs=2:duration=first[out_a]" \ {render_flags} -r 24 -map [out_v] -map [out_a] -async 1 \ {os.path.join(source_folder, "test.mp4")}')
参数说明
adelay={start * 1000}|{start * 1000}:给弹窗音频的左右声道都添加对应毫秒数的延迟,适配你设置的弹窗起始时间,如果你实际定义的起始时间变量为notify_start,直接替换变量即可amix=inputs=2:duration=first:混合两路音频,总时长以第一个输入(原2分钟视频)的时长为准,避免弹窗音频结束后原视频音量出现异常变化- 输出时分别映射处理后的视频流
out_v和混合音频流out_a即可
内容的提问来源于stack exchange,提问作者crashyourtesla
相关产品推荐
相关产品推荐

