云剪辑系统技术介绍
一、系统概述
1.1 产品定位
视频剪辑(云剪辑)服务是视频的制作中心,支持剪切、拼接、混音、字幕、叠加、转场、特效等一系列功能,提供在线可视化的剪辑平台(控制台)及相应的 OpenAPI。本文介绍云剪辑的系统架构、核心链路与功能特性。
云剪辑是多轨道的音视频非线性编辑器(简称非编)。无论音轨还是视轨,在时间线上无需依次线性排列——即非线性编辑。下文内容也可概括为《音视频多轨道编辑渲染引擎设计》。
1.2 功能简介
视频制作在整个视频链路(采集、制作、播放、媒资管理)中具有非常重要的地位,将前期的采集拍摄与最终的分发播放连成一体,起着承前启后的作用,云剪辑服务就是其中的制作中心。
云剪辑是集视频制作、生产、分发为一体的在线视频制作平台,具备工具与服务两方面能力:
- 工具方面:全面视频剪辑能力,包括多轨道音视频合成、素材裁剪/切割/拖拽、贴片、文字设置和音频编辑等。
- 服务方面:支持各类业务调用、视频制作与分发及制作状态查询;合成成片存储到点播媒资库,可快速分发播放,无需反复下载上传。
1.3 非线性编辑示例
使用非线性编辑,可以灵活编排音频与图像资源:时间上可顺序排列,也可重叠;空间上可任意叠加混合,不受线性剪辑「必须先 A 后 B」的限制。
二、系统架构设计
2.1 整体架构与演进历程
云剪辑系统经历了从 SpringBoot + JNI 混合架构到纯 C++ 分布式服务的演进。
阶段一:SpringBoot + JNI 混合架构
- 架构特点:Java 负责任务调度,JNI 调用 C++ 音视频与渲染模块。
- 面临的问题:
- JNI 调用开销大,跨语言边界带来参数转换与内存拷贝成本
- 内存管理复杂,JVM 无法直接管理 C++ 侧内存
- 开发环境分裂:Java 本地开发,C++ 需在 Linux 服务器部署调试
- 部署需同时维护 Java 与 C++ 环境
- 客户量增长后,系统性能出现瓶颈
阶段二:纯 C++ 分布式服务(成熟阶段)
- 最终架构:纯 C++ 分布式服务,基于 RocketMQ 构建高并发架构。
- 性能提升:消除 JNI 开销;内存更高效;部署仅需 C++ 环境。
- 扩展能力:支持水平扩展,可按负载动态调整实例数量。
核心模块:
- 前端 Web 编辑界面:可视化编辑,支持拖拽操作。
- 后端云渲染服务:音视频处理与渲染,支持分布式部署。
- 任务调度层:基于 RocketMQ 的任务队列与异步处理。
2.2 技术选型与架构决策
为兼顾前端编解码/渲染需求与开发成本,系统采用以下方案:
渲染技术选型:
- Linux 云端 OpenGL 渲染:渲染模块独立封装,基于 SwiftShader 实现软光栅化。
- WebAssembly:渲染 SDK 跨平台运行,Web 与 Linux 端复用相同渲染逻辑。
架构设计原则:高并发 · 高可用 · 高性能(FFmpeg SIMD 与硬件加速)· 易扩展(模块化)。
2.3 系统架构图
┌─────────────────────────────────────────────────────────┐
│ 前端 Web 编辑界面(控制台 / OpenAPI) │
└───────────────────────────┬─────────────────────────────┘
│ 提交剪辑任务 / 查询状态
▼
┌─────────────────────────────────────────────────────────┐
│ RocketMQ 任务调度层(分布式消息队列) │
└───────────────────────────┬─────────────────────────────┘
│ 分发至 Worker
▼
┌─────────────────────────────────────────────────────────┐
│ 后端云渲染服务(C++ · FFmpeg · OpenGL · GPU 加速) │
│ 解码 → 多轨合成 → 特效/字幕/贴纸 → 编码 → 封装输出 │
└───────────────────────────┬─────────────────────────────┘
│
▼
点播媒资库 / 分发播放
调度与 Pipeline 编排的进阶设计见 云剪辑任务调度与 RocketMQ 编排。
三、核心技术特性
3.1 AE 特效支持与 libpag 集成
业务背景:Adobe After Effects(AE)是设计师常用的特效工具。客户希望复用现有 AE 模板、降低学习成本、保持设计一致性。
方案对比:
- 直接集成 AE:难度极高,Adobe 无开放 API
- 重新开发特效:成本巨大,无法覆盖 AE 全功能
- libpag(选用):腾讯开源 AE 特效渲染库,支持 PAG 格式
选型 libpag 的原因:开源免费、功能较完整、Web 端性能优化、社区与文档完善。
技术方案:
- 集成 libpag,支持复杂效果与多图层,实现 AE 特效 Web/云端渲染
- libpag 作为画面图层中的任意轨道,与其他视频轨道混合
- PAG 文件类比为视频/图片资源,统一资源管理
- 在 OpenGL 图层上将 libpag 纹理与其他图层混合,实现复杂视觉效果
应用效果:设计师 AE 制作 → 导出 PAG → 平台完美渲染;降低特效开发成本,提升专业性与竞争力。
3.2 图层时长可变技术
业务痛点:客户素材时长从数秒到数分钟不等,传统 AE 模板固定各图层时空关系,导致:
- 模板数量爆炸(10 种时长 ≈ 10 套模板)
- 设计成本指数增长,维护困难
- 无法满足「按素材特点定制视频」的个性化需求
典型场景:电商推广中,15 秒商品片、30 秒关于我、45 秒品牌故事——传统方案需三套完全独立模板,业务上不可持续。
技术方案:
- PAG 模板主线:修改 PAG 源码 + 图层命名规则,实现图层动态拉伸(先有模板,再有素材)
- 自定义模板主线:动态生成模板,由素材驱动模板(先有素材,再有模板)
- 动态故事线:分析素材结构 → 识别关键节点 → 计算图层相对时长比例 → 素材驱动模板生成
- 智能适配:自动调整图层参数,支持拉伸/压缩,保持视觉协调
实际效果:一套模板适配多种时长;降低设计与维护成本;支撑大规模定制化生产。
四、端侧渲染流程
4.1 渲染架构概述
云非编整体结构与移动端和传统非编相同,基于时间线的视音频流处理框架:
- 时间线:视音频编辑的框架与载体,承载所有视音频数据,由多轨道组合而成。
- 视频轨道:有层级关系,决定渲染顺序。
- 音频轨道:混音效果,分声道,无层级关系。
- 特效轨道:有层级关系,影响最终视觉效果。
4.2 Web 端 WASM 渲染流程
将 C++ 渲染核心编译为 WebAssembly,在浏览器端直接解码与合成,减少网络往返,与 Linux 云端复用同一套渲染语义。
Timeline 协议
↓
WASM 渲染模块(C++ / OpenGL ES)
↓
浏览器 Canvas / WebGL 输出预览帧
4.3 服务端渲染流程
剪辑任务(Timeline / 协议 JSON)
↓
RocketMQ 入队 → Worker 拉取
↓
FFmpeg 解码 → OpenGL 多轨合成 → 编码封装
↓
成片写入媒资库 / 回调通知
4.4 macOS 端 IPC 渲染流程
Electron 主进程通过 ZeroMQ 与 C++ 渲染子进程通信:下发渲染指令、执行合成、回传帧数据,实现低延迟本地预览。
Electron 前端
↕ ZeroMQ IPC
macOS C++ 渲染子进程
↓
本地帧输出 / 视频流回传
4.5 Web 端渲染方案演进
实时预览需满足:拖拽时间轴即时出画、≥25 FPS 流畅度、Web 平台可用、前端团队可维护。
方案一:RTMP 推流
- 思路:后端渲染结果 RTMP 推流到前端播放
- 问题:CPU 软光栅性能有限;网络延迟大;拖拽预览延迟明显
- 结论:网络延迟 + CPU 瓶颈,无法满足实时预览
方案二:WASM 浏览器端渲染
- 优势:减少网络传输,渲染靠近用户侧
- 问题:前端集成与维护 WASM 成本高;编解码更新需重新编译发包
- 结论:IPC 方案落地后,部分场景被替代,但仍用于 Web 轻量预览
方案三:macOS IPC(Electron + ZeroMQ)
- 渲染服务编译为 macOS 原生进程,ZeroMQ IPC 通信
- 前端仅发送渲染指令,无需嵌入 WASM 与复杂编解码逻辑
- 性能:传输帧率可达 200 FPS,单帧渲染 <33ms,满足 30fps 预览
- 实现 Electron 与 C++ 跨进程双向交互(指令 + 视频流)
五、功能特性详解(服务端渲染)
5.1 画面处理
基于 FFmpeg 与 OpenGL,实现精准画面处理:
基础编辑:时间裁剪 · 画面裁剪 · 倍速播放 · 循环/单次/快放/慢放
高级变换:平移旋转缩放 · 图层混合 · 转场特效 · 滤镜 · HDR · WEBM(YUVA420P)· 透明度 Overlay 动画
5.2 音频处理
基础:时间裁剪 · 倍速 · 音量 · 淡入淡出 · 静音
高级:多轨混音 · 格式转换 · 降噪(rnnoise)
5.3 水印与贴纸
水印:静态/动态水印,PNG/JPG,透明度,九宫格或精确坐标,等比/自由缩放
贴纸:PNG/GIF/APNG 贴纸库,帧动画贴纸,主题分类;Mask 视频遮罩,多种混合模式
5.4 文字处理
基于 libpag 与 Skia:
基础:字体/大小/颜色/粗细/斜体 · 对齐 · 行距字距 · 描边 · 阴影
高级:富文本 · 文字模板 · 动画(淡入/滑动/缩放/旋转)· 速度/循环/延迟控制
六、成片案例
营销成片示例已迁移至在线项目预览页,可在浏览器中查看时间线、包装效果与整体成片,无需在本站加载大体积视频文件。案例展示:https://agent.tfwang.top/#/project-preview
七、技术总结与项目价值
7.1 核心技术成果
- 多轨道非线性编辑:音轨与视轨灵活组合,真正非编能力
- 图层时长可变:素材驱动动态模板,突破传统 AE 固定模板局限
- 高性能渲染:CUDA 硬件加速 + OpenGL,720p 编码性能提升 3–5 倍
- 跨平台渲染:WebAssembly 与 IPC,覆盖 Web、macOS、Linux
7.2 项目价值与影响
商业价值:
- 作为云剪辑 API 能力提供方,服务阿里巴巴国际站、千牛卖家、唯品会等大型平台
- 支撑近千万次视频生产任务,服务美团、百事可乐、欧莱雅等企业定制化需求
- 从传统模板化制作转向智能化批量生产,大幅提升内容制作效率
技术价值:
- 解决传统 AE 模板固定性高、维护成本大的行业痛点
- 图层时长可变技术为视频制作提供可规模化复用的新路径
- 架构从 SpringBoot + JNI 演进至纯 C++ 分布式,支撑高并发批量出片