JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

ChromeのHTML5動画タグでcurrentTimeが無視される原因と対処法

HTML5の<video>タグを使って動画を特定の時刻から再生したいのに、currentTimeを設定しても反映されない——この問題に悩まされている方は少なくありません。特にGoogle Chromeでは、Webサーバー側の設定が原因でシーク機能そのものが無効化されるケースがあります。本記事では、その原因と具体的な対処法を解説します。

currentTimeが無視される主な原因:バイトレンジ非対応

最も多い原因は、WebサーバーがHTTPのバイトレンジ(Rangeリクエスト)に対応していないことです。

Chromeをはじめとするモダンブラウザは、動画をシーク再生する際に、ファイル全体ではなく必要な部分だけをサーバーから取得します。この動作にはHTTPヘッダーのRangeリクエストと、それに対する206 Partial Contentレスポンスが必要です。

もしサーバーがバイトレンジに対応していなければ、ブラウザは動画の途中からデータを取得できず、結果としてシーク操作が無効になり、currentTimeを設定しても機能しなくなります

curlコマンドでサーバーの対応状況を確認する

自分のWebサーバーがバイトレンジに対応しているかどうかは、以下のcurlコマンドで簡単にテストできます。

curl --dump-header - -r0-0 https://theurl

このコマンドは、動画URLに対して「0バイト目だけを取得する」Rangeリクエストを送信し、レスポンスヘッダーを表示します。

結果を確認するポイントは次のとおりです。

  • Accept-Ranges: bytes というヘッダーが返ってくれば、サーバーはバイトレンジに対応しています。
  • HTTP/1.1 206 Partial Content が返れば、Rangeリクエストが正しく処理されています。
  • 逆に 200 OK のみが返り Accept-Ranges ヘッダーがない場合は、対応していない可能性が高いです。

サーバー側での対処方法

バイトレンジに対応していない場合は、以下の点を見直してみてください。

  • Apacheの場合: mod_deflateなどによる動的な圧縮が動画ファイルに適用されていると、Rangeリクエストが無効になることがあります。動画ファイル(mp4など)を圧縮対象から除外しましょう。
  • nginxの場合: 基本的にバイトレンジは標準でサポートされていますが、プロキシやCDNを挟んでいる場合は設定を確認してください。
  • PHPやCGI経由で配信している場合: スクリプトがファイル全体を出力しているとRangeリクエストに応答できません。静的ファイルとして直接配信するか、レンジ対応の配信ライブラリを利用しましょう。

サーバーがAccept-Ranges: bytesを正しく返すようになれば、ChromeでもcurrentTimeによる指定時刻からの再生が正常に動作するようになります。

  1. Chromeウェブストアの拡張機能をMicrosoft Edgeにインストールする2つの方法

    この記事では、Chromiumエンジンを搭載した新しいMicrosoft Edgeブラウザーで、Chromeウェブストアから拡張機能を入手・インストールする方法を詳しく解説します。なお、ここで紹介する手順は新しいMicrosoft Edge専用です。Windows 10に標準搭載されていた旧バージョン(レガシー版)のEdgeでは利用できないのでご注意ください。 EdgeにChromeの拡張機能をインストールする EdgeにChromeの拡張機能を追加するには、「Chromeウェブストアに直接アクセスする方法」と「Edgeの設定画面からアクセスする方法」の2通りがあります。それぞれの手順を見てい

  2. Mac用動画ダウンローダー「Downie」でWeb動画を簡単ダウンロードする方法

    インターネットの世界がどれほど速く変化しているか、驚かされるばかりです。わずか数年前、ダイヤルアップモデムが接続のたびに奇妙な音を鳴らしていた時代には、数キロバイトのウェブページ画像を、訪問者が読み込みやすいように細かく分割して配置するのが常識でした。ところが今では、昼休みにスマートフォンで数百メガバイトの動画を視聴するのがごく普通になっています。Web上には膨大な数の動画が存在し、必ずしもストリーミングで視聴できるとは限りません。オフライン環境で視聴するために動画をダウンロードしたい場合、動画ダウンローダーの力を借りる必要があります。数あるツールの中でも、Downie(19.99米ドル)は最