火山引擎 RTC 视频性能降级策略解析

动手点关注

0febae6eb38368997ee23e3305615705.gif

干货不迷路

1.  背景

随着 RTC 使用场景的不断复杂化,新特性不断增多,同时用户对清晰度提升的诉求也越来越强烈,这些都对客户端机器性能提出了越来越高的要求 (越来越高的分辨率,越来越复杂的编码器等)。但机器性能差异千差万别,同时用户的操作也不可预知,高级特性的使用和机器性能的矛盾客观存在。当用户机器负载过高时,我们需要适当降级视频特性来减轻系统复杂性,确保重要功能正常使用,提升用户体验。

视频性能降级能做什么?

一是解决因设备性能不足、突发的性能消耗冲击(如杀毒软件)带来的用户音视频体验问题(如视频卡顿、延时高、设备卡死)等问题;

二是提升一些高级功能的渗透率,例如默认情况下开启视频超分,设备性能不足的情况下主动关闭;

三是降低部分场景的设备功耗,例如当电脑使用电池供电的时候,通过关闭视频超分、降低视频帧率等方式主动降低一些功耗。

2.  前置基础

RTC 提供了一种性能降级机制,在性能负载过高时,触发降级;在性能负载降低后,触发升级。一套完整的性能降级方案,需要产品具备一些基本的降级能力,比如:支持动态修改视频分辨率、帧率,支持发布多路视频流(simulcast),支持 SVC,支持按需发布/订阅等。

2.1 Simulcast

关键词:同样的视频源,多种分辨率,差异化的分辨率需求

所谓 Simulcast,就是将一个视频源输入编码输出成多个分辨率的视频帧,在发送端编码多路不同分辨率的大小流,下行接收端可以选择订阅其中任意一种分辨率的同源视频流。它可以满足多人通话场景,不同用户对于分辨率的差异化需求。在实际应用中,Simulcast 变得更加灵活多变,发挥的作用也越来越大。除了满足用户差异化的分辨率需求外,还可以有效解决下行弱网/性能问题,提升用户体验。比如在下行用户网络交较差或者性能较差时,可以给用户转发低分辨率的视频,确保用户可以拥有流畅的观看体验。

331470a1eaacf3614a30facb0bc8fd4d.png

2.2 SVC

关键词:单路流,分层编码

SVC(Scalable Video Coding, 可适应视频编码)是指,条视频码流可以分成多个层级(layer) 在保证整条流的可解码性的情况下,用户可以根据层级的优先级选择丢弃某些层级的全部或部分片段,得到不同帧率(temporal / 时域)/分辨率(spatial / 空域)/ 画质(quality / 质量)的视频流。

bf6074744f2f1e4b04a6515405919e5f.png

2.3 按需发布

按需发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值