ブラウザ内のローカル処理。動画が当サイトにアップロードされることはありません。プライバシーの仕組みを確認
HLSトラブルシューティングガイド

M3U8ストリーム読み込み時のHLS CORSエラーを修正する方法

M3U8ストリームのHLS CORSエラー修正。レスポンスヘッダーの不足、ブロックされるセグメント、リダイレクト、署名付きURL、VLCでは再生できるのにブラウザでは再生できない理由を解説します。

M3U8のCORSエラーがブラウザでの再生・変換を妨げる理由

ブラウザのページがプレイリストを読めるのは、メディアホストがそのページのオリジンを許可している場合だけです。プレイリスト、子プレイリスト、暗号鍵、初期化マップ、そしてすべてのメディアセグメントのそれぞれが、クロスオリジンレスポンスの成功を必要とします。

新しいタブでURLを開けば、サーバーがバイトを返せることは分かりますが、別オリジンのJavaScriptがそれを読み取れることまでは証明されません。VLC、FFmpeg、ネイティブアプリは、ブラウザの同一オリジンポリシーを同じようには強制しません。

ストリームの管理者がM3U8のCORSレスポンスヘッダーを修正する方法

CDNやオブジェクトストレージを設定し、Webアプリのオリジンに対してAccess-Control-Allow-Originを返し、GETとHEADを許可し、レンジリクエストを使う場合はContent-LengthとContent-Rangeを公開し、カスタムヘッダーがプリフライトを引き起こす場合はOPTIONSリクエストが成功するようにしてください。

最終的なセグメントレスポンスだけでなくリダイレクトも確認してください。正しく設定されたマスタープレイリストでも、子プレイリストやセグメントのホストがCORSヘッダーを欠くと失敗することがあります。

  • マスタープレイリストと1つのメディアセグメントをテストする
  • リダイレクトレスポンスを確認する
  • EXT-X-BYTERANGE使用時はレンジリクエストを検証する

このM3U8ツールが公開CORS回避プロキシを提供しない理由

汎用プロキシは非公開URLを露出させ、大量の帯域を消費し、デバッグツールを運営者が管理しないメディアの中継装置に変えてしまう恐れがあります。そのためM3U8toMP4.orgは、ブラウザとソースの間のデータ経路を直接のまま保っています。

ソースを所有している場合は、サーバー設定を修正してください。社内の非公開システムには、オープンなプロキシではなく、認証、URLの許可リスト、リクエスト制限、監査ログを備えた管理された同一オリジン中継を運用してください。