SuperAPI AI 工具集

wjs-reframing-video

设计与创作

查看项目

更新于 10-15 23:32

技能介绍

用途:将视频在横屏与竖屏间转换,输出为源宽高互换的宽高比(16:9→9:16、4:3→3:4 等),而非在竖屏画面中加黑边。裁剪窗口跟随活跃说话人(嘴部在动的人),而非最大或置信度最高的脸。原始输入不会被修改,并生成 .crop.json 侧车文件记录裁剪计划、分段说话人判定与所用参数。

主要能力:通过 MAR(嘴部宽高比)方差做视觉活跃说话人检测,结合音频能量与唇动交叉相关的音视频融合;按中心距离匹配进行稳定人脸跟踪;带迟滞的说话人分段切换,避免抖动;段内裁剪固定,段间硬切(默认 --motion cut),可选平滑移动(--motion smooth);音频直接流拷贝不重编码。使用 MediaPipe Tasks FaceLandmarker(478 点网格)经 ffmpeg 以默认 5 fps 采样,单次 ffmpeg crop+scale 渲染。无人说话时自动回退为最大人脸。

安装与用法:pip install mediapipe opencv-python numpy;ffmpeg 与 ffprobe 需在 PATH 中。首次运行会下载约 4 MB 的 face_landmarker.task 模型到 ~/.claude/skills/wjs-reframing-video/models/ 并缓存,首次离线运行会失败。可用 --target portrait|landscape 覆盖方向,--output-size 1080x1920 指定输出尺寸,--bitrate 控制码率(默认 12M)。

适用场景:把 16:9 的播客、访谈、演讲转为竖屏短视频(视频号、抖音、小红书、YouTube Shorts、TikTok、Reels);把 9:16 手机录像转为横屏播放器使用;4:3 档案素材转为 3:4 手机比例。

限制:不适用于需要每张脸各自裁切的多人口播问答(应改用 wjs-editing-multicam);无脸的动画或空镜会回退为中心裁剪,常不符合意图;源含强烈手持运镜会放大抖动,需先稳定;模型针对约 2 米内的人脸调校,远景小人脸可能检测不到,此时会中心裁剪导致画面错位,建议改用确定性固定裁剪;嘴部动作(打哈欠、笑、吃东西)会被误判为说话;侧脸或低头超过约 60° 时关键点可能失效;重叠说话只能选一人;长时间静音段落会回退到最大人脸;带烧录字幕或下三分之一的源需先去除;广角鱼眼需先做畸变校正;608×1080 放大到 1080×1920 约 1.78 倍,锐利文字上可见伪影。输出码率超过平台上限时需调整,如视频号上限 10 Mbps,可传 --bitrate 8M。