- Inicio
- Errores M3U8
Errores comunes de M3U8 y soluciones
Guía para diagnosticar fallos de reproducción, descarga y conversión M3U8.
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 resourceSolutions
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 outSolutions
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 segmentSolutions
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.
Herramientas de depuración recomendadas
DevTools del navegador
Revisa requests, headers, códigos y errores de Console.
HLS.js Demo
Prueba una M3U8 URL directa en un player HLS conocido.
FFmpeg/FFprobe
Inspecciona codecs, metadatos, segmentos y contenedores.
Validador M3U8 online
Valida la sintaxis de la playlist con requisitos HLS comunes.
Comandos útiles
Ver información de codecs
ffprobe -v quiet -print_format json -show_streams video.m3u8Probar alcance de M3U8 URL
curl -I https://example.com/video.m3u8Descargar y unir M3U8
ffmpeg -i "https://example.com/video.m3u8" -c copy output.mp4Prueba estos recursos: