添加音频接口
目录
简介
添加音频接口:说明该接口在草稿自动化里的用途、依赖模块与常见报错。具体方法、路径、字段和校验请以 OpenAPI 为准。
依赖关系分析
组件依赖图
#mermaid-svg-H0N67VFdinfu5Jg3{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-H0N67VFdinfu5Jg3 .error-icon{fill:#552222;}#mermaid-svg-H0N67VFdinfu5Jg3 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-H0N67VFdinfu5Jg3 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-H0N67VFdinfu5Jg3 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-H0N67VFdinfu5Jg3 .marker.cross{stroke:#333333;}#mermaid-svg-H0N67VFdinfu5Jg3 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-H0N67VFdinfu5Jg3 p{margin:0;}#mermaid-svg-H0N67VFdinfu5Jg3 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster-label text{fill:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster-label span{color:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster-label span p{background-color:transparent;}#mermaid-svg-H0N67VFdinfu5Jg3 .label text,#mermaid-svg-H0N67VFdinfu5Jg3 span{fill:#333;color:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 .node rect,#mermaid-svg-H0N67VFdinfu5Jg3 .node circle,#mermaid-svg-H0N67VFdinfu5Jg3 .node ellipse,#mermaid-svg-H0N67VFdinfu5Jg3 .node polygon,#mermaid-svg-H0N67VFdinfu5Jg3 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-H0N67VFdinfu5Jg3 .rough-node .label text,#mermaid-svg-H0N67VFdinfu5Jg3 .node .label text,#mermaid-svg-H0N67VFdinfu5Jg3 .image-shape .label,#mermaid-svg-H0N67VFdinfu5Jg3 .icon-shape .label{text-anchor:middle;}#mermaid-svg-H0N67VFdinfu5Jg3 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-H0N67VFdinfu5Jg3 .rough-node .label,#mermaid-svg-H0N67VFdinfu5Jg3 .node .label,#mermaid-svg-H0N67VFdinfu5Jg3 .image-shape .label,#mermaid-svg-H0N67VFdinfu5Jg3 .icon-shape .label{text-align:center;}#mermaid-svg-H0N67VFdinfu5Jg3 .node.clickable{cursor:pointer;}#mermaid-svg-H0N67VFdinfu5Jg3 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-H0N67VFdinfu5Jg3 .arrowheadPath{fill:#333333;}#mermaid-svg-H0N67VFdinfu5Jg3 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-H0N67VFdinfu5Jg3 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-H0N67VFdinfu5Jg3 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-H0N67VFdinfu5Jg3 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-H0N67VFdinfu5Jg3 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-H0N67VFdinfu5Jg3 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster text{fill:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 .cluster span{color:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-H0N67VFdinfu5Jg3 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-H0N67VFdinfu5Jg3 rect.text{fill:none;stroke-width:0;}#mermaid-svg-H0N67VFdinfu5Jg3 .icon-shape,#mermaid-svg-H0N67VFdinfu5Jg3 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-H0N67VFdinfu5Jg3 .icon-shape p,#mermaid-svg-H0N67VFdinfu5Jg3 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-H0N67VFdinfu5Jg3 .icon-shape .label rect,#mermaid-svg-H0N67VFdinfu5Jg3 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-H0N67VFdinfu5Jg3 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-H0N67VFdinfu5Jg3 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-H0N67VFdinfu5Jg3 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 内部模块
外部依赖
requests库
pymediainfo
uuid库
datetime库
v1.py
schemas/add_audios.py
service/add_audios.py
utils/*
exceptions.py
config.py
pyJianYingDraft/*
性能考虑
下载性能优化
系统实现了多层下载优化:
| 优化特性 | 描述 | 配置值 |
|---|---|---|
| 连接池大小 | HTTP连接池最大连接数 | 5 |
| 超时设置 | 总下载超时时间 | 90秒 |
| 分块大小 | 文件下载块大小 | 32KB |
| 重试机制 | 下载失败重试次数 | 3次 |
| 断点续传 | 支持范围请求的断点续传 | 启用 |
内存管理
- LRU缓存机制限制最大缓存10000个草稿对象
- 音频文件下载完成后自动清理临时文件
- 音频片段创建时使用深拷贝避免内存泄漏
并发处理
系统支持并发音频处理,注意事项:
- 每个草稿对象在同一时间只能被一个线程访问
- 音频下载采用异步处理减少阻塞
- 轨道添加操作具有原子性保证
故障排除指南
常见错误及解决方案
| 错误码 | 错误类型 | 错误描述 | 解决方案 |
|---|---|---|---|
| 2001 | 业务错误 | 无效的草稿URL | 检查草稿URL格式和有效性 |
| 2007 | 业务错误 | 无效的音频信息 | 验证audio_infos JSON格式 |
| 2008 | 业务错误 | 音频添加失败 | 检查音频文件可访问性和格式 |
| 2005 | 业务错误 | 下载文件失败 | 网络连接问题或文件过大 |
| 2004 | 业务错误 | 文件大小超出限制 | 减少音频文件大小或数量 |
调试建议
- 参数验证:确保所有必填参数都已正确提供
- 网络检查:验证音频URL可正常访问
- 草稿状态:确认草稿ID有效且存在于缓存中
- 磁盘空间:确保有足够的磁盘空间存储音频文件
- 日志分析:查看详细的错误日志信息
更多信息
字段说明、校验规则与示例以 OpenAPI 为准;需要对照源码时请查看 schemas/、service/ 与路由注册处。
文档信息
- 接口文档: docs.jcaigc.cn
- 效果案例: www.jcaigc.cn/workflow
- 开源仓库: capcut-mate