Subspace Institute
Background Decoration

播放器追帧

进入直播间时自动切换最高画质,并通过实时微调播放速度追上直播实时位置,减少观看延迟

LAPLACE Chatterbox 内置「自动画质」与「自动追帧」两项播放器辅助能力,可帮助观众在进入直播间时自动切换到最高画质,并通过实时微调播放速度让缓冲始终保持在指定的目标延迟附近,从而最大限度地缩短观看延迟

两项功能均基于事件驱动实现,未启用时几乎无任何运行开销;同时支持普通视频流与仅音频模式

追帧与画质切换的核心算法参考自 c-basalt 的 Bilibili 直播自动追帧 用户脚本(GPL-3.0),LAPLACE Chatterbox 在其基础上改为事件驱动实现,不再依赖定时轮询

自动画质

特性

  • 在进入直播间、原生播放器初始化完成的瞬间调用一次 livePlayer.switchQuality(),将画质切换至当前房间可用的最高档位
  • 通过监听 #live-player video 的挂载事件触发,而非轮询,未开播或不存在的房间不会产生额外开销
  • 仅在页面加载时执行一次,之后用户手动选择的清晰度(如切回 720P 省流量)会被完整保留
  • 自动嗅探 qualityCandidates 中可用的最大 qn 值,自动适配未来哔哩哔哩新增的更高画质档位(如 HBR 高码率 qn=30000
  • 启用仅音频模式时自动跳过,避免与仅音频的 stopPlayback 守护机制相互冲突

使用方法

  • 在弹幕助手面板的「设置」选项卡中,找到「播放器追帧」区域
  • 勾选「进入直播间时自动切换到最高画质」
  • 下次进入任意直播间时自动生效,无需手动操作

注意事项

  • 切换至最高画质会增加带宽消耗,移动网络或流量受限场景请按需启用
  • 切换发生在页面加载后的极短时间内,可能会观察到画质从默认档位瞬间跳变至最高档
  • 仅在页面加载阶段执行一次,若开播中途切换房间或手动改回低画质,本次会话内不会再次自动切换

自动追帧

直播延迟主要由播放器缓冲区累积造成。自动追帧通过实时监测缓冲区长度,在缓冲过多时小幅提高播放速度(最高 1.3 倍),在缓冲过少时降低播放速度(最低 0.1 倍)避免卡顿,从而让缓冲长度稳定在用户设定的「目标延迟」附近

特性

  • 事件驱动:监听播放器原生 progress / waiting / timeupdate / playing 事件触发调整,无 setInterval 轮询,未启用或页面处于后台时几乎不消耗任何资源
  • 后台不调速:检测到 document.hidden 时暂停所有播放速度调整,切回前台后自动重新同步
  • 加速 / 减速阶梯:参考 c-basalt 上游的实测数值
    • 加速阶梯(缓冲长度超出目标的秒数 → 速度倍率):[+2s, 1.3×] / [+1s, 1.2×] / [+0s, 1.1×]
    • 减速阶梯(缓冲长度绝对值 → 速度倍率):[0.2s, 0.1×] / [0.3s, 0.3×] / [0.6s, 0.6×]
  • 支持仅音频:自动检测当前是否处于仅音频模式,对隐藏的 <audio> 元素同样生效,逻辑完全一致
  • 自动重新绑定:哔哩哔哩在画质切换、仅音频开关、流地址刷新等场景会替换 <video> / <audio> 元素,本功能通过 MutationObserver 自动重新挂载监听
  • 实时状态面板:启用后在设置面板中显示「当前延迟」「目标延迟」「当前播放速度」,并以颜色提示当前缓冲健康度(绿色 = 健康,黄色 = 正在追赶,红色 = 即将卡顿)

使用方法

  • 在弹幕助手面板的「设置」选项卡中,找到「播放器追帧」区域
  • 勾选「启用自动追帧」
  • 在「目标延迟」输入框中设置希望维持的缓冲长度(秒),默认 1.7 秒
  • 启用后下方会出现实时状态面板,便于实时观察追帧效果

选项说明

选项说明默认值
启用自动追帧主开关,关闭后停止所有播放速度调整
目标延迟(秒)期望维持的缓冲长度,缓冲超过此值会加速、低于此值会减速;可输入范围 0.3 ~ 10 秒1.7

目标延迟过低(如低于 1 秒)容易在网络波动时频繁卡顿,过高则失去追帧意义。建议保持默认值或在 1.5 ~ 2 秒区间微调

状态面板

启用自动追帧后,设置面板中会显示如下实时数据:

字段含义
当前延迟当前缓冲区中已加载但尚未播放的内容长度(秒)
目标延迟用户设定的目标缓冲长度(秒)
当前延迟与目标延迟的差值,正值表示缓冲过多正在追赶,负值表示缓冲过少正在减速
当前播放速度播放器当前的实际倍速,正常值为 1.00×

颜色提示:

  • 🟢 绿色:缓冲在目标值附近(差值约 ±0.5 秒),运行健康
  • 🟡 黄色:缓冲明显高于目标(差值 > 1 秒),正在以更高倍速追赶
  • 🔴 红色:缓冲低于 0.2 秒,即将卡顿;或播放速度低于 1.0× 正在减速

注意事项

  • 自动追帧通过修改 playbackRate 实现,可能导致音频音调出现极轻微变化,绝大多数场景下不易察觉
  • 若直播间网络极不稳定,建议适当提高目标延迟以减少减速触发的频率

On this page