延迟叠加修剪的视频会导致音频延迟

延迟叠加修剪的视频会导致音频延迟

我正在尝试将一个视频叠加在另一个视频之上,条件如下

  • 只应使用视频的特定部分,例如,100 秒视频中的 10-50 秒
  • 叠加视频开始前应该有一个延迟

但问题是,叠加视频的音频与视频不同步,并且在视频之前播放。
下面是一个示例命令,我用它来修剪视频 14 秒,然后在 10 秒延迟后叠加它

ffmpeg -y -i main_video.mp4 \
    -itsoffset 10.0 -ss 30.0 -t 13.99 -i "foreground_video.mp4" \
    -filter_complex \
    "[1:v]scale=156:86[sv1];[0:v][sv1]overlay=33:156:shortest=1:enable='between(t,10.0,13.99)'[overlay0];\
    [1:a]adelay=10000|10000[1ad];[0:a][1ad]amix=inputs=2[outa]" \
    -map [overlay0] -map [outa] test.mp4

如果我-ss 30.0 -t 13.99从命令中删除,则视频会覆盖正确的音频,但我只想要视频的特定部分。

以下是我使用的示例视频
前景视频.mp4
主视频.mp4

答案1

itsoffset + adelay 会产生意外结果,即结果流中出现间隙。在应用 adelay 之前,请使用 asetpts 移除偏移。 -ss 也会干扰转码。因此,请跳过 itsoffset,对视频应用单独的 setpts 过滤器,对音频应用 adelay。

使用

ffmpeg -y -i main_video.mp4 \
    -ss 30.0 -t 13.99 -i "foreground_video.mp4" \
    -filter_complex \
    "[1:v]scale=156:86,setpts=PTS-STARTPTS+10.00/TB[sv1];[0:v][sv1]overlay=33:156:shortest=1:enable='between(t,10.0,13.99)'[overlay0];\
     [1:a]adelay=10000|10000[1ad];[0:a][1ad]amix=inputs=2[outa]" \
    -map [overlay0] -map [outa] test.mp4

相关内容