- ホーム
- M3U8 エラー
M3U8 の一般的なエラーと解決策
M3U8 の再生、ダウンロード、変換失敗を診断するためのガイドです。
CORS クロスオリジンエラー
エラーメッセージ
Access to XMLHttpRequest at 'https://example.com/video.m3u8'
from origin 'https://yoursite.com' has been blocked by CORS policy:
No 'Access-Control-Allow-Origin' header is present on the requested resource.解決策
1. サーバーで CORS ヘッダーを設定
M3U8 を読み込むドメインに Access-Control-Allow-Origin を許可します。
2. バックエンドプロキシを使う
ソースが CORS ヘッダーを出せない場合は自分のサーバー経由で取得します。
3. 同一オリジンに配置
ページ、playlist、segments、keys を同じ origin に置きます。
404 ファイル未検出
エラーメッセージ
GET https://example.com/segment-1.ts 404 (Not Found)
Failed to fetch segment #1 of "https://example.com/playlist.m3u8"解決策
1. URL パスを確認
M3U8 内の TS または fMP4 セグメントパスが正しいか確認します。
2. ファイル存在を確認
セグメント URL を直接開き、サーバーが media file を返すか確認します。
3. ベース URL を確認
相対パスは実際の playlist 位置から解決される必要があります。
デコードまたは再生エラー
エラーメッセージ
MEDIA_ERR_DECODE: The media resource indicated by the src attribute
or assigned media provider object was not suitable.
DOMException: Failed to decode media resource解決策
1. コーデックを確認
H.264 video と AAC audio などブラウザ対応 codec を使います。
2. M3U8 構文を検証
#EXTM3U や #EXTINF など必須タグを確認します。
3. HLS プレイヤーを使う
HLS.js など専用 player で互換性を高めます。
ネットワークタイムアウトまたは接続エラー
エラーメッセージ
NetworkError: Failed to fetch
ERR_CONNECTION_TIMED_OUT
Manifest request timed out解決策
1. タイムアウトを延長
遅いネットワークでも playlist や segment が失敗扱いになるまで待ちます。
2. CDN 配信を使う
CDN で segments を配信して遅延と損失を減らします。
3. リトライを追加
一時的な playlist、segment、key request を再試行します。
暗号化コンテンツエラー
エラーメッセージ
KEY_LOAD_ERROR: Failed to load decryption key
KEY_SESSION_ERROR: Failed to generate license request
DECRYPT_ERROR: Failed to decrypt segment解決策
1. キー URL を確認
#EXT-X-KEY の URI が到達可能で期待する key を返すか確認します。
2. キー形式を確認
AES-128 key は 16 bytes で、text encoding で壊れてはいけません。
3. キーに CORS を設定
key server は playback page からの browser request を許可する必要があります。
推奨デバッグツール
ブラウザ DevTools
Network リクエスト、レスポンスヘッダー、ステータスコード、Console エラーを確認します。
HLS.js Demo
既知の HLS プレイヤーで直接 M3U8 URL をテストします。
FFmpeg/FFprobe
コーデック、ストリームメタデータ、セグメント、コンテナを調べます。
オンライン M3U8 バリデーター
一般的な HLS 要件に対してプレイリスト構文を検証します。
便利なデバッグコマンド
動画コーデック情報を確認
ffprobe -v quiet -print_format json -show_streams video.m3u8M3U8 URL の到達性をテスト
curl -I https://example.com/video.m3u8M3U8 をダウンロードして結合
ffmpeg -i "https://example.com/video.m3u8" -c copy output.mp4次のリソースを試してください: