具有视频偏移的叠加层未以相同的偏移开始音频

具有视频偏移的叠加层未以相同的偏移开始音频

我有一个带音频的视频 (overlayvideo.mov),我要将它叠加在另一个视频 (basefilem.mp4) 上,并且从 20 秒开始叠加。输出 (finalvideo.mp4) 看起来不错,但叠加中的音频仍然从 00:00:00.000 开始,而不是我需要的开始时间,即 00:00:20.000(我用 itoffset 设置)。

我知道 itoffset 只处理视频。那么,我该如何在下面的命令中指定在 itoffset 的同时启动覆盖中的音频?

这是我当前的命令。它运行完美,只是我只是想弄清楚如何以及在何处放置延迟过滤器,以便覆盖中的音频与覆盖视频同时开始(在此示例中,我需要覆盖音频在 20 秒后开始)

ffmpeg -y -i basefilem.mp4 -itoffset 00:00:20.000 -i overlayvide.mov - ilter_complex "[1:v]scale=1280x720[ovrl];[0:v][ovrl]overlay=eof_action=pass[outv];[0:a][1:a]amix[outa]" -map [outv] -map [outa] -c:v mpeg4 -strict experimental -ascale:v 10 finalvideo.mp4

答案1

经过几个小时尝试使用 atrim 和 adelay 的各种解决方案,但都无济于事,我最终选择了这种方法。效果非常好。

  1. 创建 [s1]。 是秒数(以匹配视频偏移量(itsoffset))aevalsrc=0:d=N[s1]
  2. 将 [s1] 和 overlayvideo 的音频连接起来(其中 [s1] 位于 [1:a] 之前):[s1][1:a]concat=n=2:v=0:a=1[ovrla]
  3. 将 basevideo ([0:a]) 中的音频与 [ovrla] 混合

    Ffmpeg -y -i basevideo.mp4 -itsoffset 4 -i overlayvideo.mov -filter_complex "aevalsrc=0:d=4[s1];[s1][1:a]concat=n=2:v=0:a=1[ovrla];[1:v]scale=1280:720[ovrl];[0:v][ovrl]overlay=eof_action=pass[outv];[0:a][ovrla]amix[outa]" -map [outv] -map [outa] -c:v mpeg4 -strict experimental -qscale:v 10 finalvideo.mp4

相关内容