互动直播场景下的视频核心技术实践 | WebRTC编风网
0

互动直播场景下的视频核心技术实践

已有 416 人阅读此文 - - 网易视频云(微信ID:vcloud163) - 朱玲

一、用户需要什么样的互动直播?

通过长期的用户调研和市场研究,网易视频云发现互动直播用户最为关心的有三个问题:

低延时:延时最大不超过200ms,当然越小越好;

流畅:每秒最少十几帧,24fps~30fps,接近电影、电视的播放速率 ,用户体验佳;

清晰:用客观标准衡量的话,当视频编码后与原始视频的峰值信噪比。要高于30db,主观感受清晰。

那么,首先需要解决的就是低延时问题。延时指的是端到端延时,包括发送端、网路传输、接收端播放延时,其中延时占比最大的是传输延时。市场上很多直播服务采用了RTMP/TCP协议,将视频数据流封装成FLV格式进行传输,TCP协议在网络OSI模型中属于传输层协议,通过拥塞控制、流量控制等算法实现可靠链接。然而TCP协议中通过丢包重传、拥塞避免等算法来做拥塞控制,虽然保障了传输的可靠性,延时也在增大。一些公司通过修改TCP协议栈来解决延时问题,网易视频云在互动直播方面选择了UDP作为传输协议。

UDP协议本身没有QoS,在流畅度方面存在一些问题。网易视频云给出的解决方案是通过RTP/RTCP半传输半应用层协议来实现可靠传输控制方案。一方面,RTP标准协议是为了传输实时多媒体应用而生的,有着丰富的扩展以及补充协议,弥补了UDP协议的不足;另一方面,思科、Google普遍采用这种方案来实现传输流控,可以说这是一种工业界的标准,更适用于第三方标准应用对接。

1

针对用户的基本需求,为满足和提升用户体验。网易视频云自主研发了一整套的视频流传输架构,视频采集后经过编码,RTP封装,发送RTP以及RTCP的sender report到对端,对端在接收、解码过程中,将流量监控信息实时通过标准RTCP协议反馈给发送端,进行编码以及发送的控制。

二、视频传输在实践过程中遇到了哪些挑战?

在实际的视频传输过程中,往往还会遇到很多意想不到的问题,比如受限于编码器对不同内容图像的编码效率以及压缩率不同,RTP包的产生并不是均匀的,往往会有burst;在IP网络中,各个分组从发送方到接收方所历经的网络途径可能不同,从而各个分组的传输时延也各不相同,甚至容易发生分组的到达次序发生变化;最终在接收端出现乱序、延时抖动、丢包等,用户端出现卡顿、花屏、无法播放等一系列问题。

2

网易视频云主要从三个方面来解决这些问题,即平滑发送、抗丢包、抗抖动。

首先是平滑发送。在发送端维护一个rtp数据包buffer,一个发送优先级队列,当rtp数据包产生后并不是立刻发送,而是存放到buffer中缓存,并开启一个发送定时器线程,将数据包从数据buffer中取出,存放在优先级队列中,进行发送,我们在发送之前,会进行网络探测,根据探测到的可用带宽,自适应的调节发送速率。

其次解决丢包问题。网络丢包分为两种情况,一种是网络中存在的固有,随机丢包,譬如联路层的传输误码,另一种是网络拥塞丢包。针对这两种不同的丢包,应该采用不同的解决方法,一种是前向纠错更正FEC, 另一种是ARQ自动请求重传。对于互动这种这种延时敏感的应用场景,网易视频云选择FEC作为丢包解决方案。

“为了解决丢包问题,我们的思路是尽力传输的基础上进行拥塞控制,尽量避免发生拥塞丢包,当联路存在不可避免的随机丢包,通过FEC,增强传输的鲁棒性;利用接收端反馈信息,估计当前可用带宽,避免拥塞;编码器在当前估计的可用带宽下,选择合适的编码策略,达到带宽利益最大化传输。”。

再次解决延时抖动问题。也就是延时抖动导致的播放不流畅问题。

三、网易视频云是怎么解决的?

网易视频云解决拥塞问题的思路:在接收端根据流量监控,实时反馈当前网络联路状况,反馈给发送端,发送端根据反馈的丢包信息,添加合适的冗余包,并结合接收端发送的带宽估计信息,估计当前的可用带宽,并进行视频编码控制。

3

除了丢包问题,影响直播体验的另一个常见情况就是延时抖动。所谓抖动,就是每个数据包到达对端的时间延时是动态变化,可能由于路由联路的选择变更,网络拥塞等造成,它的直接后果就是,会导致对端播放的不流畅。为了解决抖动问题,网易视频云在接收和播放中引入了JitterBuffer的策略。

总结,实验以及线上用户的统计数据表明,网易视频云的互动直播产品完全满足用户需求,平均延时在网络较好情况下,端到端延时控制在200ms左右,在网络不稳定丢包率在20%以内,网易视频云依然能提供较为流畅清晰的视频体验。

 

2
相关文章!