TSINGSEE青犀视频如何通过webrtc-client实现超低延时的安防直播?

视频流媒体系统发展到现在,已经度过了高速发展的时期,目前直播所遇到的瓶颈就是,传统的直播技术延迟非常大,通过多媒体技术降低直播延迟、提高实时互动效率是我们TSINGSEE青犀视频团队研究低延迟直播技术的新目标。

我们对当前主流直播技术做了分析,在低延迟直播技术出现前主要有 HLS 和 RTMP/HTTP-FLV 两个协议。

HLS:延迟主要来自编码解码时产生延迟、网络延迟、CDN分发延迟。由于它是切片协议,延迟分两大块,一个是服务端有切片缓冲延迟,另一个是在播放端防抖缓冲会有延迟。切片的大小和数量都会影响 HLS延迟大小,一般在十秒以上。

RTMP/HTTP-FLV: 目前国内大部分厂家在用的 RTMP,它相对于HLS在服务端做了优化。RTMP服务端不再进行切片,而是分别转发每一帧,CDN分发延迟非常小。RTMP延迟主要来自播放端防抖缓冲:为提升弱网环境下抖动时直播的流畅度,缓冲延迟一般有五到十秒。

这两类协议都是基于TCP,国内厂商基本上已经将RTMP over TCP的延迟做到了极致,如果一个协议仍然基于TCP优化延迟,效果上很难优于目前的RTMP。TCP由于其自身的一些特性,并不适用于低延迟直播场景,主要原因如下:

  • 重传慢:TCP的ACK确认机制,丢包后发送侧超时重传,超时时间一般是200ms,会造成接收侧帧抖动。

  • 拥塞判断不准确:基于丢包的拥塞控制算法无法准确判断拥塞,丢包并不等于拥塞;也会造成发送链路 bufferbloat,链路 RTT 增大,延迟增加。

  • 灵活性差:这是最主要原因,TCP 拥塞控制算法在操作系统内核层实现,优化成本较高,移动端只有利用系统已有的优化。

基于上述分析,我们准备开辟一条新的道路来解决低延时问题,这条道路就是WebRTC,通过WebRTC实现低延时直播。

对于WebRTC的开发目前已经完成了大的框架,接下来正在优化细节的把控,我们的处理流程是:

现场进行设备接入,拉取设备流,云端部署我们最新服务用户接入现场传输过来的视频流,通过WebRTC的技术进行低延时化处理。通过目前内部测试的效果,对于普通的安防设备,延时可以有效的控制在300毫秒,这个就可以让客户有个很好的用户体验了。

原文地址:https://www.cnblogs.com/TSINGSEE/p/14344047.html