录屏与重放

主流的录屏软件一般通过截获操作系统底层的 API 将绘图句柄或采集视讯端输出获得帧数据,再通过视频压缩技术将影像转为二进制文件进行存储及传输。但是这也随之带来以下几个问题:

  • 无法静默录屏:现有的录屏软件不支持通过 API 调用,同时需要在每一位客服小二端安装录屏软件或插件;

  • 操作系统及终端限制:录屏软件通常只适用于特定操作系统,无法适用于全平台操作系统,更无法用于移动设备;

  • 对性能及带宽影响:由于 MP4 格式需要利用 CPU 进行编码及压缩,同时需要将压缩后的数据实时上传至服务器因此对客户端的性能及带宽都有较明显的影响;

  • 全量录屏受制于存储及质量:MP4 格式的压缩及播放质量不可兼得,以 8 小时工作计算,即使用中低码率进行录制压缩,一名小二每天将产生 48 GB 以上录屏数据;

  • 不利于后续数据分析:视频影像数据不利于将来做大规模结构化分析及统计,更无法满足风控需求。

这一类产品利用 HTML 5 的 Mutation Observer 技术侦听 HTML DOM 的变更事件,同时通过截获 Document、Winodw 对象上的全局鼠标操作、滚动等事件捕获用户操作,然后再将事件拼接成 JSON 帧对象并通过 WebSocket 实时上传至服务器。播放时,客户端将自服务器传回的帧数据按照相对时间重新还原到新的 HTML DOM 中,从用户的视角看,就像真的录屏视频一样逼真。由于录制及播放的都是 HTML,因此网页录屏方案的还原度几乎可在 99% 以上,数据量也大幅降低。

但是这种录屏方案也存在着一些问题,例如时长限制。由于现有产品均为针对问题反馈、用户体验研究设计,最佳录制时长在 5 分钟以内。其根本原因是此类录屏记录的是“单向增量数据”,每一帧的播放都前项依赖于此前所有的帧数据表现,每一次向前跳转时均需要将此前所有事件完整的执行一遍,这使得长视频的随机跳转几乎成为不可能。