目前,实时音视频通信的实现方案在浏览器上有两种,分别是H5和WebRTC,前者能够拉流观看,后者能够实现推流和拉流。浏览器
在浏览器上实现音视频实时通信,H5和WebRTC是两种可选方案,可是两者有明显的区别,优劣也比较突出。安全
浏览器H5的实时方案有明显的优点和劣势,优点是开发成本比较低,开发周期短,劣势是只能拉流,不能推流,不能实现互动连麦。另外,浏览器H5方案延迟比较大。markdown
若是使用RTMP或者HTTP-FLV协议,延迟会在1秒到3秒之间,若是使用HLS协议延迟会更大,固然也能够经过限制ts分片大小实现较低的延时,太大的延迟是不适合作直播连麦的。可是对于相似大班课和会议的场景,上述媒体协议都是适合的,由于音视频流是单向的,没有延时上感知。编码
尽管浏览器H5方案很是广泛,开发方便可是不能连麦直播。那么在浏览器上能不能实现连麦直播呢?答案是确定的,它就是WebRTC。最先是由谷歌发起的P2P实时通信方案,在Chrome浏览器上进行了长期而普遍的验证,目前不少浏览器都已经支持了WebRTC。spa
WebRTC包括了音频引擎,视频引擎、传输引擎等,其中,音频引擎包括了两个编解码器:iSAC和iLBC,前者针对宽带和超宽带的音频编解码,后者针对窄带音频编解码,其实就是Opus音频编码。音频引擎还包括了回声消除、噪音抑制和自动增益模块。视频引擎包括了VP8和VP9的视频编解码器,目前谷歌正打算推出AV1。视频引擎还包括视频抖动缓冲和图像质量加强等模块。传输引擎的话,WebRTC使用SRTP(Secured Realtime Transport Protocol)进行音视频实时的安全传输。其中,密钥的生成依赖于DTLS协议的协商过程。code
一样,浏览器WebRTC方案也有本身的不足:orm
1)没有自定义模块设置接口,在浏览器端不能实现较好的美颜和贴图效果。视频
2)WebRTC没有统一的信令标准,一方面给了技术方案的灵活性,另外一方面也形成多系统互通时的转换成本。接口
3)音频编码格式和视频编码格式必须依靠WebRTC,不能自行定制化。开发
4)不少流浏览器支持WebRTC不是很友好,存在差别性。