第一帧时间仍显示 0.5 秒。
只在 trim 后补回 setpts=PTS-STARTPTS,再读取输出 showinfo 时间戳。
实操配方
按左闭右开边界制作一秒参考片段。本配方裁剪连续视频区间,不是按时间基准选择一张静帧。
附实际运行过的本地样例、脚本和回执;不代表已调用视频生成服务。
node run-recipe.mjs --out ./my-run
完整解码原创夹具,确认每秒十帧下确有三十帧,由此建立受控的三秒区间。构建用原始 RGB 暂存会在 finally 清理。这种受控 CFR 时长算法不能直接当成通用 VFR 时长推算。
本地校验要求两个值有限、起点不小于零、终点大于起点,且不超过源时长。脚本分别实跑负起点、相等边界、倒序边界、超尾请求和 NaN,不静默纠正。
实际应用 trim=start=0.5:end=1.5,setpts=PTS-STARTPTS 并重新编码。trim 保留源片连续区间,setpts 让输出从零开始;终点不包含从源片 1.5 秒开始的那一帧。
结果应完整解码为十帧,首尾分别与源索引 5、14 的 RGB 比较,再解析真实 showinfo 日志,确认输出 PTS 从 0.0 到 0.9、间隔 0.1 秒。本次首尾最大通道差均为零。
只在 trim 后补回 setpts=PTS-STARTPTS,再读取输出 showinfo 时间戳。
使用配方明确的右开边界,以源索引 14 验收最后一帧,不通过延长终点补偿。
只把 endSeconds 降到已确认边界,或获取原本需要的更长参考;不悄悄截成合法值。
把请求时间窗、源片可用区间与解码端点检查一起保存。小型 CFR 夹具证明这次裁剪操作,不代表所有真实参考片的时间戳行为。