用途:把本地长视频转成较短的 MP4,通过检测静音、保留非静音片段来去除空白并压缩时长。基础流程只依赖 ffmpeg 和 ffprobe;字幕为可选项,使用本地 whisper.cpp,不需要 API 密钥。
依赖检查:先运行 ffmpeg -version 和 ffprobe -version。macOS 缺失时提示 brew install ffmpeg。字幕需先运行 setup_captions.py 一次性配置:python3 /Users/francescomistero/.codex/skills/video-short-maker/scripts/setup_captions.py,该脚本在需要时用 Homebrew 安装 whisper.cpp、安装 Pillow 用于烧录字幕,并把默认 tiny.en 模型下载到 ~/.cache/video-short-maker/models/。
主要能力与用法:先确认输入视频路径与输出目标。默认目标时长 45 秒,默认保持横屏/原始宽高比,默认高质量以让屏幕录制文字清晰;仅当用户要求 TikTok/Reels/Shorts/竖屏时才用 9:16 竖屏;仅当用户要求字幕时才用字幕。基本命令:python3 /Users/francescomistero/.codex/skills/video-short-maker/scripts/make_short.py INPUT_VIDEO --duration 45。竖屏加 --vertical;自定义输出加 --output ./short.mp4;缩小文件用 --quality small;本地字幕加 --captions,例如:python3 /Users/francescomistero/.codex/skills/video-short-maker/scripts/make_short.py INPUT_VIDEO --duration 45 --vertical --captions。
画质预设:high 为 CRF 18、编码较慢、文字更锐利、文件更大,是默认值;balanced 为 CRF 20,编码更快、质量体积均衡;small 为 CRF 24,文件更小但压缩痕迹更明显。
字幕:可选且本地运行。用户要求字幕时,先检查 whisper-cli 或 whisper-cpp 是否存在,缺失则运行或建议运行 setup_captions.py,再带 --captions 运行 make_short.py。输出包括 *.srt 字幕文件和 *.captioned.mp4 烧录字幕视频。烧录字幕用 Python/Pillow 渲染,因此本地 ffmpeg 不含 subtitles 滤镜时也可用。默认字幕模型为 tiny.en;意大利语或非英语语音需用多语言模型,例如先运行 python3 .../setup_captions.py --model base,再用 --caption-model ~/.cache/video-short-maker/models/ggml-base.bin --caption-language it 运行。
编辑行为:脚本用 ffmpeg silencedetect 检测静音区间,转为非静音候选片段,支持 --cut-style light|normal|aggressive;normal 默认在每个切点两侧保留 0.5 秒静音,使语音过渡不那么突兀;丢弃过短片段;保留较早的非静音片段直到达到目标时长;拼接所选片段;可选裁剪/缩放到 9:16;导出 H.264 MP4 与 AAC 音频;可选提取音频、用本地 Whisper 转录、写 SRT 并烧录字幕;在输出旁写编辑报告 JSON。
限制:该技能并非内容感知,它只去除静音并压缩视频,不理解说话内容。结果不理想时可建议:几乎没剪动就用 --cut-style aggressive;切换太跳就用 --cut-style light;想让切换更柔和就增大 --keep-silence;缺少上下文就增大 --duration;做 Shorts/Reels/TikTok 用 --vertical;文件太大用 --quality balanced 或 small;需要字幕用 --captions。回复保持简短,命令失败前不要粘贴完整 ffmpeg 日志。