用途:把一个源视频按给定的时间窗口切成一组命名片段文件。每个片段都用 libx264 重新编码(而非流复制),因此切点能帧级精确落在指定的入点/出点上,适合片段后续进入剪辑流程。决定切哪些窗口由调用方负责,本技能只做机械切割。
输入:source(必填,源视频路径);clips(必填,JSON 数组路径,每项含 name 以及 end 或 duration,start/end 支持秒数或 SS、MM:SS、HH:MM:SS 及可选毫秒的时间码);output_dir(必填,输出目录);crf(可选,默认 18,越低质量越高);overwrite(可选,默认 false,重跑默认幂等)。
用法:先确认 ffmpeg 在 PATH 中(which ffmpeg)且源视频存在,然后运行: python3 skills/atoms/editing/trim-video-clips/scripts/trim_clips.py --source /path/to/source.mp4 --clips /path/to/clips.json --output-dir /path/to/clips/ [--crf 18] [--overwrite] 脚本对每个片段将 name 转为 slug 生成 <slug>.mp4,解析时间窗口并执行 ffmpeg -y -ss <start> -i <source> -t <duration> -c:v libx264 -crf <crf> -preset fast -pix_fmt yuv420p -c:a aac -b:a 192k <out>,并在输出目录写入 manifest.json,记录每个片段、窗口、状态及警告/错误。
输出:每个片段一个 <slug>.mp4,以及 output_dir/manifest.json(含 skill_name、run_id、input_path、output_files、逐片段记录、status、warnings、errors)。
限制与失败情形:源文件缺失或不可读会在切割前报错退出;片段规格无效(缺 end/duration、时长非正、时间无法解析)会跳过该片段并记入 manifest 错误,其余片段仍会切割;未安装 ffmpeg 需 brew install ffmpeg;窗口超出视频末尾会得到更短的片段,需用 ffprobe 核对时长;源无音轨时输出无音频,属预期而非错误。