目标:
感知网络环境变化,或根据客户端播放buffer情况自动做出合理的码率调整,提高(最大化)用户在线观看视频的体验质量(qualityof experience, QoE)。
难点:
1.QoE的定量表达:尽可能最大化视频码率的同时尽量减少视频卡顿和码率档位切换。
2.码率自适应调整具有累积效应,前面的码率决策会影响到未来的码率的决策。
一个好的算法需要:1.尽快响应网络变化,2.做最优决策时能兼顾各个指标。
过程:
1.客户端根据当前的网络情况、播放缓冲区大小等因素决定下一个片段的码率档位;
2.客户端执行码率决策向CDN服务器请求对应质量的视频片段;
3.下载,下载的过程中视频缓冲区也同时在播放消耗;
4.客户端进入另一种状态(播放缓冲区大小变化、是否卡顿等),且可以据此评价上一个动作的好坏,然后再重新进行新的决策;如此循环往复,直到结束。
ABR算法分类:
1.Rate-based: 基于预测的吞吐量去决策下一片段的码率档位,例如FESTIVE,这类方法的主要思想是通过历史视频分片下载期间的网络状况来预测未来的网络带宽,进而驱动视频码率决策,例如预测带宽高时选择高码率视频,预测带宽低时选择低码率视频。
2.Buffer-based: 基于客户端的播放缓冲区buffer情况决策下一片段的码率档位,例如BBA、BOLA。
3.Hybrid: 混合模式,同时考虑预测吞吐量和buffer信息决策下一片段的码率档位,例如MPC.结合了两者信息的算法可以获得相对较好的效果,但其非常依赖于带宽预测信息,在带宽变化剧烈的场景中,准确预测带宽是非常困难的。
4.强化学习
如何估计带宽?
1.滑动窗口:简单。
单个噪音的干扰信号就比较强;波动性大;探测数据会浪费带宽;历史数据的预判性低。
2.RTT(Round-Trip Time):往返时延。RTT越大带宽越小。值易获取。
网络距离远时会误判;噪声大;实际上下行网络不一定对称
3.buffer:直观。
不适用UDP;低延迟场景下不适合缓存较多数据量;buffer量很难控制大小
4.丢包:简单。
噪声大;丢包可能并非因为带宽不够;预判性低
5.网络排队延迟:复杂网络环境下很难估计;波动大