Ok ho capito, ma è complicato. Scrivo giù tutto prima che mi dimentichi.
Il tutto inizia da una funzione "checkTypeMediapolisfunction". Belli i nomi eh? Questa decide in sostanza il formato che deve essere richiesto al server. I tre formati sono "
native" (cioè il file MP4 crudo),
flash (cioè streaming adattivo con manifest f4m con Flash Player) e "
mon" (cioè streaming HLS HTML5, sempre adattivo). La funzione, per decidere i formati, interroga il player (MediaelementJS, molto noto e diffuso) che decide di richiedere "native" se il tag video HTML5 è supportato, "flash" se MediaelementJS (mejs) ha individuato il supporto a Flash nel browser o "mon" se c'è il supporto a HLS nel browser.
I tre formati non si escludono. Un browser moderno li avrà tutti e tre, uno antico supporterà solo Flash, uno che è una via di mezzo soltanto "native" (cioè quel succoso file MP4). Ora, succedono due cose strane:
1) Safari: quando mejs controlla il supporto a HLS nel browser, usa un'altra libreria JavaScript che si chiama hls.js (e che si occupa di gestire appunto lo stream HLS). Questa libreria funziona su Safari, ma è in beta. La Rai ha evidentemente copiato codice
da qua, dove viene escluso il supporto a HLS perché è in beta. Per questo il formato scelto è il successivo cioè flash
2) quando i formati supportati sono individuati, viene fatta richiesta al relinker mediapolis (chi sa come funzionano sa quanto si possano odiare), passando come parametro i formati. I formati sono sempre in questo ordine: mon (HLS), flash, native. Quando il server se ne trova più di uno, sceglie il primo (strategia sofisticata eh?). Quindi, quando c'è il supporto a HLS, il client chiede il relinker inviando come primo formato HLS, e il server ritorna l'URL m3u8, con bitrate che però si ferma al massimo a 2400 kbps. Quando invece "flash" è il primo formato (cioè soltanto quando HLS non c'è), il manifest include tutti i bitrate.
Lo streaming HLS si può però forzare richiedendo bitrate più alti, e funziona perfettamente. A questo punto mi vengono da pensare due opzioni: c'è un errore del server che ritorna l'URL sbagliato quando si richiede HLS; oppure il server HLS è povero e non riuscirebbe a gestire gli stream HLS in FHD, per disponibilità di banda, risorse CPU o chissà cos'altro. Considerando soprattutto che un browser con HLS e Internet a 5 Mbps ce l'hanno praticamente tutti in Italia.
In conclusione: si potrebbe avere il Full HD con HLS? Direi di sì... e forse anche solo con un'estensione del browser che maneggi un po' le funzioni Rai
