IMGLAB
Video Speed Control
あらゆるサイトで動画の再生速度を自在にコントロール。ドラッグ可能なオーバーレイ、13個の再設定可能なキーボードショートカット、サイトごとの速度記憶、そして YouTube の SPA ナビゲーションにも完全対応。登録不要・広告なし・完全無料。
サイト数
ショートカット
ステップ
不要
すべての設定をひとつのパネルで
ポップアップを開くと設定タブがデフォルトで表示されます。優先速度・ステップ幅・最小/最大速度・サイクル速度・コントローラーの透明度・サイト別記憶を設定できます。変更はページを再読み込みせず即時反映されます。
- ✓ 優先速度・ステップ(±)・最小/最大速度をすべて設定可能
- ✓ サイクル速度チップ — ワンクリックで追加・削除
- ✓ ヘッダーの速度バッジで − / + をクリックして即時調整
- ✓ 速度バッジをダブルクリック → 1× ↔ 優先速度を切り替え
- ✓ コントローラーの不透明度・非表示起動・サイト別速度記憶
- ✓ 下部に固定された「保存」と「デフォルトに戻す」ボタン
すべてのショートカットをポップアップから変更可能
ショートカットタブには13個のデフォルトキー設定が一覧表示されます。キーバッジをクリックすると紫色に変わり「…」が表示されてキー入力を待機します。Escape でキャンセル。行にカーソルを合わせると ↺ リセットボタンが出現します。
- ✓ キーバッジをクリックして記録開始 — 任意のキーを押して保存
- ✓ Escape でキャンセル — 現在のキーは変更されない
- ✓ 巻き戻し・早送り・音量・速度アクションに数値入力フィールド
- ✓ 各行にホバーで ↺ リセットボタンが表示
- ✓ スクロール可能なリスト — 13項目をコンパクトに表示
- ✓ 「設定を保存」後に即時反映
すべての動画に [ − ] [ 1.50 ] [ + ] [ × ] のコントローラーが自動で表示されます。速度表示部分をつかんでドラッグ移動が可能。ダブルクリックで 1× と優先速度を切り替えます。Shadow DOM 内に構築されているためページのスタイルに干渉しません。
速度アップ・ダウン・リセット・サイクル・巻き戻し・早送り・コマ送り・音量・一時停止 — すべてキーボードで操作可能。ポップアップからすべてのキー設定を変更できます。キャプチャフェーズで割り込むため、ページがキーを奪おうとしても確実に動作します。
サイトごとに速度を記憶します。YouTube は 1.5×、講義サイトは 2×、映画は 1× と、各ホスト名が最後に使用した速度を chrome.storage.sync に保存。初めて訪れるサイトは優先速度から自動で開始します。
B キーでサイクルリストを順番に切り替えます(デフォルト:1.25× → 1.50× → 1.75×)。現在の速度がリストにない場合は最も近い値にジャンプして続行。設定タブから自由にカスタマイズできます。
動画を一時停止して , / . でコマ送りができます(30fps 想定、約33ms/コマ)。あらゆるサイトで動作します。YouTube では精度向上のため、これらのキーは YouTube のネイティブ処理に委ねます。
YouTube などのサイトは新しい動画の読み込み時に playbackRate をリセットします。IMGLAB は play イベントを監視し、サイトが勝手に速度を変えた場合にすぐ再適用します。意図しない速度リセットがなくなります。
13種のショートカットはすべて <video> 要素があるサイトで動作します。YouTube では矢印・スペース・カンマ・ピリオドなど YouTube が標準で使用するキーは意図的にそのまま渡します。YouTube のシーク animation・+5秒バブル・プログレスバー・キーボード UI がすべて正常に動作します。速度制御キーは YouTube でも常に有効です。
Chrome API にアクセスできる隔離された拡張機能コンテキストで動作します。保存済みの設定とサイト別速度を読み込み、<script type="application/json"> データタグ経由でページに渡します。その後 inject.css と inject.js を実際のページコンテキストに注入し、ページと拡張機能の間のすべてのメッセージをブリッジします。
実際のページコンテキストで動作します。querySelectorAll で <video> 要素を検索し、小さいサムネイルや YouTube のホバープレビューを除外した上で、各動画に Shadow DOM コントローラーを取り付けます。MutationObserver が動的に追加・削除される動画を監視し、無限スクロール・SPA ルーティング・遅延ロードのプレイヤーにも対応。ロード後 1秒・3秒後にも再スキャンします。
各オーバーレイは Shadow DOM (mode: 'open') 内にレンダリングされ、ページのスタイルから完全に隔離されます。ラッパーには pointer-events: none が設定されているため動画クリックをブロックせず、Shadow 内の #ctrl・ボタン・ドラッグハンドルには pointer-events: auto が設定されてオーバーレイが正しくインタラクティブに動作します。
chrome.storage.sync の操作全般、サイト別速度メモリー(ホスト名をキーとする sitesSpeeds オブジェクト)、拡張機能ツールバーアイコンの速度バッジを管理します。すべての設定をデバイス間で同期・ブラウザ再起動後も保持します。ポップアップはすべてのストレージ読み書きをサービスワーカー経由で行います。
YouTube はシングルページアプリケーションです。サブページから動画をクリックしても、YouTube は <video> 要素を削除・再追加せず、同じ要素を別の親コンテナに移動します。そのため MutationObserver は反応しません。IMGLAB は YouTube 独自の yt-navigate-finish イベントを監視し、古くなったコントローラー(ラッパーが誤った親に付いている状態)を検出して正しい親に再アタッチし、速度を再適用します。
YouTube のスペース・矢印・カンマ・ピリオドのハンドラーは実行に 80〜100ms かかります。「80ms 観察してから判断」というアプローチでは、拡張機能と YouTube の両方が同じキー押下を処理してしまいます。タイミングの綱引きをするのではなく、IMGLAB は YouTube ではこれらのキーを完全にスキップします。YouTube のシークアニメーション・+5秒バブル・プログレスバー・コマ送りがすべて正常に動作し続けます。
YouTube のサムネイルにカーソルを合わせると、カード内でプレビュー動画が再生されます。IMGLAB はこれらへのオーバーレイ取り付けを2段階でブロックします:最小サイズチェック(200×100px 未満)と YTD-VIDEO-PREVIEW 祖先タグの確認。大画面ではサムネイルがしきい値を超えることがあるため、祖先タグの確認が決定的な防御策となります。
SPA ナビゲーション中、yt-navigate-finish が発火するまでの短い間、コントローラーの Map に古いエントリが残ったまま動画が移動します。キーボードハンドラーの document.contains(video) チェックにより、この過渡期に古い状態がキーイベントを奪うことを防ぎます。ナビゲーション中も矢印キーは常に YouTube に届きます。
デフォルトの優先速度 1.5× で視聴。拡張機能アイコンの速度バッジがリアルタイムで更新されます。
講義コンテンツは毎回自動で 2× 再生。二度と手動設定する必要はありません。
映画は通常速度で。各サイトの速度は独立しているため Netflix の変更が YouTube に影響しません。
初めて訪れるサイトは設定した優先速度から自動的にスタート。手動設定は不要です。
{ "hostname": speed } の形式で chrome.storage.sync の sitesSpeeds キーに保存され、すべての Chrome プロファイルに自動同期されます。設定の「サイト別速度を記憶」をオフにするとグローバルに無効化できます。B でサイクル切り替え。現在の速度がサイクルリストにない場合、findIndex は -1 を返し (-1 + 1) % length = 0 となるため、最初のサイクル速度にジャンプして続行します。リスト外の速度でスタックすることはありません。
YouTube 以外のサイトでは、スペース・カンマ・ピリオドに 80ms の観察遅延を使用します。video.paused または currentTime が変化したかを確認し、サイトが処理済みなら何もしません。未処理なら拡張機能が対応します。独自プレイヤーを持つサイトでの二重発火を防ぎます。
<input>・<textarea>・<select>・contentEditable 要素に入力中はショートカットが発火しません。isTypingContext() チェックがすべての keydown 前に実行されるため、検索やコメント入力中に誤って速度が変わることがありません。
最初の scanVideos() は DOMContentLoaded で実行され、さらにロード後 +1秒・+3秒後に再スキャンします。MutationObserver がいつでも動的に追加された動画をキャッチします。無限スクロール・iframe 埋め込み・JS レンダリングのプレイヤーを含む、あらゆる動画ロードパターンに対応します。
拡張機能は HTML5 video 要素の video.playbackRate を直接設定します。DRM 保護されたストリーム(Netflix・Disney+・Prime Video など)はプレイヤー SDK によってこの値をリセットすることがあります。これらのサイトでは速度制御が持続しない場合があります。プラットフォームの制限であり、バグではありません。
オーバーレイのラッパーは動画の親要素内で position: absolute を使用します。動画の親要素に特殊な position や overflow 設定があるサイトでは、オーバーレイがずれて表示される場合があります。現在は主に YouTube と標準的な HTML5 プレイヤーでテストされています。
拡張機能はネイティブの <video> HTML 要素を対象としています。Flash スタイルのオブジェクト・WebGL レンダリング・非標準要素でラップされた動画は検出されません。ただし現代のほとんどの動画サイトはネイティブ video 要素を使用しています。
コマ送りナビゲーションは 1/30秒(33ms)単位で動きます — 30fps を前提としています。24fps・60fps などの場合、ステップ幅が若干ずれます。HTML5 API はブラウザから実際のフレームレートを取得する手段を提供していないためです。
上の 「Chrome に追加 — 無料」 をクリック。Chrome ウェブストアから即座にインストールされます。登録不要、必要最低限の権限のみ使用します。
YouTube・講義サイト・ニュースサイトなど、<video> 要素があるページであればどこでも。動画の左上隅にオーバーレイが自動表示されます。
オーバーレイがリアルタイムで更新されます。V で優先速度にジャンプ、Z で 1× にリセット、B でお気に入りをサイクル。
ツールバーの IMGLAB アイコンをクリック。設定タブがデフォルトで開きます — 優先速度・ステップ幅・サイクルリスト・コントローラーの透明度を調整できます。ショートカットタブから任意のキーを変更できます。
無料 · オープン · コミュニティに支えられています
IMGLAB を維持・更新し続けるために
IMGLAB Video Speed Control は完全無料です。広告なし・データ収集なし・サブスクリプションなし。YouTube SPA ナビゲーション・Shadow DOM のポインターイベント・スマートキーのタイミング — すべての修正に実際の調査とデバッグ時間がかかっています。皆さんのサポートがその費用を支えます。
1回限り · 金額自由 · アカウント不要 · 30秒で完了
IMGLAB が心を込めて制作 ❤️
Ko-fi ·
Buy Me a Coffee ·
[email protected]

