用途:从本地视频文件提取有序静帧,供后续人工使用。使用捆绑脚本完成确定性提取,可选做纯色抠像清理;不包含生成、精灵图打包、动作评估或引擎打包。
主要能力:四种采样模式——--fps RATE 按均匀时间取播放帧;--count N 在区间内取恰好 N 帧代表帧;--timestamps LIST 按手选源时间取帧;--every-frame 取每个解码源帧。--start 与 --end 接受秒或 HH:MM:SS.mmm,适用于 --fps、--count、--every-frame;显式时间戳为绝对源时间,不能与区间同用。--count 默认 --count-position centers,按等时间分箱中心取样;仅当需首尾姿态时用 endpoints。--count 与 --timestamps 会把请求时间解析到最近的、互不相同的解码源帧,清单记录实际源时间戳并保留请求列表。
用法示例: python "$SKILL_DIR/scripts/slice_video_frames.py" input.mp4 frames/ --fps 12 python "$SKILL_DIR/scripts/slice_video_frames.py" input.mp4 frames/ --count 8 --start 0.4 --end 1.6 python "$SKILL_DIR/scripts/slice_video_frames.py" input.mp4 frames/ --timestamps 0.10,0.28,0.55,0.92 python "$SKILL_DIR/scripts/slice_video_frames.py" input.webm frames/ --every-frame
输出控制:--format png|webp|jpg(默认 png)、--prefix、--digits、--ffmpeg-bin、--ffprobe-bin;--force 仅授权覆盖冲突文件,不清空目录。脚本先暂存全部帧再写出,默认写 frames.json,含源路径、采样模式、源时间戳、可推导的每帧时长、画布尺寸、有序路径与 alpha 约定;可用 --manifest 改名或 --no-manifest 省略。
抠像:对纯色键控源可在提取时用 --remove-background,配合 --auto-key border、--edge-contract 1;需 Pillow 且输出 PNG 或 WebP,默认软 alpha、边界采样与去溢色。已知键色且边界不可靠时用 --key-color '#00ff00' --auto-key none;边缘明显锯齿时用 --edge-feather 0.25。也可用 remove_chroma_key.py 单独处理已提取帧。主体含键色、毛发、烟雾、玻璃、液体、半透明、反射、软阴影或细半透明边缘时不适合抠像,应说明限制而非放宽阈值。
验证:脚本成功退出且清单帧数与文件一致;文件名按播放顺序排序;源时间戳在请求区间内且时长合理;每帧可打开且尺寸一致;无空帧、裁切、损坏或意外重复;抠像输出有 alpha、透明角、内部细节完整且无明显键色边缘。
要求:Python 3.9+;ffmpeg 与 ffprobe 在 PATH 或显式传路径;仅抠像需 Pillow。未经用户授权不要安装依赖或覆盖已有输出。意图不明确时须让用户选择采样模式;长片段避免 --every-frame,除非用户明确需要全部源帧。