选轨与降级:first-fit、丢弃、排队、叠加
轨道分配的常规策略是自上而下取第一条可用轨道 (top-down first-fit):简单、稳定,且让弹幕尽量靠上、视线集中。真正体现产品取舍的是所有轨道都放不下时怎么办——这在弹幕高峰(热门直播、名场面)必然发生。三种主流降级:丢弃 (drop) 直接不显示、排队 (queue) 等下一条空轨道、叠加 (stack) 强行压上去(半透明)。本页可调到达率把轨道打满,实时对比三者。
丢弃:总量恒定、画面永远清爽,代价是高峰期大量弹幕看不到(直播常用)。排队:不丢,但延迟显示、积压会越滚越多。叠加:全都显示,但高峰期重叠压字、可读性下降。调大「每秒弹幕」越过轨道容量,三者差异立刻显现。
1 · 选轨为什么默认 top-down first-fit
可用轨道往往不止一条,选哪条是个策略。first-fit(取最靠上的可用轨道) 让弹幕聚拢在视线集中的上方、分布稳定、实现 ,是绝大多数引擎的默认。其他选法各有取向:随机轨道分散更均匀但抖动大;best-fit(挑最空的轨道) 让间距更均衡却要维护更多状态。多数场景里 first-fit 的简单与稳定足够好。
2 · 降级:满载时的产品取舍
| 策略 | 是否全显示 | 画面是否清爽 | 代价 | 典型场景 |
|---|---|---|---|---|
| 丢弃 drop | 否 | 是 | 高峰丢弃大量弹幕 | 高并发直播 |
| 排队 queue | 是 (延迟) | 是 | 积压、延迟越滚越大 | 点播 / 可容忍延迟 |
| 叠加 stack | 是 | 否 | 重叠压字、可读性降 | 追求「弹幕量感」 |
实时(直播)与离线(点播)的根本差异在这里放大:点播已知全部弹幕时间轴,可全局预排、seek 后精确恢复;直播是流式到达,只能贪心地来一条排一条,降级(尤其丢弃 / 限流)不可避免。无论哪种,底层判定都建立在前面几页的入场与追及规则之上。