In definitiva il flusso proveniente da contrazione è MPEG-4 (H264/M3U).Quindi, se puoi renderlo in Unity, puoi eseguire il rendering dei flussi di contrazione.
Ci sono alcuni passaggi per ottenere gli URL corretti richiesti da Twitch e che possono cambiare nel tempo. Dovrai ispezionare una pagina di contrazione corrente mentre è in esecuzione un flusso per vedere come il javascript costruisce la richiesta (url e intestazioni).
Alla fine, il javascript costruirà un token di accesso e quindi lo userà per richiedere un file chiamato index-live.m3u8
da uno dei server periferici. Quel file contiene un elenco di nomi di file per gli ultimi secondi del live streaming (e alcuni altri metadati). Sembra qualcosa di simile
https://video-edge-c61b44.lax01.hls.ttvnw.net/v0/[some-long-access-token]/index-live.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#ID3-EQUIV-TDTG:2017-10-27T16:53:27
#EXT-X-MEDIA-SEQUENCE:8788
#EXT-X-TWITCH-ELAPSED-SECS:17576.000
#EXT-X-TWITCH-TOTAL-SECS:17589.870
#EXTINF:2.000,
index-0000008788-Y6OH.ts
#EXTINF:2.000,
index-0000008789-l0QY.ts
#EXTINF:2.000,
index-0000008790-gCUV.ts
#EXTINF:2.000,
index-0000008791-1ngg.ts
#EXTINF:2.000,
index-0000008792-wpQL.ts
#EXTINF:2.000,
index-0000008793-koO4.ts
È quindi scambiare index-live.m3u8
con il nome di un file nella lista e gli chiede di ottenere che il clip. Qualcosa di simile:
https://video-edge-c61b44.lax01.hls.ttvnw.net/v0/[the-same-long-access-token]/index-0000008793-koO4.ts
Sarà un flusso MPEG-4 circa 1 secondo. L'elenco ha una lunghezza di circa 6 file, quindi se li richiedi tutto, puoi ottenere circa un buffer di 6 secondi.
Ogni secondo o due, index-live.m3u8 viene aggiornato e i file meno recenti si disattivano mentre quelli nuovi vengono aggiunti in fondo. È necessario richiedere nuovamente questo file ogni pochi secondi mentre il buffer si esaurisce e richiedere i nuovi clip al suo interno per mantenere attiva la riproduzione.
fonte
2017-10-27 17:13:19