直播优化
直播优化:
- 网络
- 协议
- 编解码
- 移动终端
网络
- 全局负载均衡-就近接入(CDN)
- BGP(Border Gateway Protocol (边界网关协议))中转架构-最短传输路径
流媒体协议
国内常见公开的直播协议有几个:RTMP、HLS、HDL(HTTP-FLV)、RTP
低延迟: HTTP-FLV > RTMP > HLS
案例(PC网页端):熊猫、斗鱼、虎牙、B站
- UDP:RTP(延迟1秒,浏览器不支持)
单个数据报,不用建立连接,简单,不可靠,会丢包,会乱序;
- TCP:HTTP-FLV、RTMP、HLS
流式,需要建立连接,复杂,可靠 ,有序。
编解码
延迟与卡顿(优化)
-
一是服务端提供灵活的配置策略
对于延时要求更敏感的,则在服务端在保证关键帧的情况下,对每个连接维持一个较小的缓冲队列;对于卡顿要求更高的直播,则适当增加缓冲队列的长度,保证播放的流畅。
-
二是服务端对所有连接的网络情况进行智能检测
当网络状况良好时,服务端会缩小该连接的缓冲队列的大小,降低延迟;而当网络状况较差时,特别是检测到抖动较为明显时,服务端对该连接增加缓冲队列长度,优先保证播放的流畅性。
丢包策略
关于丢包,需要解决两个问题:
- 一是正确判断何时需要进行丢包;
- 二是如何丢包以使得对观众的播放体验影响最小
优化方案: 应该是后台采用逐步丢帧的策略,每个视频帧序列,丢最后的一到两帧,使得用户的感知最小,平滑的逐步缩小延时的效果
移动终端
TBD
参考: