当前位置:网站首页>网易云信亮相LiveVideoStackCon2022,解构基于WebRTC的开源低延时播放器实践

网易云信亮相LiveVideoStackCon2022,解构基于WebRTC的开源低延时播放器实践

2022-08-10 16:33:00 网易云信

8 月 5 日- 6 日,LiveVideoStackCon 2022 音视频技术大会上海站隆重召开,作为音视频领域颇具影响力的技术大会,此次大会吸引了众多行业专家,融汇新概念、新技术、新趋势和新思想,以“音视频+无限可能”为主题,共同探讨音视频未来的新业务、新产品及新场景。

网易云信资深音视频引擎研发工程师 毕伟受邀参加大会,并作《基于 WebRTC 的开源低延时播放器实践》的主题演讲,分享网易云信低延时播放器的设计与实践。网易云信于今年5月已正式开源低延时直播,作为业界首个开源的低延时直播方案,网易云信目前已开源低延时直播的信令交互协议、低延时引擎、播放器插件等内容。毕伟就开源部分内容的精彩分享,获得了与会嘉宾的高度关注和认可。

7843599cf4d724e4b6319a2f36ae22e9.jpeg

网易云信资深音视频引擎研发工程师 毕伟

现状

网易云信推出标准化的低延时直播方案

近几年随着直播行业的爆发式发展,直播延时已经从传统 CDN 直播的 3~5s 步入毫秒级时代。各大低延时直播云厂商都相继推出自己的低延时直播产品,但是这些产品大都基于私有的信令协议和流媒体传输协议,而且跟各家的客户端 SDK 强绑定,无法做到各个厂商之间互相兼容,不利于低延时直播的大规模推广应用。

毕伟强调,为推动整个低延时直播行业的发展,网易云信推出开源的低延时播放器、开放信令和媒体协议,用户可以使用一套 SDK 就可以对接多家低延时直播云厂商的低延时直播服务,且可以自由定制,同时后续通过开源社区的不断完善,可以促进低延时直播的标准化建设,降低开发门槛,进而推动整个行业的大规模应用。

4803443b6c30c1769b4a91afedc56481.png

优化

网易云信基于 WebRTC 的开源低延时播放器实践

“全民直播”到来,直播模式和内容也在不断创新,连麦直播、在线课堂、电商直播等新模式不断涌现。传统直播领域存在着三大指标:首屏时间、延迟、卡顿率。低延迟直播技术的难点在于:如何实现卡顿率持平甚至更优于 RTMP 拉流技术的前提下,大幅降低首屏时间和延迟,从而带给用户更好的直播体验

毕伟介绍到,作为网易智企旗下的融合通信云服务专家,网易云信融合了自身在 CDN 和 RTC 领域多年的技术积累和经验沉淀,结合 WebRTC 标准的媒体流技术,在首屏时间、延迟、卡顿率方面做了深度的优化。

2b9725c83d1aa64eb6528b9d184e2e5b.png

首帧优化

64f785cde694eb28e08ec695a7ea2ef5.png

边缘覆盖,就近接入:网易云信自研的大规模分布式传输网络 WE-CAN,通过对各种资源智能调度,实现全球任意两个媒体服务器之间的快速、稳定传输。极限贴近用户,使用户可以就近接入,提高命中率,减少回源。WE-CAN 起到了对比传统 CDN 更迅捷,更稳定,更智能,覆盖范围更广的加速传输的作用。

支持GOPCache:服务器缓存前一个 GOP。用户订阅流的时刻服务器不一定有关键帧,而发送流必须从关键帧开始,如果没有历史数据缓存,就需要等到下一个关键帧到来才能发送数据,对首帧的影响非常大。因此,网易云信低延时播放器支持 GOPCache,服务器缓存前一个关键帧,订阅流的时刻服务器从前一个关键帧开始发数据,不需要等待。

可选的关闭DTLS:多数直播场景不需要加密,关闭DTLS可以减少建连耗时。

