服务质量通俗来说就是从用户的的角度对音视频产品整体的感官体验, 包括音视频的清晰度、流畅度、实时性、带宽消耗等用户能直接感知到的和感知不到的一些指标. 其目标就是达到用户线下面对面交流的效果.
服务质量受多方面影响, 如下图:
-
提高网络质量, 当通过该手段仍然无法提高服务质量的时候, 我们可以增加网络带宽
-
NACK/ RTX
-
FEC
-
JitterBuffer
-
NetEQ
-
增加带宽, 该手段并不完全属于webrtc
-
接入5G 网络
-
在服务端提供更优质的接入点, 此时webrtc需要做的就是连接那个最优的接入点, 这里就需要服务端和客户端之间做一个配合
-
如果是一个会议系统, 就应该保证云端每个服务器之间的数据传输延迟是非常小的
-
在云端应该有一个合理的调度算法, 对于webrtc来说, 需要配合云端的各种运算, 将本地监控的数据传给云端, 以帮助云端作出更合理的调度和处理
-
当带宽一定且服务质量无法在提升的情况下, 为了保证通讯的实时性, 此时需要做的就是减少数据量, 实时通信的延迟指标是实时通讯中的最重要的指标. 较少数据量也就是降低视频的清晰度.
-
采用先进的编解码器, 例如: AV1、H265
-
采用SVC和Simulcast技术
-
使用动态码率, 当带宽不足的时候就将码率降低, 反之提高码率
-
较少业务、丢包来减少数据量, 丢包并不一定服务质量差的表现, 反而在一些情况下丢包是提升服务质量的手段, 比如一端无法及时将数据传给另一端的时候, 可以通过丢包的手段丢弃一些数据, 虽然画面会卡顿但是可以声音的质量, 满足线上沟通基本需求.
-
适当的增加延迟, 虽然数据实时性是服务质量的一个重要指标, 但是还应该知道, 只要延迟小于200毫秒, 那么通讯质量就是比较优质的. 也就是说当带宽不足的情况下, 可以将延迟增加至400毫秒(可以接受的范围), 来保证数据的流畅性和平滑度.
-
pacer
-
增加缓冲区大小
-
准确的带宽评估, 是最核心的方法, 之后带宽评估准确性能够保障, 才能更充分的利用带宽, 例如实际带宽有2M, 而评估出来的带宽只有1M, 那么传输带宽达到1M后就不会在提高带宽, 1M带宽也就被白白浪费, 如果实际带宽有2M, 而评估出来的带宽有4M , 那么传输的数据量就会直接把带宽堵死.
-
transport-cc 带宽评估算法
-
goog-remb 带宽评估算法