0. Abstract
- 自适应码率(ABR)流的首要目标是通过根据网络状况动态调整视频码率来提升用户体验(QoE)。然而,在网络波动时(尤其是直播场景下缓冲区较短),频繁的码率切换会导致用户对视觉质量的不一致感到困扰。本文提出了一种既可部署又能显著平滑视觉质量波动的“平滑优化动态自适应”(SODA)控制器。SODA不仅具备严格的理论性能保证,在数值仿真中相较于最优基线提升了 9.6%–27.8% 的 QoE,在原型环境下提高了 30.4%,在 Amazon Prime Video 的生产环境中减少了多达 88.8% 的码率切换,并将用户平均观影时长提升了 5.9%。为保证可大规模部署,SODA 在多项式时间内完成“码率前瞻规划”,相较于指数复杂度的暴力搜索,实测仅需约 200 次迭代即可出结果。
1. 引言(Introduction)
随着在线视频的普及,用户使用的观看设备非常多样:笔记本、手机、智能电视、机顶盒、游戏主机等,这些设备的硬件能力和网络接入方式(Wi‑Fi、蜂窝、宽带等)均不同。为保证所有用户的高质量体验(QoE),视频服务商采用自适应码率(ABR)技术:将同一视频以不同码率(如 720p、1080p、1440p……)分别编码,并将视频切分成若干短片段(例如每段 2 秒);客户端播放器根据实时网络和设备情况为每个片段选择合适码率,并将下载到的片段存入缓冲区后再播放。
已有研究表明,用户 QoE 取决于三大要素:
- 视频质量(码率越高、分辨率越大,画面更清晰);
- 重缓冲时长(播放中断越少);
- 码率切换频率(切换越频繁,视觉体验越不稳定)。
例如,重缓冲时间每增加 1%,平均观影时长就会减少近 3 分钟,而频繁的码率切换会显著提高用户放弃观看的概率¹。
相比点播(on‑demand)场景,直播 缓冲区一般只保留 10–20 秒内容(以紧跟直播源),而点播可达 60–180 秒。这使直播对重缓冲和码率切换更敏感——较短的缓冲区意味着即便微小的带宽波动也会触发频繁切换。图 1 显示,在一个大型体育直播事件中,若码率切换率超过 20%,用户仅会观看不足 10% 的总时长。
本论文针对这一难题,提出了 SODA 控制器,主要贡献包括:
- 理论基础:首次将“画质”、“重缓冲”与“切换平滑”三者纳入同一优化框架,并证明算法在在线情况下(无未来带宽完美预知)仍能接近离线最优。
- 仿真与原型评估:数值仿真 QoE 提升 9.6%–27.8%;原型评估 QoE 提升 30.4%。
- 生产部署:在 Amazon Prime Video 真实用户上,码率切换减少 88.8%,平均观看时长提升 5.91%。
- 对吞吐量预测错误的鲁棒性。
- 多项式时复杂度:设计近似求解器,在可接受的 200 次迭代内完成前瞻规划,适合资源受限设备。
2
3. 方法
3.1 公式1
- $\omega_ n$: 平均网络吞吐量(bandwidth),表示在该时段内,客户端实际可用的下载速率,单位通常为 Mb/s
- $r_n$: 所选码率(bitrate),播放器为该时段选择的编码码率,同样以 Mb/s 为单位。
- $x_n$: 缓冲区时长(buffer level),表示到时刻 n 时,播放器内已下载但尚未播放的视频时长(秒)。
- $r_ {min}, r_ {max}, x_ {max}$分别为:可选码率的上下限,缓冲区最大容量(秒)
$$
\sum_{ n = 1 } ^ N \big( v ( r_ n) \cdot \frac{\omega_n \Delta t}{r_ n} + \beta \cdot b( x_ n ) +\gamma \cdot c( r_n , r_ { n-1 }) \big)
$$
1) 画质代价:$v ( r_ n) \cdot \frac{\omega_n \Delta t}{r_ n}$
$v(r)$: 失真成本函数(distortion cost),要求是“正的、随着 r 增大严格下降且凸”的函数,用于模拟编码扭曲, 例如$ 1/r$ 或 $log(r_{max} / r)$。
$\frac{\omega_n \Delta t}{r_ n}$ : 在时段 n 内实际下载的视频时长(秒)。分子为下载量,除以每秒 Mb 即码率 $r_ n$ 可得下载的视频时长。
含义:$v$越小(码率越高,画质越好),但同时下载量固定时,高码率要更多带宽开销。两者乘积即“该时段内因选择$r_ n$而产生的总失真代价”。
直观:越高码率、失真越低;但若带宽不足($\omega_ n < r_n$),下载时长会受限。该项鼓励使用高码率。
因为每个时间格下载的视频量是 ω^ Δt\hat\omega,\Delta tω^Δt,而每单位视频需要 r /(ω^ Δt)!r!/( \hat\omega,\Delta t)r/(ω^Δt) 的码率,所以真实画质损失要乘以 ω^ Δt/r\hat\omega,\Delta t/rω^Δt/r。
2) 缓冲稳定代价:$\beta \cdot b(x_ n )$
$\beta > 0$ : 用户偏好权重,越大越重视保持稳定缓冲。
$b(x)$: 缓冲成本函数,围绕一个“安全目标缓冲水平 $\bar x$ 做二次惩罚:
$$b(x_ n ) = \left { \begin{matrix} ( \bar x - x_ n )^ 2 &x_ n \leq \bar x \ \epsilon (x_ n - \bar x )^ 2 &x_ n > \bar x , 0< \epsilon < 1 \\end{matrix}\right.$$
- 当$x_ n \le \bar x$ 时,缓冲不足,惩罚较重;
- 当 $x_ n > \bar x$时,缓冲过多,惩罚较轻(因超额缓冲虽能防止重缓冲,但会增加延迟和带宽占用,故轻罚)。
目的:间接“最小化重缓冲”。
直接对“零缓冲”做硬惩罚会导致非凸、难以优化;而平滑二次惩罚既保证凸性,也让缓冲接近非零安全区。
3) 切换代价:$\gamma \cdot c( r_n , r_ { n-1 })$
$\gamma > 0$: 用户偏好权重,越大越不喜欢频繁切换。
$c( r_n , r_ { n-1 })$ : 码率切换成本,例如可以取 :$( v(r_ n) - v( r_ { n - 1 }) )^ 2$ 或 $( r_ n - r_ { n - 1 } )^ 2$ 或其他单调递增度量。
含义:若相邻时段码率变化大,带来视觉抖动,代价增大
作用:在保证画质和缓冲的同时,平滑观感——避免“画面突然清晰↔模糊”带来的不适。
3.1 公式2
- 为了让$x_ n$ 正确演化,需满足:
$$
x_ n = x_ { n - 1 } + \frac{ \omega_ n \Delta t}{ r_ n } - \Delta t , x_ n \in [ 0 , x_ {max } ]
$$
1)缓冲动态约束
下载项 $\frac{ \omega_ n \Delta t}{ r_ n }$该时段新增缓冲。
播放项 $\Delta t$:用户在该时段持续播放 Δt 秒视频,消耗同等缓冲。
边界:如果$x_ n$掉到 0,就发生重缓冲(空缓冲);如果超过 $x_ {max}$,则浪费或增加延迟。
为什么采用基于时间的公式?
为何不直接建模重缓冲?
3.2 纳入吞吐量预测
上面的公式需要知道每个时刻的吞吐量(带宽),正确预测每个时间的吞吐量至关重要。
SODA 的设计与传统的段为基础的自适应码率(ABR)控制不同。传统的 ABR 控制器(如 MPC 和 Fugu)常常将带宽预测与码率选择交织在一起,这导致了 因果依赖问题。具体而言,它们的带宽预测有效期依赖于所选择的码率。即当选择低码率时,带宽预测有效的时长较短;而选择高码率时,预测的有效期则较长。这样一来,带宽预测就受到决策的影响,难以保持一致性,尤其是在带宽波动较大的环境下。
SODA 通过 时间为基础的建模 设计来解决这一问题,它将每个时间区间的带宽预测独立于所选码率进行处理。这意味着,SODA 选择的码率不会影响带宽预测的有效期,进而避免了因果依赖的问题。
例子设置
- 段时长 L=2L=2L=2 秒
- SODA 预测窗口:未来 K=3K=3K=3 个时间格,每格长度 Δt=2\Delta t=2Δt=2 秒,总共 6 秒
- MPC 预测窗口:未来 K=3K=3K=3 段
- 假设带宽预测恒定:ω=3\omega=3ω=3 Mb/s
- 当前缓冲后上一次选的码率(即 rn−1r_{n-1}rn−1 或 MPC 上一次的初始码率) = 2 Mb/s
我们让两者都做 “下一步码率” 的决策。
一、SODA(时间为基础)
预测输入
SODA 拿到一个长度为 KΔt=6K\Delta t=6KΔt=6 秒的带宽预测:3,3,3⏟每个 2 秒 格 Mb/s \underbrace{3,3,3}_{\text{每个 2 秒 格}} ;\text{Mb/s}每个 2 秒 格3,3,3Mb/s
固定窗口
无论之后它选什么码率,这 6 秒内的预测都“有效”——即它始终在一个恒定的时长窗口上优化。一次优化、一阶决策
SODA 在这 6 秒里用式 (2a–c) 的代价函数:∑m=nn+2[v(rm)3⋅2rm+β b(xm)+γ c(rm,rm−1)] \sum_{m=n}^{n+2}\Bigl[v(r_m)\frac{3\cdot2}{r_m}+\beta,b(x_m)+\gamma,c(r_m,r_{m-1})\Bigr]m=n∑n+2[v(rm)rm3⋅2+βb(xm)+γc(rm,rm−1)]
求出 (rn,rn+1,rn+2)(r_n,r_{n+1},r_{n+2})(rn,rn+1,rn+2) 最优,然后只执行 rnr_nrn,并在下一时刻再更新带宽预测(仍然是未来 6 秒)。
关键:不管 SODA 选低码率还是高码率,它都用同样的 6 秒预测来做决策,预测窗口长度不受 rmr_mrm 的影响。
二、MPC(段为基础)
- 预测输入
MPC 也拿到未来 3 段的带宽预测,每段预测为 3 Mb/s。但 “这些预测能持续多久”,取决于你下载这 3 段共花了多少时间。 - 下载时间依赖码率
- 如果 MPC 在这 3 段都选 低码率 ri=1r_i=1ri=1 Mb/s:
每段大小 =1 × 2=2=1!\times!2=2=1×2=2 Mb,下载时长 2/3≈0.672/3≈0.672/3≈0.67 s,3 段合计 ≈2.0 s - 如果 MPC 都选 高码率 ri=3r_i=3ri=3 Mb/s:
每段大小 =3 × 2=6=3!\times!2=6=3×2=6 Mb,下载时长 6/3=26/3=26/3=2 s,3 段合计 =6.0 s
- 如果 MPC 在这 3 段都选 低码率 ri=1r_i=1ri=1 Mb/s:
- 预测窗口随决策改变
因此,MPC 假设“下 3 段的带宽预测有效期”要么 2 秒(若选低码率),要么 6 秒(若选高码率),中间还可能出现其它组合。 - 一次优化、一阶决策
MPC 也是在未来 3 段上优化同样的 QoE 代价,但它的时域长度却跟它要选的 rir_iri 互相绑定。
问题来了:MPC 的预测模型得假设“这 3 段下载期间带宽不变”,却又不知道“下载这 3 段到底是 2 秒、4 秒还是 6 秒”?预测有效性的前提就被破坏了。
3.3. 控制机制
- 如何将前面基于“时间格”的建模,转化为一个可执行的 “模型预测控制”(MPC)式的在线算法。
1)优化目标
$$
\sum_{ m = n } ^ {n + K - 1} \big( v ( r_ m) \cdot \frac{ \hat \omega_{ m | n - 1 } \Delta t}{r_ m} + \beta \cdot b( x_ m ) +\gamma \cdot c( r_ m , r_ { m-1 }) \big)
$$
2)动态缓冲约束
$$
\left { \begin{matrix} x_ m = x_ { m - 1 } + \frac{ \omega_ { m | n - 1 } \Delta t}{ r_ m } - \Delta t \ x_ m \in [ 0, x_{ max }, r_ m \in R ] \end{matrix} \right.
$$
3)滚动执行 :只取首个决策
- 这个优化是在“当前时刻n 前瞻 K 格 ,求出一条最优码率序列 ($r_n , r_{n+1}, \cdots,r_{n+K-1}$),然后只执行$r_ n$,进入下一时刻n+1再重新计算
4. 理论设计洞察
4.0.1 背景与目标
- SODA 的设计借鉴了两个方向的最新进展:
- 平滑在线凸优化(SOCO)
- 在 SOCO 中,每次决策不仅要最小化即时损失(如画质损失),还要对连续决策之间的“切换”进行惩罚,以避免频繁震荡。
- SODA 将视频的三大 QoE 组件(画质、重缓冲、码率切换)对应到 SOCO 的“即时损失 + 切换惩罚”框架中。
- 在线控制/模型预测控制(MPC)
- MPC 会在每一步使用未来若干步的预测来求解一个小规模优化,并只执行第一步决策;下一步再重做优化。
- SODA 采用类似策略,但在理论分析中引入了 指数衰减扰动 的概念来量化预测误差的影响。
4.0.2 指数衰减扰动属性
- 定义(非形式化)
指数衰减扰动 意味着:当固定未来带宽预测${ \hat \omega _ m }$时,不同初始条件 $x_ {n-1}, u_{n-1}$ 下求得的最优轨迹会随着时间逐步“汇聚”,它们在第 n+k步的差异上界是 $\rho ^ k$量级,其中 $\rho < 1$ 是衰减因子。
同理,当固定起点时,对第 n+κ步带宽预测的微小扰动对第 n 步的最优决策影响也会呈指数衰减。
- 直观说明:如果我们在预测中引入一点小误差,那么这次误差对“马上做出的决策”影响最大,对“更远将来的决策”影响会越来越小,呈指数级衰减。
- 图示(图 6):两条最优轨迹初始不同,但随着时间推进,它们逐渐重合。
4.0.3 性能度量
我们用两种常见在线优化的度量来衡量 SODA:
动态遗憾(Dynamic Regret)
$$
Regret = cost(ALG) - cost(OPT)
$$其中 OPT是离线最优(知道所有未来带宽后一次性求最优)。
竞争比(Competitive Ratio)
$$
cost(ALG) \le C \cdot cost(OPT)
$$理想情况下 CCC 接近 1。
4.0.4 证明思路概览
为了给出 SODA 的遗憾与竞争比界,我们做了如下两步:
- 界定每步误差(Per-step Error)
- 令 Δn表示在第 n 步,SODA 在真实状态$(x_{n-1} , u_{n-1})$下,因仅有有限预测或预测误差,与“假如知道所有未来带宽”下的离线最优状态之间的差距。
- 指数衰减扰动属性保证,对于固定预测,Δn只依赖于前面 K步的误差,并且影响会迅速衰减。
- 累积误差不爆炸
- 虽然每步 Δn会带来一点额外损失,但由于之前误差的影响会指数衰减,所有 Δn 的累加不会线性增大,而是保持在 O(1)量级。
- 因此,SODA 整体的动态遗憾为$O(\rho ^K N)$,竞争比为$1+O(\rho ^K )$。
4.1 精确预测下的性能保证
Theorem 4.1(非正式)
当未来 K 步带宽预测 完全准确($\hat \omega _ {m | n - 1} = \omega_ w$)且 K 是常数级别时,SODA 的动态遗憾为$O( \rho ^ K N)$且竞争比为$1+O(\rho ^ K)$
其中 $\rho < 1$是指数衰减因子。
- 含义:只要有准确的短期预测,SODA 就能以指数级逼近离线最优;K 不用很大,就可以几乎跑到最优水平。