首帧快速重传:接收端是根据序列号是否连续来判断有没有丢包,首个关键帧的前几个包丢失后很难检测出来,会导致首个关键帧组帧失败,这样整个 GOP 都无法出帧解码,只能等到下个关键帧到来,对首帧影响非常大。有 2 种方式可以处理, 一种是服务器通过信令告知首个包的序列号,跟接收到的首个包的序列号进行比较,就知道丢包情况;另一种是接收到第一个包后,不确定前面有没有丢包或者丢了几个包,此时可以以收到的第一个包的序列号为基础,往前请求 10~20 个包,具体请求个数可以根据实际业务场景进行调整,基本上可以解决大部分首包丢失的情况。

首帧快速出帧:视频帧组帧完成后在 JitterBuffer 出帧的时候一般会有一个等待时间,等待时间是根据估算的可渲染时间、当前时间点、帧解码耗时以及渲染耗时计算得来,我们将前几帧的等待时间调整为 0,让前面几帧快速出帧,让播放器能够最快速接收到视频帧进行解码渲染。

网易云信低延时播放器,已经能够将首帧时间控制在 200ms 以内。

9badb7ab0066d0403110ebe38fb65161.png

4eb71a15320af5dd3f2be66191afc76e.png

延时优化

f019e331eaeefd434b6ba3316b269a0d.png

延时优化主要体现在起播阶段,因为 GOPCache 的缘故,服务器会发前一个 GOP 的数据,导致起播阶段延时较大,GOP 越大延时越大,需要通过加速播放的方式来追延时,加速耗时比较长,导致起播阶段很长时间都处于高延迟状态,影响体验。因此起播阶段通过服务器丢帧的方式来处理。具体如下:

客户端订阅流的时候,服务器从 GOPCache 的关键帧开始发数据,当发送到中间某个 P 帧的时候下个关键帧来了,服务器会直接跳到下个关键帧开始发,中间未发送的数据全部丢掉,同时对后续的帧进行时间戳重编,防止时间戳跳跃,影响播放器的逻辑。

播放过程中会利用 NetEQ 的加减速能力来实时控制延时。

92179594f181a33016062df77ebb337e.png

020213f494150f70577af72f9cacaa6f.png

抗性优化

52be9b8090c50b5656c19ebedcbe6686.png

网易云信支持标准 WebRTC 媒体流接入,并通过深度优化 ARQ,FEC,RED 等各类 QoS 策略达到自适应匹配各种复杂网络的能力,在 40% 丢包的情况下,依然能流畅直播。

NACK:优化请求间隔,WebRTC 默认请求间隔是 100ms,对于低延时直播的场景来说请求效率是比较低的,如果 RTT 比较小的情况下,可以根据实际的 RTT 来设置请求间隔。

动态 JitterBuffer:在播放过程中,网易云信低延时播放器会实时统计丢包率、RTT、Jitter 等网络指标,根据这些网络指标来动态计算所需要的 JitterBuffer 大小并进行实时的调整。根据丢包率我们可以算出重传次数,然后根据重传次数和 RTT 来估算需要的 JitterBuffer 大小。

标准 RED:通过增加冗余包的方式来抗丢包。

bf782dfc393f084f7fd06bc3dbd03252.png

未来

网易云信低延时直播助力行业迈入毫秒级时代

随着电商直播的兴起,低延时直播得到了快速发展,但是低延时直播的基础架构建设还不是很完善。随着新的编解码技术的发展(AV1、H266),以及新的直播玩法的升级,现有的技术架构还需要不断地升级调整;而且低延时直播技术门槛比较高,不利于大规模的推广。

目前网易云信已经开源了 Windows 端,接下来会发布移动端版本,更好的支持不同平台的业务。同时会持续优化首帧、延时、弱网抗性等关键性指标,打造更好的直播体验。同时网易云信也会不断推动低延时播放器协议标准化、功能标准化,让它真正成为一个适用于不同业务场景的功能强大的播放器 SDK。未来我们还会推出开源的低延时推流 SDK,为大家提供全链路的解决方案

作为业界首家开源低延时直播方案的厂商网易云信未来仍愿意继续做探路者,并会继续进行功能完善和指标优化,维护好开源社区的建设,降低开发门槛。本次主要开源低延时直播拉流端,未来还会开源低延时直播推流端,旨在降低开发门槛,推动整个行业的快速发展。同时不断探索新的应用场景,助力整个直播行业真正迈入毫秒级时代

原网站

版权声明
本文为[网易云信]所创,转载请带上原文链接,感谢
https://blog.csdn.net/netease_im/article/details/126239580