白板回放 & 与音视频对齐原理
1. 白板怎么录制的
当客户创建房间的时候声明为 historied
时,房间互动的同时 netless 会启动一个实例去把白板中发生的一切行为都序列化存储为二进制文件,并且严格打上 UTC 时间戳。
因为我们和音视频不在同一个服务器上面参数录制文件,所以必须要有一个公共的基准为参考系才能完全对准。我们都采用了 UTC 的绝对时间戳左右公共参考系。
2. 白板怎么回放的
白板录制的内容保存方式并不是视频而是一种私有的结构化数据,可以类比为 dota2 或者 LOL 的回看。把在白板中的元素和动作按时间序列重新播放一遍。
3. 为什么选择这个方案
- 录制成视频必然要执行编码过程,cpu 开销大费用昂贵。
- 高清低流量,录制成本相对较低。
4. 怎么使用云录制
4.1 上课的时候我们需要做什么
- 开始上课的流程是:1. 创建白板 2. 老师加入 3.老师打开视频 4. 学生加入 5. 开始上课并且录制。
- 结束上课的流程是:1. 点击结束录制 2. 退出教室。
所以录制需要做三件事 1. 开始录制时再服务器记录一下 UTC 时间 2. 结束录制的时候在服务器记录一下 UTC 时间。 3. 获取音视频录制的 url
4.2 回看的时候我们需要做什么
将上述三个重要的值传入一下方法
const player = await whiteWebSdk.replayRoom(
{
room: uuid,
roomToken: roomToken,
mediaURL: mediaUrl, // rtc 厂商返回的录制媒体数据
beginTimestamp: beginTimestamp, // 记录的开始 UTC 时间
duration: duration, //(结束 - 开始)
}
)