我们为很多实时互动场景提供了服务。在一些场景中,用户不仅需要实时互动,还需要把互动的过程录下来。那么一个好的录制解决方案究竟需要具备哪些特征呢?
在回答这个问题之前,先聊一下客户使用录制的原因。一般来讲,用户使用录制功能的原因主要有三种:
1. 质检。 比如在教育场景下,需要通过回放录制来检查课程质量,在社交直播或金融双录场景下,需要保留录制视频,做合规性审查。
2. 留证。 如教育、医疗、音视频客服等场景,需存档留证以应对可能的纠纷。这种场景下,对录制方案的核心诉求是内容完整性,不能容忍哪怕是秒级的视频丢录。
3. 回放。 比如在教育场景、直播场景下,用户希望观看回放。这也是大多数实时互动场景里使用录制的主要原因。
那么在这种场景下,怎样才算是一个好的录制解决方案呢?
可以从五个维度来衡量录制方案:
- 录制效果:需要还原真实的互动场景,包括音视频、课件、白板、聊天信息等所有元素。同时,不能对主播音视频互动体验造成任何负面影响。
- 集成难度:越简单越好,最好是不需要开发。
- 等待时长:等待时长越短越好,最好是录制结束后可以立即回放。
- 文件兼容性:任何平台、任意浏览器都可以播放。
- 文件迁移的便利性:文件下载、上传等迁移过程要非常简单,便于录制文件管理。
为了解决各种场景的录制需求,目前有两种比较主流的方案。
一、音视频、白板等元素分别录制,然后拼接回放
主要思路是将音视频、白板、课件、PPT、聊天内容等分别录制下来,录制结束后再分别回放,并通过时间戳对齐播放进度。这种方案的好处是,白板、课件、聊天内容等均以数据形式回放,可以保留原有的真实互动效果,例如 PPT 可以单独翻页,灵活性较好。但其缺点也非常明显:
1. 集成难度大。 需要同时开发音视频录制、白板录制、聊天内容的录制,特别是各不同元素需要通过时间戳对齐回放,要做到非常好的同步效果需投入较多开发精力。
2. 播放兼容性受限。 这种方式只能通过特殊播放器来回放,无法很好地兼容主流播放器。
3. 等待时间长。 为了解决播放兼容性问题,往往需要在录制结束后进行离线处理,转成一个完整的 MP4 文件,这个过程等待时间较长,还会带来额外的转码成本。
二、本地客户端录屏
不管是本地客户端录制,还是通过屏幕共享将屏幕流发送到云端进行录制,其本质都是在用户的本地客户端上捕获屏幕内容。这种方案的好处是所见即所得,回放效果跟真实互动场景可以保持一致。但其缺点也是相当明显:
1. 影响本地用户的 RTC 互动体验。 本地捕获屏幕内容会极大地消耗终端设备的计算资源,如果要实时上传,还会占用主播上行的带宽资源,这些都会影响本地用户的音视频通话体验甚至会出现卡顿、模糊等严重的后果,这对一个实时互动场景来说是难以接受的致命缺陷。
2. 集成难度大。 开发者需要在端上进行开发,需要解决文件本地存储、上传等问题,往往还需要处理复杂的混音问题,集成门槛非常高。
除了以上两种主流思路,是否还有其他更好的方案呢?
声网Agora提出了第三种新思路:页面录制
页面录制是指通过 Web 页面渲染的方式, 在服务端同步录制音视频、白板、课件以及聊天信息等,还原真实的互动场景。其原理是:开发者通过 RESTful API 发起录制请求,并将待录制页面的 URL 以请求参数的形式发给 Agora 录制服务,Agora 录制服务会打开该Web页面,并以录屏的方式实时录制生成 MP4 文件,上传至指定的第三方云存储平台。具体 页面录制 文档,可点击「阅读原文」浏览。
根据此前录制方案判断维度,将页面录制与此前我们列举的录制方案相比:
- 在集成上,通过Restful API发起请求录制,简单易用。
- 录制效果实现所见即所得的,将音视频、白板、课件以及聊天信息等内容全部同时录制下来,且不带来额外的带宽、性能开销,录制过程不影响任何主播/观众的RTC互动体验。
- 录制结束后,可以实时生成MP4文件,兼容各主流播放器。
- 文件下载非常简单,便于录制文件管理。
同时,页面录制具备录制任意网页页面的能力,所以用 WebRTC 或其它方案自研 RTC 功能的开发者同样可以使用。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。