音视频的录制一般分为客户端录制 和 服务端录制。具体怎样选择还要结合自己的业务特点。
最近在做一个音视频相关的项目,一方业务提出希望使用移动端进行视频录制,但是录制后的文件可直接保存到指定服务端,不需要再从客户端本慢慢的用http进行上传。
为甚么要这样做?
服务端录制
优点:不用担心客户因自身电脑问题造成录制失败(如磁盘空间不足),也不会因录制时抢占资源(CPU 占用率过高)而导致其他应用出现问题等;
缺点:实现的复杂度很高。视频录制清晰度和流畅度,会受网络的影响。
客户端录制
优点:方便录制方操控,并且因为本地录像不依赖网络,所录制的视频清晰度高,实现相对简单。这里可以和服务端录制做个对比,一般客户端摄像头的分辨率都非常高的(如 1280x720),所以客户端录制可以录制出非常清晰的视频;但服务端录制要做到这点就很困难了,本地高清的视频在上传服务端时由于网络带宽不足,视频的分辨率很有可能会被自动缩小到了 640x360,这就导致用户回看时视频特别模糊,用户体验差。
缺点:其中最主要的缺点就是录制失败率高。因为客户端在进行录制时会开启第二路编码器,这样会特别耗 CPU。而 CPU 占用过高后,就很容易造成应用程序卡死。同时它对内存、硬盘的要求也特别高;除此之外,一般本地录制完之后,不会就此结束,需要进行上传留档,此过程又会受网络影响出现闪断失败、断电续传、上传缓慢。
WebRTC
上图为WebRTC实现一对一视频通讯的示意图。
录制需要关注的三个问题
-
录制的格式
录制最初是获取原始数据二进制文件,即来什么数据就录制什么数据,这样录制效率最高,不易出错,而且录制方法简单。当然也支持将音频、视频分开录制保存(音频独立保存方便事后