如何通过FFmpeg补全较短的视频轨道以匹配音频轨道长度?
如何通过FFmpeg补全较短的视频轨道以匹配音频轨道长度?
嗨,我之前也碰到过一模一样的问题——视频比音频短一截,播放器到视频结束点就没法正常跳转,真的超闹心!用FFmpeg就能轻松搞定,给你两个实用方案,按需选就行:
方案一:补黑帧匹配音频长度(推荐)
这个方法会自动检测音频和视频的时长差,在视频末尾补黑帧,直到两者长度一致,完全不用手动算时间:ffmpeg -i input.mp4 -vf "tpad=stop_mode=add:stop_duration=0" -c:a copy output.mp4简单解释下参数:
-vf指定视频滤镜,tpad是专门用来补帧的滤镜,stop_mode=add表示在视频结尾添加帧,stop_duration=0让FFmpeg自动对齐音频时长,默认补的就是黑帧,刚好符合你的需求。要是你已经明确知道要补1分钟,也可以把stop_duration=0改成stop_duration=60,精准补时长。方案二:循环视频补全长度
要是你不想补黑帧,想循环原视频直到和音频一样长,就用这个命令:ffmpeg -i input.mp4 -vf "loop=-1:size=0, trim=end=0" -c:a copy output.mp4这里
loop=-1是让视频无限循环,trim=end=0则让FFmpeg自动把循环后的视频截断到和音频相同的长度,完美匹配时长。
注意哦:因为用了视频滤镜,所以视频轨道会重新编码,而音频轨道用-c:a copy直接复制,能节省不少时间,也不会损失音频质量。
备注:内容来源于stack exchange,提问作者dzz
相关产品推荐
相关产品推荐

