25 lines
3.4 KiB
Markdown
Raw 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.

# 智能剪辑处理环境
从项目根目录运行 `bash services/smart-edit/setup.sh`。准备 Python 3.11、FFmpeg/ffprobe(包含 libx264 与 subtitles/libass)、中文字体(Linux 推荐 Noto Sans CJK)。基础分析依赖按版本固定,虚拟环境独立。
应用环境配置:
- `SMART_EDIT_PYTHON=/绝对路径/.venv-smart-edit/bin/python`
- `SMART_EDIT_CACHE_DIR=/有足够磁盘空间的私有目录/smart-edit-cache`(缺省 `.cache/smart-edit`)
- 运行目录保持项目根目录;Next standalone 打包已包含 analyze.py,Python 与 FFmpeg 单独安装。
语音识别选装:执行 `bash services/smart-edit/setup.sh --with-asr`,会安装 FunASR/PyTorch 并从 ModelScope 下载官方 Paraformer、FSMN-VAD、CT-Transformer 三个模型。把脚本输出的 `SMART_EDIT_ASR_MODEL`、`SMART_EDIT_VAD_MODEL`、`SMART_EDIT_PUNC_MODEL` 路径写入应用环境。模型代码禁止 trust_remote_code,用户请求不能选择任意模型文件。模型权重下载可能较大,应在维护期间完成;请求阶段仅读取已经配置好的本地模型。
诊断:`$SMART_EDIT_PYTHON services/smart-edit/analyze.py --check`。API `/api/canvas/smart-edit/capabilities` 仅对登录用户返回可用功能与模型列表,不返回密钥或本地路径。ASR 未准备好时页面关闭自动转写选项,仍可导入 SRT 和进行画面混剪。
资源:整个智能剪辑作业通过 PostgreSQL advisory lock 限制为同一数据库下同时一个重处理任务,租约心跳沿用画布任务队列。Python/FFmpeg 限制线程数,单素材 ≤180 秒、≤125 MiB、至多6份,总素材≤10分钟,成片≤90秒、≤12片段;分析缓存按用户隔离,内容 hash 校验,7天过期、4GiB上限。低清代理仅用于分析,成片使用原素材。数据库锁繁忙时任务保存为可恢复状态,页面轮询或返回画布会继续运行。
算法:PySceneDetect 检测镜头,librosa 检测节拍,FunASR 返回语句时间戳(采用 FunClip 的时间戳剪辑思路)。去静音为独立实现的 RMS 阈值算法,参考 Auto-Editor 的粗剪与余量机制;没有复制 Auto-Editor 或 FunClip 源码,也不依赖它们的 UI。来源与许可证记录在项目 docs/video-canvas-smart-edit-research-2026-09-17.md。PySceneDetect 为 BSD-3-Clause,librosa 为 ISC,FunASR 源码和各权重许可应按所安装版本一并保留。
智能选片直接复用项目内官方千问3.8视觉模型;关闭智能选片后所有镜头/节拍/剪辑流程均为本地运算。供应商受理状态不明的语义请求不会自动重发。素材文本和字幕仅为待分析数据,模型只允许返回实际候选ID,不能生成任意时间区间、文件路径或命令。
预览使用同一 EDL 的时间、裁剪、速度、音量和叠化参数;浏览器流式预览受网络和解码影响。最终导出由 FFmpeg 确定性合成。音乐文件不足时末尾补静音,不默认循环;背景音量由用户调整。字幕样式与浏览器字体可能有差异。广告多版本目前对候选排序作轮换,素材不足时明确提示,不宣称独立生成多个创意脚本。
远程合成:设置 `SMART_EDIT_RENDER_URL` 与 `SMART_EDIT_RENDER_TOKEN` 后,render操作进入独立API,不占用本地主处理锁。独立服务部署见 `../video-render/README.md`,其千问仅提供可选文字能力。分析操作仍使用本机Python/代理文件。