"Video File Not Found for This Quality": cause e soluzioni
Questo errore significa che il sistema di riproduzione (browser, app, CDN, encoder) non riesce a localizzare una versione corrispondente alla qualità richiesta. È una discrepanza manifest-to-segment.
Cause principali (dalla più alla meno comune)
| Causa | Dove si manifesta | Soluzione |
|---|---|---|
| Versione mancante dall'output dell'encoder | Transcoder (AWS MediaConvert, Mux, Bitmovin, FFmpeg) | Esegui di nuovo l'encodifica. Controlla la ladder: 1080p, 720p, 480p, 360p tutti presenti. |
| Manifest (M3U8/MPD) riferisce segmenti inesistenti | Packager / Origin | Rigenera il manifest. Valida con ffprobe -show_segments o hlsvalidator.com. |
| Mancata corrispondenza cache CDN / Origin | Edge cache ha manifest vecchio, segmenti nuovi (o viceversa) | Pulisci cache CDN (Cloudflare, Akamai, CloudFront). Attendi scadenza TTL. |
| Fallimento licenza DRM per qualità specifica | License Server (Widevine, PlayReady, FairPlay) | Controlla log licenze. Rotazione chiave? Mismatch output protection (HDCP) sul dispositivo? |
| Bug logica ABR (Player) | Video.js, hls.js, Shaka, ExoPlayer, AVPlayer | Aggiorna player. Logga eventi cambio qualità. Fallback manuale a qualità inferiore. |
| Corruzione storage / Origin | S3, GCS, Azure Blob, Origin Shield | Verifica oggetto esiste (HEAD request). Controlla etag/dimensione. Ricarica segmenti mancanti. |
| Restrizione geografica / dispositivo | Token auth, geo-block, device allowlist | Conferma token include qualità richiesta. Testa da regione/dispositivo consentito. |
| Live Stream: segmento non ancora pubblicato | Live Packager (MediaLive, Wowza, Nimble) | Buffer di latenza troppo basso. Aumenta targetDuration / player liveSyncDuration. |
Checklist di debug
- Apri DevTools → Network → Filtra "m3u8" o "mpd" → Clicca manifest → Verifica che le voci
EXT-X-STREAM-INFbandwidth corrispondano agli URL dei segmenti. - Copia un URL di segmento fallito → Incolla nel browser. 404? → Problema Origin/CDN. 200? → Problema Player/DRM.
- Testa con HLS Validator o DASH-IF Conformance.
- Controlla log encoder: "Failed to write segment," "Disk full," "License error."
- Log player:
videojs.log.level('debug'),hls.js config.debug=true.
Soluzioni rapide per gli spettatori
- Seleziona manualmente qualità inferiore nel menu ingranaggio del player.
- Aggiorna pagina / riapri app (forza nuovo fetch del manifest).
- Svuota cache browser / dati app.
- Prova diverso CDN PoP (VPN / ISP diverso).
Per ingegneri: Implementa laddere di encodifica ridondanti (due pipeline di encodifica indipendenti) + validazione manifest pre-pubblicazione + purga cache CDN al deploy. Monitora segment_404_rate alert > 0.1%.