本文档抓取自官方文档中心(2026-10-10 快照),具体功能以实际产品为准。
视频压缩模块
概述
视频压缩模块用于在上传前自动压缩大体积视频文件,确保符合平台要求。系统提供前端(浏览器端)和后端(服务端)两套压缩方案。
前端压缩
前端压缩基于 Canvas + MediaRecorder API,在浏览器端完成视频压缩,无需上传到服务器。
压缩参数
| 参数 | 值 | 说明 |
|---|---|---|
| 目标短边 | 480px | 短边缩放到 480px,长边等比缩放 |
| 帧率 | 24fps | 输出帧率 |
| 视频码率 | 1.5 Mbps | 视频编码码率 |
| 压缩阈值 | 10MB | 文件超过此大小才触发压缩 |
| 最大时长 | 15秒 | 超过此时长的视频会被截断 |
触发条件
满足以下任一条件即触发压缩:
- 文件大小超过 10MB
- 视频短边超过 480px
- 视频时长超过设定的最大时长
压缩流程
- 读取视频元数据(宽高、时长)
- 判断是否需要压缩
- 将视频逐帧绘制到 Canvas 上(缩放到目标分辨率)
- 使用 MediaRecorder 录制 Canvas 流 + 原始音频
- 输出压缩后的视频文件
编码优先级
系统会按以下顺序尝试编码格式:
- VP9(WebM)
- VP8(WebM)
- MP4(回退方案)
后端压缩
后端压缩基于 ffmpeg,用于服务端视频处理。
压缩参数
| 参数 | 默认值 | 说明 |
|---|---|---|
| 目标短边 | 480px | 短边缩放到目标值 |
| CRF | 28 | 视频质量(越低质量越高) |
| 编码预设 | fast | 编码速度/质量平衡 |
| 音频码率 | 128k | AAC 音频编码码率 |
| 超时时间 | 300秒 | 压缩任务超时时间 |
技术细节
- 视频编码:H.264(libx264)
- 音频编码:AAC
- 输出格式:MP4(含 faststart 标志,支持流式播放)
- 分辨率对齐:宽高强制对齐到偶数(-2 参数)
使用场景
营销智能体视频上传
在营销智能体中上传视频素材时,系统会自动调用前端压缩:
- 用户选择视频文件
- 系统检测文件是否需要压缩
- 如需压缩,显示压缩进度条
- 压缩完成后自动上传
剧本创作平台视频上传
在剧本创作平台上传视频时,后端会验证视频分辨率:
- 如果视频短边超过 480px,上传会被拒绝
- 系统返回错误提示,要求用户先压缩视频
配置常量
相关配置位于 config/constant.py:
class MediaConstants:
VIDEO_COMPRESS_TARGET_HEIGHT = 480 # 前端压缩目标分辨率
VIDEO_COMPRESS_THRESHOLD_MB = 10 # 触发前端压缩的文件大小阈值
注意事项
- 前端压缩在浏览器端完成,不消耗服务器资源
- 压缩过程中会显示实时进度
- 超长视频会被自动截断到最大时长
- 压缩后的视频会保留原始音频
- 后端压缩功能已实现但当前仅用于验证,未实际调用压缩