Yaygın M3U8 hataları ve çözümleri

M3U8 playback, download ve conversion hatalarını tanılamak için rehber.

CORS cross-origin error

Error message

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.

Solutions

1. Configure CORS headers on the server

Add Access-Control-Allow-Origin for the domain that loads the M3U8 file.

2. Use a backend proxy

Fetch the playlist through your server when the source cannot expose browser CORS headers.

3. Use same-origin resources

Host the page, playlist, segments, and keys under the same origin when possible.

404 file not found

Error message

GET https://example.com/segment-1.ts 404 (Not Found)
Failed to fetch segment #1 of "https://example.com/playlist.m3u8"

Solutions

1. Check URL paths

Confirm that TS or fMP4 segment paths in the M3U8 file are correct.

2. Verify files exist

Open the segment URL directly and confirm the server returns the media file.

3. Check the base URL

Relative segment paths must resolve against the real playlist location.

Decode or playback error

Error message

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

Solutions

1. Check codecs

Use browser-compatible codecs such as H.264 video and AAC audio.

2. Validate M3U8 syntax

Confirm required tags such as #EXTM3U and #EXTINF are present and valid.

3. Use an HLS player

Use HLS.js or another dedicated player for better browser compatibility.

Network timeout or connection error

Error message

NetworkError: Failed to fetch
ERR_CONNECTION_TIMED_OUT
Manifest request timed out

Solutions

1. Increase timeout settings

Give slow networks more time before declaring the playlist or segment failed.

2. Use CDN delivery

Serve segments through a CDN to reduce global latency and packet loss.

3. Add retry logic

Retry temporary playlist, segment, and key requests before failing playback.

Encrypted content error

Error message

KEY_LOAD_ERROR: Failed to load decryption key
KEY_SESSION_ERROR: Failed to generate license request
DECRYPT_ERROR: Failed to decrypt segment

Solutions

1. Verify the key URL

Make sure the URI in #EXT-X-KEY is reachable and returns the expected key.

2. Check key format

AES-128 keys should be 16 bytes and served without accidental text encoding changes.

3. Configure CORS for keys

The key server must allow the browser to request the key from the playback page.

Önerilen debug tools

Browser DevTools

Requests, headers, status codes ve Console errors kontrol edin.

HLS.js Demo

Direct M3U8 URL’yi bilinen bir HLS player’da test edin.

FFmpeg/FFprobe

Codecs, metadata, segments ve container details inceleyin.

Online M3U8 validator

Playlist syntax’ını HLS gereksinimlerine göre doğrulayın.

Kullanışlı debug commands

Video codec bilgisini kontrol et

ffprobe -v quiet -print_format json -show_streams video.m3u8

M3U8 URL erişimini test et

curl -I https://example.com/video.m3u8

M3U8 indir ve birleştir

ffmpeg -i "https://example.com/video.m3u8" -c copy output.mp4