视频合成预设功能实现说明
功能描述
在前端添加"高质量导出"选项,让用户可以选择不同的 FFmpeg preset:
- ⚡ 快速合成:veryfast(默认)
- 🎬 高质量导出:medium(后台任务,完成后通知)
已完成的功能
1. 后端功能实现
- ✅ API 控制器支持 preset 参数传递(McpController.php)
- ✅ PyBridge 服务接收并使用 preset 参数(fastapi_app.py, ffmpeg_runner.py)
- ✅ FFmpeg 命令根据 preset 参数调整编码设置
- ✅ 默认预设从
ultrafast调整为veryfast(平衡速度和质量)
2. 调试日志清理
- ✅ 移除 McpController.php 中的调试日志代码
- ✅ 清理临时调试文件写入操作
3. OSS 上传功能
- ✅ PyBridge 生成视频成功后自动上传到 OSS
- ✅ 返回预签名 URL 用于视频预览
- ✅ 配置了 OSS 相关环境变量(OSS_ACCESS_KEY_ID, OSS_ACCESS_KEY_SECRET, OSS_BUCKET, OSS_ENDPOINT, ENABLE_OSS_UPLOAD)
待完成的功能
1. 前端实现
- [ ] 在视频合成界面添加 preset 选择器(radio button 或 dropdown)
- [ ] 修改 API 调用逻辑,传递
preset参数到后端 - [ ] 实现高质量导出的进度反馈机制
- [ ] 添加任务完成通知功能
2. 前端代码修改示例
需要在前端调用 compose_timeline_ffmpeg 工具时添加 preset 参数:
javascript
// 示例调用
const result = await mcp.callTool({
tool: 'compose_timeline_ffmpeg',
args: {
storyboard_id: storyboardId,
timeline_json: timelineJson,
options: {
// ... 其他选项
},
preset: selectedPreset, // 'veryfast' 或 'medium'
agent_app_id: agentAppId,
agent_id: agentId,
member_id: memberId
}
});3. UI 控件示例
在视频合成界面添加一个选择器(radio button 或 dropdown):
html
<div class="preset-selector">
<label>
<input type="radio" name="preset" value="veryfast" checked>
⚡ 快速合成(默认)
</label>
<label>
<input type="radio" name="preset" value="medium">
🎬 高质量导出
</label>
</div>技术实现细节
PyBridge 预设支持
- CPU 模式:支持
ultrafast,superfast,veryfast,faster,fast,medium,slow - GPU 模式:支持
h264_nvenc编码器的相关预设
性能考虑
medium预设会显著增加编码时间,但提供更好的压缩效率和画质- 建议对长时间任务提供进度反馈和完成通知
OSS 上传配置
OSS 配置已就绪,PyBridge 会在视频生成成功后自动上传到阿里云 OSS 并返回预签名 URL,确保视频可以快速访问而无需等待 Nginx 静态文件服务的缓慢响应。