FFMPEG 混合 mp4 和 wav,但在 mp4 的开始处添加延迟

FFMPEG 混合 mp4 和 wav,但在 mp4 的开始处添加延迟

我正在将 MP4 文件与 WAV 文件混合。MP4 包含音频和视频。基本上,mp4 是某人跟着节拍唱歌的视频。WAV 文件包含节拍。

在生成的文件中,WAV 文件略微落后于 MP4 文件。如果可能的话,我不想在开始时修剪 WAV 文件以将其提前,我宁愿为 MP4(MP4 中的音频和视频)添加延迟,以便生成的文件全部同步。我无法执行任何手动步骤,因为我是在应用程序内以编程方式执行此操作。

这是我当前的命令,它混合了 MP4 和 WAV,并使用过滤器来操纵音量级别

-i /home/video/file.mp4 -i /home/music/beat.wav -preset veryfast -crf 32 -filter_complex [0:a:0]volume=0.5[fa];[1:a:0]volume=0.5[fb];[fa][fb]amix=inputs=2:duration=first[fc] -map [fc] -map 0:v:0 -c:v copy -shortest

答案1

为 MP4 添加偏移量。使用 aresample 填补由于偏移量而导致的音频间隙。视频将出现冻结抵消开始时的时间量。

-itsoffset 0.5 -i /home/video/file.mp4 -i /home/music/beat.wav -filter_complex "[0:a:0]aresample=async=1:first_pts=0,volume=0.5[fa];[1:a:0]volume=0.5[fb];[fa][fb]amix=inputs=2:duration=first[fc]" -map [fc] -map 0:v:0 -preset veryfast -crf 32 -c:v copy -shortest

相关内容