取扱説明書
Slipstream Live は、ブラウザがどれだけ先まで映像を読み込めているかを監視し、再生速度をほんの少しだけ上げ下げすることで、映像を止めずにライブ配信の「今」へ近づけ続けます。このページでは、インストール方法・すべての設定項目・うまく動かないときの対処をまとめています。
1 はじめに
ライブ配信で見えている映像は、配信者が実際にしゃべっている瞬間より必ず数秒遅れています。この遅れは回線が乱れるたびに増えていき、放っておいても縮みません。
Slipstream Live は、どれだけ先まで映像を読み込めているか(バッファ残量)を 1 秒間に約 50 回測り、再生速度をほんの少しだけ上げ下げすることで、映像を止めずに配信の「今」へ近づけ続けます。
| こんなとき | Slipstream Live の動き |
|---|---|
| 遅れているが、先の映像は十分読み込めている | 少しだけ加速(1.25x)して追いつく |
| 読み込み済みの映像がほぼ尽きた | 0.15x まで落とし音量も下げて、完全停止を回避 |
| 問題なし | 何もしない(通常の 1.00x) |
インストール後は、視聴中に何か操作する必要はありません。
2 動作環境
| Manifest Version | V3 |
| Chrome / Edge / Brave など Chromium 系 | v148 以降 |
| Mozilla Firefox | v140.0 以降 |
| Firefox for Android | v142.0 以降 |
| 対応サイト | YouTube(m.youtube.com・youtube-nocookie.com を含む)、Twitch(player.twitch.tv を含む)、ツイキャス、TikTok LIVE(www.tiktok.com の LIVE のページ)、DAZN(www.dazn.com。設定画面で許可した場合のみ)、Kick(kick.com と、他のサイトに埋め込まれるプレーヤーの player.kick.com。同じく許可した場合のみ) |
| UI 言語 | 日本語・English・한국어・Deutsch・Español・Français・Português (BR)・Português (PT)・Polski・Čeština・Slovenčina・Русский・Українська・Bahasa Indonesia・Bahasa Melayu・हिन्दी・العربية・简体中文・繁體中文(ブラウザの言語設定に追従) |
3 インストール方法
3.1 Chrome / Edge / Brave など Chromium 系ブラウザ
Chrome ウェブストアからインストールします。
インストール後、ツールバーのパズルピースのアイコンから Slipstream Live を固定しておくと、アイコンが常に表示されて便利です。
3.2 Firefox
Firefox アドオンからインストールします。
3.3 ソースからインストールする場合(開発者・手動インストール向け)
Chromium 系ブラウザ
- リポジトリを ZIP でダウンロードして解凍します(
git cloneでも構いません)。 - アドレスバーに
chrome://extensionsと入力して開きます。 - 画面右上の「デベロッパー モード」をオンにします。
- 「パッケージ化されていない拡張機能を読み込む」をクリックし、解凍したフォルダ(
manifest.jsonが入っている階層)を選びます。
Firefox — 一時的な読み込み(Firefox を閉じると消えます)
- アドレスバーに
about:debugging#/runtime/this-firefoxと入力して開きます。 - 「一時的なアドオンを読み込む…」をクリックします。
- 解凍したフォルダ内の
manifest.jsonを選択します。
Firefox — 恒久的なインストール(Developer Edition / Nightly 限定)
- フォルダの中身を ZIP 圧縮します。
about:configでxpinstall.signatures.requiredをfalseに変更します。about:addonsの右上の歯車から「ファイルからアドオンをインストール…」で ZIP を選びます。
3.4 動作確認
- YouTube・Twitch・ツイキャス・TikTok LIVE・DAZN・Kick のいずれかでライブ配信を開きます。アーカイブやクリップでは動作しません。DAZN と Kick では、先に設定画面の「このサイトで有効にする」を押してください(6 章「DAZN・Kick で使うには」を参照)。
- ツールバーの Slipstream Live アイコンをクリックします。
- 「全サイト共通」パネルで「再生速度倍率を表示」をオンにします。
- プレイヤーのコントロールバーに小さく
1.00xと表示され、動作に応じて色が変われば成功です。
4 各部の名称(設定画面)
ツールバーのアイコンをクリックすると設定画面が開きます。同じ画面は、ブラウザの拡張機能管理画面から「オプション」として独立したタブで開くこともできます。
| 番号 | 名称 | 説明 |
|---|---|---|
| 1 | アイコン・タイトル | アイコンをクリックするとプロジェクトページが開きます。名前の右にバージョン番号が表示されます。 |
| 2 | 再生速度を変更する | マスタースイッチ。オフにすると制御もバッジ表示もすべて停止します。「全サイト共通」の印が付いています。 |
| 3 | サイトタブ | YouTube / Twitch / TwitCasting / TikTok / DAZN / Kick。それぞれ別々に値を保存し、今開いているサイトのタブが自動で選ばれます。対応サイト以外を開いているときは、最後に選択されていたタブが選ばれます。 |
| 4 | サイト別設定パネル | 選択中のサイトの、加速に関する設定と最低速度に関する設定。 |
| 5 | ? ボタン | その項目のわかりやすい説明が開きます。 |
| 6 | リセット · サイト名 | 選択中のサイトの設定だけを既定値に戻します。 |
| 7 | 全サイト共通パネル | プレイヤー上のバッジ 3 種類のスイッチ。 |
| 8 | リセット · 全サイト共通 | 全サイト共通の設定を既定値に戻します。 |
- 変更は即時反映されます。保存ボタンはありません。
- 現在使われない項目はグレー表示になります。たとえば「バッファ閾値を自動調整する」がオフ以外のとき、「加速を開始するバッファ閾値(秒)」と「加速を終了するバッファ閾値(秒)」は操作できません。
- Twitch タブを選んでいるときだけ、既定値が大きい理由の注釈と、他のサイトにはない「プレイヤーのエラーから自動復帰する」のスイッチがパネル下部に表示されます。
- Kick タブを選んでいるときだけ、既定値が他のサイトと違う理由の注釈と、「読み込み中のまま止まったら自動復帰する」のスイッチがパネル下部に表示されます。
- TikTok タブを選んでいるときだけ、「Chrome での速度変更を有効にする」のスイッチがパネル下部に表示されます(6 章「Chrome の TikTok LIVE」を参照)。
- DAZN タブと Kick タブでは、まだサイトへのアクセスを許可していないとき、パネルの先頭に「このサイトで有効にする」(そのサイト以外のページで開いたときは「DAZN で有効にする」・「Kick で有効にする」)のボタンが表示されます(6 章「DAZN・Kick で使うには」を参照)。
5 バッジの見かた
3 種類のバッジはいずれも既定でオフです。「全サイト共通」パネルでオンにしてください。表示位置はプレイヤーのコントロールバー内で、コントロールバーが見つからない場合はプレイヤー左上の小さな黒い帯に切り替わります。
| バッジ | 表示例 | 意味 |
|---|---|---|
| 再生速度倍率 | 1.25x | 実際の再生速度。文字色で現在のモードがわかります。 |
| 遅延秒数 | 1.50s | 配信の最先端からどれだけ遅れているか。巻き戻して視聴中(追っかけ再生)は遅延の数値に意味がないため、数値の代わりに (DVR) と表示されます。TikTok は配信元からの遅れを教えてくれないため、受信済みの最新の映像からどれだけ遅れて再生しているかを表示します(たいていはバッファ残量と同じ値になります)。DAZN は、ふつうは現実の時刻からどれだけ遅れて再生しているかを表示します(再生位置が時計の時刻にそろっていないチャンネルでは TikTok と同じ表示になります)。Kick も、現実の時刻からどれだけ遅れて再生しているかを表示します。Kick のプレーヤーが映像に付けている時刻(配信元で記録された時刻)を使います。DAZN と Kick の値は、パソコンの時計が合っていることを前提にしています。 |
| バッファ残量 | 2.50s | 何秒先まで読み込めているか。+9s が付く場合、隙間の向こうにさらに読み込み済みの映像があります。 |
(DVR) になります。この例ではバッファを 62.41 秒、さらに隙間の先に 9 秒ぶん読み込んでいます。6 3 つの制御モード
| モード | 優先度 | バッジ色 | 速度 | 発動条件 |
|---|---|---|---|---|
| Floor(最減速) | 最高 | 青 #83c1ff | 0.15x(固定) | バッファ枯渇の直前。緊急ブレーキ+音量ダッキング。 |
| Speedup(加速) | 低 | 赤 #ff8983 | 1.25x(既定) | バッファに十分な余裕があり、かつ加速が実際に効いている。最先端へ追いつく。 |
| Normal(通常) | — | 白 #eee | 1.00x | 何もしない。 |
優先度の高いモードが常に優先されます。Floor の 0.15x は安全装置なので、意図的に変更できないようにしてあります。
各しきい値には現在のモードへ留まる向きにヒステリシスが掛かっており、境界ちょうどで倍率と音量が細かく往復しません。幅は全段階で 0.2 秒です。加えて、加速を始めるときだけは 2 秒の間隔を空けます。それ以外の遷移(加速からの離脱、Floor の出入り)は待たせません。介入を強める方向だけを慎重にし、弱める方向・安全側へ戻る方向は即座に反映する、という考え方です。判定に使う値そのものが揺れる以上、しきい値の幅だけでは往復を止めきれないためです。
加速が効かない状況では、自動的に加速をやめます。ライブ映像は実時間でしか作られないため、配信の最先端に追いついた時点で、それ以上詰められる遅れは存在しなくなります。そこで倍率を上げたままにしておくと、再生がセグメントの到着を追い越して細かく止まり、実効速度はかえって落ちます。Slipstream Live は「加速で詰められるはずだった秒数」と「実際に詰められた秒数」を突き合わせ、後者が前者の半分に満たない状態が続けば加速を見送ります。その後あらためて遅れが生じれば、すぐに加速へ戻ります。
止まったプレイヤーからの復帰
Twitch ではプレイヤーが番号付きのエラーで完全に停止することがあります。よく見かけるのは「エラー #3000」で、通常の対処はページの再読み込みですが、それではチャットの流れも読んでいた位置も失われます。Slipstream Live はこのエラーを検知し、代わりに Twitch 自身の再読み込みボタンを押します。ページはそのままなので、1 秒ほどで映像だけが戻ります。まず少し待って自動復帰を見守り、間隔を広げながら数回試したところで打ち切ります。終了した配信に延々と挑み続けないためです。既定はオンで、Twitch タブでオフにできます。
Kick では、映像データの到着が途切れた後などに、読み込み中のくるくる表示のまま再生が戻らなくなることがあります。エラーが出ないため Kick 自身の再接続も動かず、通常の対処はやはりページの再読み込みです。Slipstream Live は、読み込み中のまま再生位置が 6 秒ほど進まないとき、Kick のプレイヤーに配信を読み込み直させます(Kick 自身がエラーから立ち直るときと同じ手順です)。プレイヤーの内部に完了しないシークが残って止まっている場合は、先に今の位置へシークし直してそれを終わらせます。ページはそのままなので、数秒で映像だけが戻ります。間隔を広げながら数回試したところで打ち切り、一時停止中・広告中・アーカイブには手を出しません。再生用のトークンの期限が切れているときは、Kick 自身の再接続が新しいトークンを取り直して読み込みます(Slipstream Live が自分で通信することはありません)。既定はオンで、Kick タブの「読み込み中のまま止まったら自動復帰する」でオフにできます。
Chrome の TikTok LIVE
TikTok は、ページを開いたときに 2 つの再生方式のどちらかを選びます。Chrome 122 以降・CPU 6 コア以上(Edge を除く)の環境では、映像を自前で解読し、その結果を MediaStream として <video> に映すだけの方式になります。この方式は仕様上つねに 1 倍で再生されるため、どんな方法でも速度を変えられません。それ以外の環境(Firefox・Edge・コア数の少ない Chrome)では一般的な方式で再生され、YouTube などと同じように速度を変えられます。
そこで Slipstream Live は、TikTok のスクリプトが動き出す前に、TikTok のページから見える CPU のコア数を最大 4 にしておきます。すると TikTok は Firefox や Edge と同じ標準の方式を選び、速度を調整できるようになります。この見せかけは Chromium 系ブラウザの TikTok のページの中だけで、ほかのサイトには影響しません。既定はオンで、TikTok タブの「Chrome での速度変更を有効にする」でオフにできます。方式はページを開いたときに決まるため、切り替えたときはページを再読み込みしてください。
DAZN・Kick で使うには
DAZN と Kick は、インストールしただけでは動きません。DAZN(または Kick)のページを開いてツールバーのアイコンをクリックし、DAZN(または Kick)タブの先頭に出る「このサイトで有効にする」を押してください。ブラウザがサイトへのアクセスの許可を求めるので(DAZN は www.dazn.com、Kick は kick.com と、他のサイトに埋め込まれるプレーヤーの player.kick.com)、許可すると、開いているページを含めてその場で動き始めます(動かないときはページを再読み込みしてください)。許可はブラウザの拡張機能の管理画面からいつでも取り消せます。
DAZN と Kick を許可制にしているのは、新しいサイトを足すたびに全員へ権限の承認を求めずに済むようにするためです。Chrome は承認されるまで拡張機能を止めてしまい、Firefox は更新で増えたサイトの権限を付与しません。
DAZN のプレイヤーは、配信の最新地点がずっと先にあっても約 12 秒ぶんしか先読みしません。そのため加速しても、最前線に追いつくまではバッファ残量がほとんど減らず、遅延秒数だけが縮んでいきます。
Kick の低遅延の配信は、ふだんは 1.3〜2.5 秒ほどしか先読みしません。ところが映像の到着が 10 秒ほど止まることがよくあり、届き始めた後もそのぶん遅れたまま再生が続きます(Kick のプレーヤーは自分では追いつきません)。Slipstream Live は、このとき溜まったバッファを使って最前線へ戻ります(実測では、約 12 秒の遅れから 1.25x で約 40 秒かけて 1.6 秒前後まで戻りました)。途切れが多いため、Kick だけは既定値で 5 秒ほどの先読みを残し、残り 2 秒からは 0.15x で途切れをつなぎます(7 章の「Kick だけ既定値が違うのは?」を参照)。それでも読み込み中のまま止まったときは、自動で読み込み直します(「止まったプレイヤーからの復帰」を参照)。また Kick は、プレーヤーの上でマウスを動かしたときだけコントロールバーを作り、数秒で取り除くため、バッジもそれに合わせて現れたり消えたりします。
制御しないもの
- アーカイブ(VOD)・クリップ・広告再生中には一切手を出しません。ライブ再生中のみが対象です。
- YouTube のプレミア公開は既定では対象外です。録画した動画を決まった時刻からライブとして流す機能で、再生中はライブ配信と見分けが付きませんが、プレミア公開は「みんなで同じ瞬間を見る」ことが目的の配信形態であり、追いついてもチャットより先を見てしまうだけだからです。通常のライブ配信と同じように扱ってほしい場合は、YouTube タブの一番下にある「プレミア公開も制御する」をオンにしてください。
- ツイキャスの低遅延配信は対象外です。低遅延モードは WebRTC で映像が届くため、測定できる先読みバッファがなく、再生速度を変えても仕様上無視されます。そもそもほぼリアルタイムなので、詰めるべき遅れがありません。
- TikTok で見張るのは LIVE のページ(
/liveと/@ユーザー名/live)だけです。フィードの動画には触りません。 - Kick では、アーカイブ(配信中の回のアーカイブを含む)とクリップに加え、配信の途中に差し込まれる広告の間も手を出しません。広告の始まりと終わりはプレーヤーが知らせてくれるので、終われば制御に戻ります。
- YouTube とツイキャスでは、あなたがプレイヤーのメニューで 1.00x 以外の速度を選んだ場合、Slipstream Live は制御を譲って手を引きます。速度を通常に戻せば自動制御が再開します。Twitch・TikTok LIVE・DAZN・Kick には速度変更メニューがないため常に Slipstream Live が制御します。Twitch と Kick(同じ系統のプレーヤーです)ではあわせて、プレーヤー自身の追いつき機能が競合しないよう抑え込みます。DAZN の低遅延の配信でプレイヤーが自分で速度を上げ下げしようとした場合も、Slipstream Live の判断を優先します。
7 設定項目一覧
7.1 サイト別設定(サイトごとに別々に保存)
| 設定項目 | 範囲 / 刻み | YouTube | Twitch | TwitCasting | TikTok | DAZN | Kick | 説明 |
|---|---|---|---|---|---|---|---|---|
| 遅延時に加速する | ON / OFF | ON | ON | ON | ON | ON | ON | 追いつき機能のスイッチ。 |
| 遅延時の再生速度 | 1.05x〜4.00x / 0.05 | 1.25x | 1.25x | 1.25x | 1.25x | 1.25x | 1.25x | 加速時の倍率。大きいほど速く追いつけますが、バッファ消費も増えます。 |
| バッファ閾値を自動調整する | オフ / 安定 / 標準 / 積極的 | 標準 | 標準 | 標準 | 標準 | 標準 | オフ | 加速して安全かどうかを Slipstream Live に判断させます。推奨。Kick だけは既定がオフです(下の「Kick だけ既定値が違うのは?」を参照)。 |
| 加速を開始するバッファ閾値(秒) | 0.1〜100.0 / 0.1 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 5.5 | 自動調整がオフのときだけ使われます。残量がこの秒数に達したら加速を始めます。最低速度が有効なときは、残量が「最低速度にする閾値」より 0.4 秒を超えて多くなるまで加速を始めません(加速と 0.15x を往復しないため)。 |
| 加速を終了するバッファ閾値(秒) | 0.1〜100.0 / 0.1 | 9.0 | 9.0 | 9.0 | 9.0 | 9.0 | 5.0 | 自動調整がオフのときだけ使われます。加速中、残量がこの秒数を下回ったら通常速度へ戻します。開始との差がヒステリシスの幅になります。開始より大きくすると、開始も同じ値に引き上げます。 |
| バッファ枯渇時に最低速度にする | ON / OFF | ON | ON | ON | ON | ON | ON | 0.15x の緊急ブレーキのスイッチ。 |
| 最低速度にする閾値(秒) | 0.0〜10.0 / 0.1 | 0.80 | 2.00 (FF 0.50) | 0.30 | 0.50 | 0.80 | 2.00 | バッファ残量がこれを下回っている間 0.15x にします。 |
| 最低速度中は音量を下げる | ON / OFF | ON | ON | ON | ON | ON | ON | 0.15x の間だけ音量を絞ります。 |
| 最低速度中の音量(%) | 0〜100 / 5 | 30 | 30 | 30 | 30 | 30 | 30 | 今の音量に対する割合。100 で変化なし、0 で無音。 |
| プレミア公開も制御する | ON / OFF | OFF | — | — | — | — | — | プレミア公開をライブ配信として扱うか。オフのままなら一切手を出しません。他のサイトに相当する仕組みが無いため、この行は YouTube タブにだけ現れます。 |
| プレイヤーのエラーから自動復帰する | ON / OFF | — | ON | — | — | — | — | 「エラー #3000」のような番号付きエラーでプレイヤーが止まったとき、Twitch 自身の再読み込みボタンを代わりに押し、ページを再読み込みせずに再生を戻します。Twitch のみのため、この行は Twitch タブにだけ現れます。 |
| 読み込み中のまま止まったら自動復帰する | ON / OFF | — | — | — | — | — | ON | 読み込み中のくるくる表示のまま再生位置が 6 秒ほど進まないとき、Kick のプレイヤーに配信を読み込み直させ、ページを再読み込みせずに再生を戻します(6 章「止まったプレイヤーからの復帰」を参照)。Kick のみのため、この行は Kick タブにだけ現れます。 |
| Chrome での速度変更を有効にする | ON / OFF | — | — | — | ON | — | — | TikTok のページから見える CPU のコア数を最大 4 にして、Chrome でも TikTok LIVE を速度の変えられる標準の方式で再生させます(6 章「Chrome の TikTok LIVE」を参照)。ページの再読み込み後に反映され、Firefox では何も変わりません。TikTok のみのため、この行は TikTok タブにだけ現れます。 |
FF = Firefox での既定値。Firefox はバッファ残量の報告のされ方が異なるため、専用の値を持ちます。現在これが効くのは Twitch だけです。
Twitch の閾値だけ大きいのはなぜ? Twitch では映像データの到着が 10 秒ほど途切れることがあります。Chrome ではエラー #3000 で停止し再読み込みが必要になるため、既定値を大きめにしています。Firefox は自動で復帰するため通常の値です。
TikTok の 0.50 は? TikTok LIVE は映像が 0.05〜0.2 秒刻みの小さな塊で途切れなく届くため、バッファがほとんど波打ちません。そこでツイキャス(0.30)と YouTube(0.80)の間の値にしています。
DAZN の 0.80 は? DAZN は YouTube と同じく、数秒ごとの塊(セグメント)で映像が届く MPEG-DASH で、バッファの波打ち方も近いため、YouTube と同じ値にしています。
Kick だけ既定値が違うのは? Kick では映像データの到着が 10 秒ほど途切れることがよくあり、いったん読み込み中のくるくる表示になると、そのまま再生が戻らないことも少なくありません。途切れるたびに統計が崩れて自動調整では追いきれないため、Kick だけは「バッファ閾値を自動調整する」を「オフ」にし、「途切れても止まらない」ことを優先した値にしています(Chrome と Firefox で同じ値です)。加速は残量 5.5 秒から始めて 5.0 秒で止め、遅れを詰めても 5 秒ほどの先読みを残します。最低速度にする閾値は Twitch と同じ 2.00 で、残り 2 秒を 0.15x で使えば約 13 秒もちます。先読み 5 秒のうち 3 秒を等倍で、残り 2 秒を 0.15x で使えば、データが 16 秒ほど届かなくても止まりません。低遅延の配信はふだんバッファが 1.3〜2.5 秒ほどなので、見始めのうちは 0.15x に入りやすくなりますが、そのぶん先読みが溜まっていきます。それでも止まったときのために、「読み込み中のまま止まったら自動復帰する」が既定でオンになっています。遅延をもっと詰めたいときは、自動調整を「標準」に、最低速度にする閾値を 0.80 に戻してください(1.8.x までの既定値です)。
7.2 「バッファ閾値を自動調整する」の 4 段階
| 段階 | 谷を貯める窓 | 安全余裕係数 | 下限への上乗せ | ヒステリシス | 性格 |
|---|---|---|---|---|---|
| オフ | — | — | — | 開始−終了 | 自動調整せず「加速を開始/終了するバッファ閾値」をそのまま使います。 |
| 安定 | 60s | 10 | 1.0s | 0.2s | 最も長い窓と最も大きな係数。谷が長時間そろって高いときにしか加速しないため、最低速度へ落ちにくい代わりに加速の機会は少なくなります。音楽ライブ向け。 |
| 標準 | 30s | 5 | 0.3s | 0.2s | 安定と積極的の中間。既定値で、たいていの環境はこれで足ります。 |
| 積極的 | 5s | 3 | 0.1s | 0.2s | 短い窓で直近の余裕へ素早く反応し、遅れをより詰めます。その代わり最低速度に入る頻度は上がります。 |
窓と係数を同じ向きへ動かしている理由。 窓が長いほど谷の履歴はそろいにくく、係数が大きいほど残ったばらつきが強く効きます。片方だけ動かしても、段階ごとの性格の差がはっきり出ません。
「安定」が音楽ライブに向く理由。 ライブや DJ セットのような演奏の配信では、再生速度の変化がそのまま耳に届きます。ブラウザが音の高さは保ってくれますが、テンポは変わりますし、0.15x まで落ちれば音は完全に崩れます。「安定」は倍率が動く回数そのものを減らし、緊急ブレーキも掛かりにくくします。その代わり最先端からは少し遅れたままになりますが、チャットに参加せず聴くことが目的なら、ほとんど気になりません。
「下限への上乗せ」は何に足されるか。 最低速度にする閾値に足されます。この機能をオフにしている場合、「安定」「標準」「積極的」は代わりにセグメント 1 個ぶん(サイトが報告する目安で 0.5〜5 秒)を下限として確保します。谷が 0 を割っても受け止める 0.15x のブレーキが無いためです。
判定の鈍らせ方。 「安定」「標準」「積極的」ではヒステリシスが入口を 0.2 秒高くし、さらにモード切り替えから 2 秒は次の加速を始めません。「オフ」ではどちらも掛からず、残量が設定した数字に達した瞬間に加速し、下回った瞬間に戻ります。0.15x のブレーキは別の判定なので、そちらのヒステリシスは「オフ」でも働きます。
7.3 全サイト共通設定
| 設定項目 | 既定値 | 説明 |
|---|---|---|
| 再生速度を変更する | ON | マスタースイッチ。オフにすると Slipstream Live は完全に停止します。 |
| 再生速度倍率を表示 | OFF | 現在の再生速度をプレイヤー内に表示。 |
| 遅延秒数を表示 | OFF | 最先端からの遅れを表示。 |
| バッファ残量を表示 | OFF | 何秒先まで読み込めているかを表示。 |
8 動作の仕組み
Slipstream Live は 20 ミリ秒ごとにバッファ残量(何秒先まで映像を読み込めているか)を測り、その値から 3 つのモードのどれかを選びます(一時停止中は 1 秒ごと)。
難しいのは「いつ加速して安全か」の判断です。バッファ残量は一定ではありません。映像は「セグメント」という数秒単位の塊で届くため、塊が届いた瞬間にドンと増え、再生とともにすーっと減っていきます。グラフにするとのこぎり波の形になります。たまたま山(ピーク)を見て「余裕たっぷり」と誤解して加速すると、直後の谷でバッファを使い切って映像が止まります。
そこで Slipstream Live は、1 回の測定値を信じる代わりに、配信ごとに自動調整される窓で谷の位置を統計的に推定し、その余裕が「確保したいバッファ量」(最低速度にする閾値+段階ごとの上乗せ量。この機能がオフのときはセグメント 1 個ぶん)を上回っている間だけ加速します。安全係数を大きく取っているため、谷が安定して同じ高さでないと余裕は生まれず、回線が不安定なときは自然と加速が抑制されます。データが足りない間は「わからないので何もしない」が自動的に成立します。
この判定の上に、ひとつだけ近道があります。残量が 20 秒(「最低速度にする閾値」を大きくしている場合は「確保したいバッファ量+10 秒」のうち高いほう)を超えている間は、谷の推定を待たずに加速し、15 秒を下回ると従来の判定へ戻ります。シーク直後はバッファの埋め直しが速すぎて統計が一時的に使えなくなるため、その場面でも反応を保つための仕組みです。近道が働くのは自動調整が「安定」「標準」「積極的」のときだけです。「オフ」では、残量が設定した閾値に達した時点で加速を開始し、下回った時点で戻る、という単純な動きになります。
ここまでは「加速して安全か」の話ですが、それとは別に「加速する意味があるか」も見ています。ライブ映像は実時間でしか作られないため、どれだけ速く再生してもバッファは 1.0 倍でしか埋まりません。貯金を使い切って配信の最先端に到達したあとも倍率を保つと、再生が次のセグメントの到着を追い越し、そのたびにコンマ数秒だけ止まります。均せば実効速度は 1.0 倍まで落ち、映像だけが数秒おきにカクつきます。止まるたびに読み込みが追いつくため、この状態はバッファ残量では検出できません。そこで Slipstream Live は「加速で詰められるはずだった秒数」と「実際に詰められた秒数」を 12 秒の窓で突き合わせ、後者が前者の半分に満たなければ加速を見送ります。遅延が一定量ぶん増えるか 30 秒経てば、見送りは解除されます。この一定量はサイトのセグメント長に連動するため、遅延の絶対値がサイトによって 10 倍以上違っても同じ意味になります。
バッジの再描画は毎秒 10 回までに抑えられ、統計もすべて平滑化されているため、速度が目に見えてばたつくことはありません。制御対象が見つからない間はタイマーを止めず、1 秒周期の見張りモードへ落ちます。広告は本編と同じ映像要素で再生され、終わってもメディアイベントを出さないためです。タブが表に戻った瞬間にも一度だけ実行されます。
セグメント長を知らずに谷を求める方法など、数式を含む詳細は README にあります。
9 困ったときは
まったく加速しない
自動調整はわざと慎重に作ってあります。回線が不安定だと「加速は危険」と判断するためです。まず「バッファ閾値を自動調整する」を 1 段階「積極的」寄りに変えてみてください。それでも足りなければ「オフ」にして「加速を開始するバッファ閾値(秒)」を手動で設定します。15〜20 秒あたりから始めて、様子を見ながら下げるのがおすすめです。「オフ」では残量が開始の値に達した瞬間に加速し、「加速を終了するバッファ閾値(秒)」を下回った瞬間に戻ります(固定のヒステリシスも 2 秒の待ちもなく、2 本の差だけが幅になります)。倍率の切り替わりが多すぎると感じる場合は、終了の値を下げて 2 本の差を広げるか、自動調整をオンに戻してください。
シーク直後、バッファは十分あるのに 1.00x のまま
バージョン 1.1.0 以降であることを確認してください。このバージョンから、バッファ残量が 20 秒を超えていれば谷の統計を待たずに加速します。シーク直後は読み込みが一気に進むため、統計がしばらく使えない状態になるためです。
バッジは 1.25x なのに速くなっている感じがしない・数秒おきに一瞬止まる
配信の最先端に追いついた状態です。ライブ映像は実時間でしか届かないため、そこから先は加速しても止まる回数が増えるだけで速くはなりません。バージョン 1.1.2 以降ではこれを自動で検出して加速を見送ります。症状が出る場合はまずバージョンを確認し、それでも続く場合はデバッグログの gain= を見てください(FUTILE と出ていれば検出は働いています)。
最低速度(0.15x)に入る頻度が高い
まず「バッファ閾値を自動調整する」を 1 段階「安定」寄りに変えてみてください。窓が長く安全余裕係数も大きくなるため、谷が十分に安定していると確認できるまで加速しなくなります。それでも頻発する場合は、「加速を終了するバッファ閾値(秒)」を大きめにするか、「遅延時の再生速度」を下げてバッファの消費を緩やかにしてください。「最低速度にする閾値(秒)」を下げれば発動は遅くなりますが、実際に映像が止まるリスクは上がります。
何も起こらない
「再生速度を変更する」がオンになっているか、VOD やクリップではなくライブ配信を見ているか、プレイヤーのメニューで再生速度を手動変更していないかを確認してください。プレミア公開を見ている場合は、YouTube タブの一番下にある「プレミア公開も制御する」も確認してください。既定はオフなので、オンにするまでは意図的に制御対象から外れます。拡張機能を更新・無効化した直後は、開いていたタブでの制御が止まります。ページを再読み込みすると、新しい版で動き始めます。
ツイキャスで何も起こらない
低遅延配信を見ていないか確認してください。低遅延モードは WebRTC で配信されるため、Slipstream Live の制御対象外です。プレイヤー側の設定で低遅延をオフにすれば動きます。
TikTok で何も起こらない
LIVE のページ(tiktok.com/live や tiktok.com/@ユーザー名/live)を開いているか確認してください。フィードの動画は対象外です。Chrome では、TikTok タブの「Chrome での速度変更を有効にする」がオンになっているかを確認し、ページを再読み込みしてください。TikTok は再生方式をページを開いたときに決めるため、開いたままのページには設定の変更が届きません。デバッグログに tiktok: the WebCodecs player is in use で始まる行が出ていれば、そのページはまだ速度を変えられない方式で再生されています。
DAZN で何も起こらない
DAZN タブの先頭に「このサイトで有効にする」(または「DAZN で有効にする」)が出ていれば、まだサイトへのアクセスを許可していません。押して許可してください。許可したあとも動かないときは、ページを再読み込みしてください。見逃し配信やハイライトなど、ライブではない動画は対象外です。
Kick で何も起こらない
DAZN と同じく、Kick タブの先頭に「このサイトで有効にする」(または「Kick で有効にする」)が出ていれば、押して許可し、必要ならページを再読み込みしてください。アーカイブ・クリップと広告の間は対象外です。Kick はプレーヤーの上でマウスを動かしたときだけコントロールバーを表示するため、バッジもそれに合わせて現れたり消えたりします。
Kick でくるくる表示のまま止まる
Kick タブの「読み込み中のまま止まったら自動復帰する」がオンになっているか確認してください。オンなら、再生位置が 6 秒ほど進まないところで読み込み直します。数回試しても戻らない場合は、配信そのものか回線が止まっている可能性が高いので、ページを再読み込みしてください。くるくる表示に入る回数自体を減らしたいときは、「最低速度にする閾値(秒)」(既定は 2.00)と「加速を終了するバッファ閾値(秒)」(既定は 5.0)を大きめにすると、途切れに備える先読みが増えます(そのぶん遅延は大きくなります)。
バッジが表示されない
既定ではオフになっています。「全サイト共通」パネルでオンにしてください。サイトのコントロールバーが見つからない場合は、プレイヤー左上に小さな黒い帯として表示されます。
Twitch の映像だけエラーで止まる・固まる(Slipstream Live とは無関係の場合)
Slipstream Live は再生「速度」を調整するだけなので、映像が完全に止まったり「エラー #〇〇〇〇」が出たりするのは、たいてい Twitch やブラウザ側の問題です。ただし 1.3.0 以降は、出てしまったエラーの解消までは引き受けます。まず Twitch タブの「プレイヤーのエラーから自動復帰する」がオンになっているか確認してください。それでも繰り返し出る場合は、次を上から順に試してください。
- status.twitch.com で Twitch 側の障害情報を確認する。
- シークレットウィンドウ(
Ctrl+Shift+N/ Mac はCmd+Shift+N)で同じ配信を開く。直るなら原因は拡張機能かキャッシュです。 - 拡張機能、特に広告ブロッカーを一度すべてオフにする。Twitch は広告を映像そのものに埋め込んでいるため、広告ブロッカーが原因のことが非常に多いです。
chrome://settings/helpから Chrome を最新版に更新する。公式サポートは最新 2 バージョンのみです。Ctrl+Shift+Delete(Mac はCmd+Shift+Delete)でキャッシュと Cookie を削除する。
それでも画面が固まる・真っ黒になる場合は、chrome://settings/system の「ハードウェア アクセラレーション」を今と逆に切り替えて再起動してみてください。直らなければ元に戻してください(常時変更しておく設定ではありません)。
Twitch 公式の情報も参考になります: 再生に関する問題のトラブルシューティング、 対応するブラウザ、 ビデオ再生の問題を報告する方法。
10 デバッグログの取得方法
不具合を報告する際、デバッグログがあると原因の特定が容易になります。
- 配信ページを開き、
F12でブラウザのコンソールを開きます。拡張機能のコンソールではありません。 - 下の 1 行を実行します。
- 症状が出ている状態で 30 秒ほど待ち、出力をコピーします。
1 秒ごとに、現在のモード・実再生速度・バッファ残量・短期統計・谷の統計・room の計算式・近道の基準値 ample・超過消費の累積 drift・定常判定 calm・加速の実効性 gain が出力されます。
- バッファ関連の数値が
----の場合、値を取得できていない状態です。多くはバッファが空と報告されているためです。 calm=NOが続く場合は定常でないと判定されており、谷の履歴が貯まらないためroomも----になります。ただし残量がampleを超えている間は、その状態でも加速します。lat=はサイトが報告する遅延です。sdは 5 秒窓の標準偏差、jumpは直前 1 秒での最大変化量を表します。実測では定常時のsdは 0.11 以下、jumpは 0.2 未満に収まります。jumpがこれを大きく超え続ける場合、遅延の測定ノイズが大きく、見送りの自動解除が意図せず頻発している可能性があります。gain=は「実際に詰められた秒数 / 詰められるはずだった秒数」です。右の値が 1 秒を超えているのに左が半分に届かないとFUTILEが付き、加速を見送っている状態になります。timer stoppedは機能を OFF にしたことを意味します。再生中に現れることはありません。
11 プライバシー
Slipstream Live は外部との通信を一切行いません。要求する権限は次の 3 つです。
storage— 設定を端末に保存するため。activeTab— ポップアップを開いたとき、対応サイトかどうかを判定して適切なタブを選ぶため。scripting— DAZN や Kick を許可したときに、そのサイト用のスクリプトを登録するため(許可していないサイトには何も登録しません)。
DAZN(https://www.dazn.com/*)と Kick(https://kick.com/* と https://player.kick.com/*)へのアクセスは任意の権限で、そのサイトのタブの「このサイトで有効にする」を押して許可したときだけ付与されます。許可はブラウザの拡張機能の管理画面からいつでも取り消せます。
解析・テレメトリ・識別子・広告は一切ありません。詳しくはプライバシーポリシーをご覧ください。
12 お問い合わせ
| 用途 | 窓口 |
|---|---|
| 不具合の報告 | GitHub Issues(バグ報告テンプレート) |
| 質問・機能要望・対応サイトの追加要望・翻訳の指摘 | GitHub Discussions |
| 脆弱性の報告 | GitHub Security Advisories(非公開で報告) |
脆弱性は非公開でご報告ください。公開 Issue は事実上エクスプロイトの公表になります。
不具合報告時は、サイト・ブラウザとバージョン・拡張機能のバージョン・OS・起きたこと・再現手順・既定値から変更した設定、可能であればデバッグログを添えてください。
13 ライセンス
Apache License 2.0 または MIT License のデュアルライセンスです。どちらか好きな方を選んで利用できます。