rainzhaojy / blogs

200 stars 28 forks source link

怎样构建高质量的实时音视频应用? - QoS技术 #5

Closed rainzhaojy closed 5 years ago

rainzhaojy commented 7 years ago

QoS是实现高可靠的视频应用必不可少的部分, 也是音视频应用里最复杂的部分, 没有适用所有情况的QoS方案, 根据各种不同网络情况, 需要采取不同的QoS策略, 这是一个长期的持续改进的过程.

可以用于改善音视频质量的方案有:

相关的规范有:

常见网络问题

网络可能有如下问题:

  1. Jitter
  2. Delay
  3. Packet loss
  4. Out of order
  5. Burst
  6. 4G/wifi网络切换,wifi固定丢包,wifi burst,4G/wifi弱网丢包

不同的网络状况可以采用不同的QoS策略,譬如有些wifi带宽没有问题,但有一个固定丢包率,这时就适合采用FEC策略。

带宽评估

在具体确定QoS策略时首先要能定位当前的网络状况,评估带宽的常见做法是基于RTT和丢包率。

Adaptive bitrate

视频码流应该遵循这样的原则:在网络带宽允许的情况下提供尽可能好的视频质量。当带宽够用时,可以适当提供高码流高分辨率的视频,当网络拥塞时,应该降低码流和分辨率,码流调整应该遵循快降慢升的原则。

丢包重传:

Negative Acknowledgement (NACK), Full Intra Request (FIR), Picture Loss Indication (PLI), and Slice Loss Indication (SLI)

FEC

通过发送冗余包实现前向纠错,好处是不影响延迟。

Simulcast and SFU

image

QoS in WebRTC

WebRTC应用里的QoS策略和决策都是在Server端。