ai-chatbot/docs/video-canvas-smart-edit-research-2026-09-17.md

71 lines
7.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 智能剪辑:参考站实测与开源算法选型
检查日期:2026-09-17。本文区分实际观察、开源代码事实、建议方案与尚未实现的功能。
## 参考站已观察
[LibTV 画布](https://www.liblib.tv/canvas) 的智能剪辑入口有讲解视频、批量广告、口播视频、素材混剪四种预设。素材混剪预设连接七个素材节点,提示词包含卡点和突出产品,参数显示 16:9、1080P、20 秒。打开编辑器后,示例时间轴约 14 秒,含七个片段;这只是预设示例,不能当成自动生成成功的结果。没有点击收费生成。
编辑器可见分割、向左/右裁剪、字幕轨道、转场、吸附、缩放、原声静音、全屏预览,导出到本地或画布。分割/裁剪会检查播放头位置与最短片段长度。界面没有公开它实际使用的后台选片或卡点算法,不能推断它使用了以下任何项目。
## 已阅读的开源项目
| 项目 | 可复用能力及实现 | 适用场景 | 许可证/接入边界 |
| --- | --- | --- | --- |
| [FunClip](https://github.com/modelscope/FunClip) | FunASR 生成转写与时间戳;把选定文字、说话人或 LLM 给出的区间映射回视频;裁剪后重排字幕时间 | 中文口播、讲解、访谈精选 | [源码 MIT](https://github.com/modelscope/FunClip/blob/main/LICENSE),模型权重单独授权。Python/ASR 服务不能直接放进 Next 请求进程 |
| [Auto-Editor](https://github.com/WyattBlue/auto-editor) | 按音量或运动量标记保留区间,可组合条件,前后 margin 保留呼吸和语句边界 | 去停顿、去静音粗剪 | [Unlicense](https://github.com/WyattBlue/auto-editor/blob/master/LICENSE);低音量不是无价值内容,不能直接当产品亮点评分 |
| [PySceneDetect](https://github.com/Breakthrough/PySceneDetect) | ContentDetector 计算相邻帧变化;AdaptiveDetector 将目标帧分数与周围帧均值比较,同时检查最小内容变化和最短镜头 | 多素材拆镜头、混剪候选片段 | [BSD-3-Clause](https://github.com/Breakthrough/PySceneDetect/blob/main/LICENSE);负责边界检测,不负责语义或商品识别 |
| [librosa](https://github.com/librosa/librosa) | onset strength → 节奏估计 → 动态规划选节拍;综合局部强度与节拍间隔一致性 | 背景音乐卡点 | [ISC](https://github.com/librosa/librosa/blob/main/LICENSE.md);弱节奏/静音可能无有效节拍,必须显式回退 |
| [FFmpeg](https://ffmpeg.org/ffmpeg-filters.html) | trim/atrim、setpts/asetpts、concat、xfade/acrossfade、字幕渲染、响度处理 | 最终确定性合成 | 使用部署环境既有构建;具体许可依构建组件,不把所有构建概括成同一许可 |
阅读位置:FunClip `funclip/videoclipper.py` 的 `recog`、`clip`、`video_clip`;PySceneDetect `scenedetect/detectors/adaptive_detector.py` 的 `process_frame`;librosa `librosa/beat.py` 的 `__beat_tracker`、`__beat_track_dp`。这些代码已下载到本地研究目录查看,没有安装来源不明的脚本或启动重模型服务。
FunClip 的关键点是可靠的时间戳映射,而不是让语言模型随意猜视频秒数。它既接收文字匹配,也接收显式时间区间,再重算片段字幕。不能把“ASR 文字剪辑”直接等同于“无对白产品素材混剪”。
PySceneDetect 的自适应比值为目标变化分数除以邻域平均变化分数,另加内容阈值和最短镜头限制。这能减轻连续快速运镜带来的误切,但闪光和缓慢转场仍需结合素材调阈值。[算法实现](https://github.com/Breakthrough/PySceneDetect/blob/main/scenedetect/detectors/adaptive_detector.py)
librosa 的节拍跟踪先形成起音强度曲线,估计速度,再用动态规划寻找与速度相容的强起音序列,不是简单按固定秒数平均切。低置信度时保留普通剪辑并标明未检测到稳定节拍。[算法文档](https://librosa.org/doc/0.10.2/generated/librosa.beat.beat_track.html)
## 与现有系统的接入方案(尚未上线)
优先组合 FunClip 的时间戳选片思路、PySceneDetect、librosa 和现有 FFmpeg;千问3.8继续负责素材语义、脚本要求和候选镜头排序。无需为了剪辑更换现有生图/视频模型。
1. 预处理:现有受限下载器取得素材;ffprobe 读真实时长/FPS/音轨;以素材 hash 缓存低清代理、镜头边界、ASR 和节拍,避免反复解析。
2. 候选分段:有对白时按 ASR 句子和说话人形成候选;无对白时按场景边界形成候选。去静音只作可选粗剪,保留前后余量,不切断语词。
3. 语义选片:把候选 ID、真实开始/结束、抽帧与转写传给现有千问3.8,只允许模型返回候选 ID、用途和排序。服务端校验所有 ID 和区间;无素材时不能虚构成片。
4. 卡点:分析用户选定/生成的音乐,输出真实 beat 秒数。根据最低镜头时长与素材余量,选每 2/4 拍换镜头,平衡节奏、语义连续性和目标总时长。口播优先语句边界,音乐卡点不能强行截断对白。
5. 形成可编辑 EDL:记录素材 ID、sourceIn/sourceOut、timelineStart、speed、音量、字幕、转场。前端预览、时间轴修改和后台导出使用同一份 EDL。用整数微秒或有理数时间避免浮点累计漂移,显示时转换为帧。
6. 合成:统一尺寸/FPS/像素格式/采样率;每段 trim 后时间归零。转场重叠计入总时长;无音轨片段补静音以保持 A/V 对齐;FFmpeg 执行显式参数数组,进程限时限并发,上传归档。
7. 持久任务:分为解析、选片、编辑计划、渲染、转存,各步保存结果和输入版本。刷新或断线恢复同一任务,编辑后旧任务不能覆盖新版本;失败显示具体阶段。
示例 EDL 合同:
```json
{
"version": 1,
"timebase": "microseconds",
"canvas": {"width": 1920, "height": 1080, "fps": 30},
"clips": [{"id":"clip-1","assetId":"asset-a","sourceIn":1000000,"sourceOut":3000000,"timelineStart":0,"speed":1,"volume":1}],
"music": {"assetId":"music-a","start":0,"gain":0.2},
"subtitles": [],
"transitions": []
}
```
## 对照记录与剩余工作
| 能力 | 当前项目状态 | 后续验收条件 |
| --- | --- | --- |
| 单视频裁剪、抽帧、音轨提取、慢放 | 现有真实 FFmpeg 功能 | 已有测试继续保持 |
| 四类智能剪辑预设的自动成片 | 本次完成参考站与开源源码研究,未接入完整剪辑服务 | 上传不同素材后产生可编辑 EDL 与真实成片 |
| 去静音/ASR 语义选片 | 选定开源候选,尚未部署 | 验证中文、低音量、无音轨、多人语音 |
| 音乐卡点 | 已明确 librosa 算法与回退策略,尚未接入 | 合成脉冲音乐和真实音乐的切点误差可量化 |
| 多素材时间轴、字幕、转场 | 仍需 EDL 编辑器和合成执行器;不把单片裁剪宣称为智能混剪 | 预览/导出逐片一致,跨转场音画同步 |
48 服务器此前反馈过内存高。部署 ASR 时应先核对实际可用资源,再使用独立受限 worker;不要在每个 Web 请求内加载一份模型。此处是实施建议,本次没有启动新的常驻模型服务。
## 实施更新
以上是最初调研时点。已实现的开源分析与剪辑链路、实际验证和独立合成部署状态见 [视频合成服务实施记录](video-render-service-2026-09-17.md)。FunASR仍未完成真实权重验收,不把适配代码等同于转写已可用。