00:00 / 00:00

Chatterbox

播放器追幀

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.00×

顏色提示:

  • 🟢 綠色:緩衝在目標值附近(差值約 ±0.5 秒),運作健康
  • 🟡 黃色:緩衝明顯高於目標(差值 > 1 秒),正以更高倍速追趕
  • 🔴 紅色:緩衝低於 0.2 秒,即將卡頓;或播放速度低於 1.0× 正在減速

注意事項

  • 自動追幀是透過修改 playbackRate 實作,可能導致音訊音調出現極輕微的變化,絕大多數情境下不易察覺
  • 若直播間的網路極不穩定,建議適度提高目標延遲,以減少觸發減速的頻率

最後更新於 2026年9月19日

Tech otakus destroy the world