すべての動画を
自在にコントロール
インストールから上級設定まで完全解説。ドラッグ可能なオーバーレイ・13種のカスタマイズ可能なショートカット・サイト別速度記憶・YouTube SPA ナビゲーション完全対応。
60秒でインストール完了
IMGLAB Video Speed Control は Chrome 拡張機能です。以下の手順に従えば、1分以内にすべての動画に速度コントローラーが表示されます。
製品ページの 「Chrome に追加 — 無料」 をクリック。確認ダイアログが表示されたら 「拡張機能を追加」 をクリックします。Chrome ツールバーに IMGLAB のアイコン ⚡ が表示されます。登録・アカウント・支払いは不要です。
YouTube・講義サイト・ニュースサイトなど、HTML5 の <video> 要素があるページに移動します。対象となる動画の左上隅に速度オーバーレイが自動的に表示されます。初回から設定は不要です。
[ − ] [ 1.50 ] [ + ] [ × ] と表示されます。中央の数字が現在の再生速度です。最初の操作:テキスト入力欄以外の場所をクリックしてページにフォーカスを当て、C キーを押します。オーバーレイが 1.50 から 1.75 に更新されます。X で元に戻ります。拡張機能アイコンの速度バッジもリアルタイムで更新されます。
ツールバーの IMGLAB アイコン ⚡ をクリックしてポップアップを開きます。デフォルトで 設定タブ が表示されます。ここで優先速度・ステップ幅・最小/最大速度・サイクル速度・コントローラーの透明度を設定できます。ショートカットタブ ですべてのキーを変更できます。変更はページ再読み込みなしで即時反映されます。
chrome://extensions/ → 更新)。保存済みの設定とサイト別速度記憶は更新をまたいで自動的に保持されます。オンページ速度コントローラー
コンパクトな [ − ] [ 1.50 ] [ + ] [ × ] オーバーレイがすべての動画に自動アタッチされます。Shadow DOM の内部に構築されているため、ページのスタイルから完全に隔離されており、どのサイトでも同じ外観で表示されます。
[ − ] 速度を1ステップ下げる(デフォルト:−0.25×)
[ 1.50 ] 現在の再生速度を表示 — ドラッグして移動、またはダブルクリックで 1× ↔ 優先速度を切り替え
[ + ] 速度を1ステップ上げる(デフォルト:+0.25×)
[ × ] オーバーレイを非表示にする。H キーで再表示できます
オーバーレイ中央の速度数字をクリック&ドラッグして動画上の任意の場所に移動できます。現在のセッション中は位置が保持されます。ページを更新するか動画プレイヤーが変わるまで位置は維持されます。
速度数字をダブルクリックすると 1× と優先速度(デフォルト:1.5×)を即時切り替えできます。細部を確認するために一時的に遅くして、またすぐに通常視聴速度に戻したいときに便利です。ポップアップの速度バッジでも同じダブルクリック切り替えが使えます。
オーバーレイは 200 × 100 px より大きい動画にのみアタッチされます。小さいサムネイルプレビュー・広告プレイヤー・装飾的な背景動画はスキップされます。YouTube では、サムネイルカード内のホバープレビュー動画を祖先要素チェック(YTD-VIDEO-PREVIEW)で追加ブロックしています — 大画面ではサムネイルがサイズしきい値を超えることがあるためです。
ポップアップ完全ガイド
⚡ 拡張機能アイコンをクリックするとポップアップが開きます。デフォルトで設定タブが表示されます。設定・ショートカットの2タブで、ポップアップを離れることなくすべてを制御できます。
ヘッダーには常に現在タブの速度がバッジ(例:1.25×)として表示されます。[ − ] と [ + ] ボタンはアクティブなタブの速度を即時変更します — 設定タブを開いていなくても使えます。速度バッジをダブルクリックすると 1× ↔ 優先速度を切り替えます。
優先速度 — V キーを押したとき、またはオーバーレイをダブルクリックしたときにジャンプする速度。デフォルト:1.5×
ステップ(±) — X/C キーやオーバーレイの ± クリック1回あたりの速度変化量。デフォルト:0.25×。細かく制御したい場合は 0.05 に、大きく動かしたい場合は 0.5 に設定します
最小速度 — 設定できる最低速度。デフォルト:0.5×。誤って極端に遅くなるのを防ぎます
最大速度 — 設定できる最高速度。デフォルト:2.0×。3× や 4× で視聴する場合は引き上げてください
サイクルリストは B キーで順番に切り替える速度を定義します。デフォルト:1.25× → 1.50× → 1.75×。チップの × をクリックして削除、新しい速度を入力して 「追加」 を押すと追加されます(リストは自動ソートされます)。
不透明度 — 通常時のオーバーレイの透明度。デフォルト:0.85。ホバー時はこの設定に関わらず常に完全表示(1.0)になります
非表示で起動 — オンにすると、すべての新しい動画でオーバーレイが非表示の状態で起動します。H キーで表示できます。キーボードショートカットのみ使用したい場合に便利です
サイト別速度を記憶 — オン(デフォルト)にすると、各サイトのホスト名が最後に使用した速度を記憶します。すべてのサイトを常に優先速度から開始したい場合はオフにしてください
設定を保存 — すべての現在の値を chrome.storage.sync に保存します。ボタンが一時的に緑色になり「✓ 保存しました!」と表示されて確認できます。変更はアクティブなタブにも即時反映されます。デフォルトに戻す — 確認ダイアログの後、すべての設定を出荷時の初期値にリセットします。
13種のデフォルトショートカット
すべてのショートカットはショートカットタブから変更できます。ショートカットはキャプチャフェーズ割り込みで動作するため、ページのキーハンドラーより先に発火し、キーボード処理が重いサイトでも確実に機能します。input・textarea・contentEditable 要素に入力中はショートカットは発火しません。
スマートキー処理の仕組み(YouTube 以外のサイト)
YouTube 以外のサイトでは、この3つのキーは処理前に短い観察ウィンドウを使います。keydown が発火してから 80ms 待機し、動画の paused 状態または currentTime が 0.05秒以上変化したか確認します。変化があればサイトがキーを処理済みと判断し、拡張機能は何もしません。
80ms 後に何も変化がなければ、拡張機能が自分のアクションを実行します — スペースなら一時停止/再生、カンマ/ピリオドならコマ送り。これにより独自のスペース・コマ送りハンドラーを持つサイトでの二重発火を防ぎつつ、これらのキーをまったく処理しないサイトでも正しく機能します。
カンマ(コマ戻し)とピリオド(コマ送り)は動画が一時停止中のときにのみ発火します。再生中はこれらのキーは何もしません — サイト自身のカンマ/ピリオドハンドラー(もしあれば)がイベントを受け取ります。コマ送りのステップ幅は 1/30秒(約 33ms)で、30fps を前提としています。
スマートな YouTube サポート
YouTube は3つの理由から特別な処理が必要です。IMGLAB はこれらすべてを自動的に処理します — YouTube で正しく動作させるために設定を変える必要はありません。
YouTube はシングルページアプリケーションです。サブスクリプションページから動画をクリックすると、YouTube は <video> 要素を削除・再追加するのではなく、同じ要素を新しい親コンテナに移動します。そのため MutationObserver は発火しません。IMGLAB は YouTube 独自の yt-navigate-finish イベントを監視し、古くなったコントローラー(ラッパーが誤った親に付いている状態 → 不可視 rect)を検出して正しい親に再アタッチし、保存済みの速度を再適用します。
YouTube のスペース・矢印・カンマ・ピリオドのハンドラーは実行に 80〜100ms かかります。「80ms 待って確認する」アプローチは YouTube が境界ギリギリのタイミングになることがあるため失敗します — 両方のハンドラーが同じキー押下に反応してしまいます。不安定なタイミング競争の代わりに、IMGLAB はこれらのキーを YouTube では完全にスキップします。YouTube のシークアニメーション・+5秒バブル・プログレスバー・コマ送りがすべて YouTube の意図通りに動作します。
YouTube のサムネイルにカーソルを合わせると、カード内で短いプレビュー動画が再生されます。IMGLAB はこれらへのオーバーレイアタッチを2段階でブロックします:最小サイズチェック(200 × 100px 未満)と YTD-VIDEO-PREVIEW の祖先タグチェック。大画面ではサムネイルカードがしきい値を超えることがあるため、サイズチェックだけでは不十分です — 祖先タグチェックが決定的な防御策です。
SPA ナビゲーション間、yt-navigate-finish が発火するまでの短い時間、コントローラーの Map に古いエントリが残っています。キーボードハンドラーの document.contains(video) チェックにより、この過渡期に古い状態が矢印キーで e.preventDefault() を呼ぶことを防ぎます — YouTube のシークは常にイベントを受け取ります。
すべてのサイトが速度を記憶する
「サイト別速度を記憶」が有効(デフォルト)な場合、訪れた各サイトが最後に使用した速度を保存します。次回そのサイトで動画を開くと、IMGLAB が保存済みの速度に自動設定します — 手動で設定し直す必要はありません。
速度は { "hostname": speed } の形式で chrome.storage.sync の sitesSpeeds キーに保存されます。ホスト名は正規化されます — www. が除去されて小文字化されます。そのため www.youtube.com と youtube.com は同じキーを使います。
初めて訪れるサイトは設定した優先速度(デフォルト:1.5×)から開始します。速度を変えた瞬間にその値がホスト名に紐付けて保存され、次回訪問時に復元されます。
YouTube など一部のサイトは新しい動画の読み込みや自動再生時に playbackRate をリセットします。IMGLAB は play イベントを監視し、サイトが速度を変えた場合(video.playbackRate が currentSpeed と 0.01 以上異なる場合)に即座に再適用します。
速度は chrome.storage.sync を通じてすべての Chrome プロファイルに同期されます。仕事用ノートパソコンで YouTube を 1.5× に設定すると、自宅のデスクトップで YouTube を開いても 1.5× から始まります。「サイト別速度を記憶」を設定でオフにすれば、他の設定を保持したままメモリー機能だけを無効にできます。
既知の制限事項
拡張機能は HTML5 video 要素の video.playbackRate を直接設定します。DRM 保護コンテンツを持つサイト(Netflix・Disney+・Amazon Prime Video など)は独自プレイヤー SDK によって再生速度をリセットします。これらのプラットフォームでは速度設定が持続しない場合があります。
オーバーレイのラッパーは動画の親要素内で position: absolute を使用します。動画の親要素に特殊な positioning コンテキスト・overflow クリッピング・CSS トランスフォームがあるサイトでは、オーバーレイが表示エリア外にずれて表示される場合があります。
拡張機能はネイティブの <video> HTML 要素をスキャンして動画を検出します。WebGL・Flash スタイルのオブジェクト・完全カスタムレンダリングパイプラインで構築されたプレイヤーは検出されず、オーバーレイが表示されず速度ショートカットも反応しません。
<video> 要素を使用しています。特定のサイトで動作しない場合は、ブラウザのコンソールでエラーを確認してご報告ください。コマ送りナビゲーションは 1/30秒(約 33ms)単位で動きます — 30fps を前提としています。24fps の映画コンテンツではステップが1フレームを少し超えます。60fps コンテンツではフレームの途中に着地します。HTML5 API はビデオの実際のフレームレートを公開する手段を提供していません。
スペース・カンマ・ピリオドは YouTube 以外のサイトで 80ms の観察遅延を使用します。あるサイトのスペースハンドラーが 80ms を超えるとサイトのハンドラーと拡張機能の両方が発火して二重一時停止が発生することがあります。
YouTube の SPA 修正は YouTube 独自の yt-navigate-finish イベントを使用しています。他の SPA サイト(Vimeo・Twitch など)でも <video> 要素を削除せずに再利用する可能性がありますが、検出する同等のイベントがありません。これらのサイトではナビゲーション後にオーバーレイの位置がずれる場合があります。
サポート & 寄付
この拡張機能は
皆さんのサポートで成り立っています
IMGLAB Video Speed Control は完全無料です — 広告なし・データ収集なし・サブスクリプションなし。YouTube SPA ナビゲーション・Shadow DOM のポインターイベント・スマートキーのタイミングなど、すべての修正に実際のデバッグ時間がかかっています。皆さんのサポートがその費用を支えます。
このプロジェクトが成長し続けられるかどうかは、率直に言ってコミュニティのサポート次第です。このツールで動画を速く視聴し、講義を効率よく吸収し、コマ送りで作業しているなら — ワンタイムのコーヒー1杯が「続けてください」という一番の伝え方です。
chrome://extensions/ で拡張機能が有効になっているかも確認してください。yt-navigate-finish を使って再アタッチします。数秒後も解消しない場合はページを更新してください。v1.1.0 以降を使用していることを確認してください。playbackRate をリセットする DRM 保護ストリームを使用しています。いかなる拡張機能でも修正できません — プラットフォームが強制しています。
