|美摄云非编系统——网页端实时编辑渲染方案( 三 )


比较重要的一环就是合成视频 , 因为多数编辑的目的都是为了输出一个完整的视频 。 对于美摄云非编 , 同样还支持美摄SDK可以使用的特效资源包 , 这些特效包就像插件一样 , 即插即用 , 给云非编带来了更多的炫酷效果 。
整个时间线构建好之后 , 所有的渲染就交给流媒体引擎了 , 视音频的编解码 , 视音频流的调度、同步、预取等一系列复杂的工作 , 都是流媒体引擎完成的 。
2.4 工作流程

|美摄云非编系统——网页端实时编辑渲染方案
本文插图

之所以介绍这个工作流程 , 不仅因为它的重要性 , 还因为云非编系统在渲染和最终输出的显示和之前是不同的 , 而这也是云非编架构的重要一环 , 就是最终的渲染和输出 。
首先输入源就是视频源和音频源 , 视频源通过video processor以video frame的格式进行调度 , 这里包括视频文件的解码 , 视频格式的转换 , 封装等等 , 传给video output 。 音频源以audio sample的格式传给audio output , 在输出之前视音频数据要以video frame的时间戳进行同步 。
在美摄云非编系统里 , video output最终是通过Web GL渲染成Image Bitmap画在canvas上进行预览的 , audio output是通过Web Audio的输出到扬声器的 。 对于合成视频 , 则是直接将视音频数据编码写入文件即可 。
2.5 配音功能的实现

|美摄云非编系统——网页端实时编辑渲染方案
本文插图

配音也是非编软件里面一个重要的功能 , 美摄云非编里面的录音功能的实现步骤是:首先 , 开启web端的麦克风之后 , 使用Web Audio进行音频数据采集 , 通过分段的形式将音频数据传给WASM , 编码输出成m4a的音频格式 。
之所以选择通过WASM来输出音频文件 , 一方面是web端提供的输出音频的格式比较有限 , 无法录制出我们需要的音频格式 , 另一方面是在WASM提供了这样的输出音频文件的API之后 , 对于开发者使用起来也特别方便了 , 即使是不太了解音频编码的开发者 , 也可以很容易的输出录音文件 。
对于Web Audio在录音时的使用 , 需要注意它的延时性 , 在不同的浏览器上的表现也有所不同 , 所以在开始录制时 , 一定要把开始的一部分audio sample数据进行过滤 , 这样才能保证配音的时间和时间线对应好 , 确保声画同步 。 配音出来的音频文件同样要上传服务器进行分片转码 。 为了保证web端体验的流畅性 , 需要将录制好的音频文件添加到时间线的音频轨道上 , 进行编辑使用 , 等分片转码完成之后再将轨道上的数据替换成转码后的数据 , 让用户使用起来不会有被中断的感觉 。
3. 服务端技术方案

|美摄云非编系统——网页端实时编辑渲染方案
本文插图

美摄云非编的服务器端的整体框架如图所示 , 总控服务器是负责和web端进行交互的 , 所有web API都是它提供的 , 包括用户信息、素材信息、转码任务、合成任务等 。 另外两个核心的功能模块是转码服务器集群和合成服务器集群 , 这两个服务器集群中的每一台服务器都分别部署了Transcoder Manager和Process Server Manager , 它们接收到总控服务器发送的转码和合成任务时 , 会创建新Transcoder和ProcessServer进程来处理任务 , 完成后退出进程 。
此外 , 转码服务器处理的工作不仅仅是转码分片一项工作 , 其实它还处理了很多前期需要的准备 , 比如生成封面、缩略图 , 音频波形等等 , 并且web reader做了很多的优化 , 避免了传统的reader缓慢读取一些网络视频地址的问题 , 所以转码效率很高 , 并且这些数据生成都是在一整套流程里面完成的 , 不需要二次读取解码等 , 也节省了很多时间 。


推荐阅读