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

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

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

现状

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

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

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

优化

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

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

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

首帧优化

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

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

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

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

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

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

延时优化

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

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

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

抗性优化

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

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

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

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

未来

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

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

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

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

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

  1. 网易云信亮相LiveVideoStackCon 2019,解读移动端播放器优化实践

    4月19日, LiveVideoStackCon音视频技术大会在上海隆重举办.本届会议以"多媒体技术赋能新世界"为主题,汇集资深的音视频技术工程师,聚焦音频.视频.图像.AI等技术 ...

  2. Linux下基于Libmad库的MP3音乐播放器编写

    linux下基于Libmad库的MP3音乐播放器编写 libmad是一个开源mp3解码库,其对mp3解码算法做了很多优化,性能较好,很多播放器如mplayer.xmms等都是使用这个开源库进行解码的: ...

  3. 基于Android的MediaPlayer的音乐播放器的封装

    基于Android的MediaPlayer的音乐播放器的封装 使用过android原生的mediaplayer来做音频播放的同学们,肯定是经历过一些痛苦的,因为android提供了一个状态机,确实这个 ...

  4. android媒体播放器设计报告,基于Android的多媒體播放器课程设计报告.doc

    基于Android的多媒體播放器课程设计报告 基于Android的多媒体播放器课程设计报告 (2014-01-02 22:46:52) HYPERLINK "javascript:;&quo ...

  5. html音频从10秒播放至30秒,基于Arduino制作SD卡音乐播放器

    一.项目介绍 前面用ATtiny85制作SD卡音乐播放器,本次主要利用Arduino UNO 和SD卡制作音乐播放器.这个播放器不需要添加多余的模块,只需要SD读卡器和Arduino UNO开发板就可 ...

  6. 基于HLS格式的低延时互动直播技术

    在不牺牲服务质量(卡顿率.画面清晰度)的前提下,越低的延时能带来越好的互动性用户体验.为达成可扩展性.服务质量.互动性的三赢,Twitch团队研发了基于HLS格式的低延时互动直播技术.本文来自Twit ...

  7. 嵌入式linux音频播放器设计,基于嵌入式Linux下Madplay音频播放器设计论文.docx

    基于嵌入式Linux下Madplay音频播放器设计论文 滁州职业技术学院计算机应用技术专业毕业论文PAGE I 滁州职业技术学院信息工程系--2015届计算机应用专业毕业论文 姓 名: 周杰 班 级: ...

  8. alin的学习之路:嵌入式课程设计总结(基于Linux的Qt版MP3播放器)

    嵌入式课程设计总结(基于Linux的Qt版MP3播放器) 废话不多写直接上图上代码,其中有很多不规范的地方,希望大佬们指正. 1.课设题目 设计一个MP3播放器,要求:使用Linux下的madplay ...

  9. vb毕业设计——基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码)——媒体播放器

    基于vb+VB.NET的媒体播放器设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于vb+VB.NET的媒体播放器设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦. 文章目录: 基于 ...

最新文章

  1. redis sentinel哨兵模式集群搭建教程
  2. redis的安装和运行
  3. linux签名服务器,linux – 如何在远程服务器上使用gpg签名密钥?
  4. PHP中的dirname
  5. 使用Gradle的maven-publish插件发布快照
  6. 第九十六期:JavaScript 中的 4 个相等比较算法的介绍
  7. Gdiplus::GdiplusBase::operator new 函数不接受3 个参数问题的处理
  8. Apollo进阶课程 ④ | 开源模块讲解(下)
  9. 记录使用IDEA部署Tomcat时提示错误:the selected directory is not a TomEE home
  10. Matlab中fixdt数据类型
  11. 审计风险控制流程的起点_【经验分享】审计整改流程体系的优化措施
  12. 我一定要让所有人都知道awk这个实用操作
  13. Python 数据结构与算法——引用计数
  14. .NET开发必看资料53个+经典源码77个(转)
  15. #9733;色盲悖论正解!
  16. 一文搞懂CAN FD总线
  17. 《Dreamweaver CS6 完全自学教程》笔记 第十七章:Spry 框架技术
  18. 软件技术共享社区正式上线
  19. Linux 脚本大师不是人人都可以达到的,但Shell编程基础还是有必要掌握的
  20. Python实现RSA加密算法

热门文章

  1. 软件分享 | office2010
  2. 配色+图片+设计网址收藏
  3. 微信小程序 java网上宠物用品商城系统springboot
  4. python量化投资视频_【邢不行|量化小讲堂系列21-Python量化入门】「视频讲解」浅谈机器学习与量化投资...
  5. 基于JAVA西安财经大学校园一卡通管理系统计算机毕业设计源码+数据库+lw文档+系统+部署
  6. 使用 Play with Docker 部署 ABT 节点 | ArcBlock 博客
  7. 智能安防赛道上,云从科技是展翅高飞还是落地成盒
  8. c语言赵乘麟答案,申报材料-湖南省高等学校精品课程网.doc
  9. 常见频率f与周期T之间的关系
  10. 什么是SR-IOV?先用起来再说