FFmpeg裁剪视频硬编码字幕时超过-to时间戳仍渲染如何解决?
故障原因
- 你命令中放在
-i参数前的-ss/-to/-itsoffset仅作用于输入的视频流,subtitles字幕滤镜会独立读取原video.mkv文件的字幕轨道,不受输入裁剪参数限制,默认会从头到尾扫描整个原文件的所有字幕内容,哪怕范围外的字幕根本不需要渲染到输出片段中,这就是输出帧数不再增长但进程仍持续运行的核心原因。 - 原有命令中的
-itsoffset 00:06:05属于冗余配置,输入前的-ss已经自动调整了输入流的时间戳起始值,额外添加反而可能导致字幕时间同步异常。
修复方案
给subtitles滤镜添加start_time和end_time参数,明确指定字幕处理的时间范围,避免滤镜扫描整个长视频文件,修正后的命令如下:
# 00:06:05 对应秒数365,00:06:12对应秒数372 ffmpeg -ss 00:06:05 -to 00:06:12 -i video.mkv -vf "subtitles=video.mkv:si=0:start_time=365:end_time=372" output.mkv
该命令会同时限制输入视频流和字幕流的处理范围,执行耗时仅和你裁剪的片段长度相关,不会额外处理原视频后续内容。
内容的提问来源于stack exchange,提问作者BrandonDY
相关产品推荐
相关产品推荐

