来自 twitch 的流最终是 MPEG-4 (H264/M3U)。因此,如果您可以在 Unity 中渲染它,那么您就可以渲染 twitch 流。
有几个步骤可以从 twitch 获取正确的 URL,并且会随着时间的推移而改变。您必须在播放流时检查当前的 twitch 页面,以查看 javascript 如何构建请求(网址和标头)。
最后,javascript 将构建一个访问令牌,然后使用它从其中一个 twitch 边缘服务器请求一个名为 index-live.m3u8 的文件。该文件包含直播流最后几秒的文件名列表(以及一些其他元数据)。它看起来像这样
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
然后,您将index-live.m3u8 替换为列表中的文件名,并请求它获取该剪辑。比如:
https://video-edge-c61b44.lax01.hls.ttvnw.net/v0/[the-same-long-access-token]/index-0000008793-koO4.ts
它将是大约 1 秒长的 MPEG-4 流。该列表大约有 6 个文件长,因此如果您全部请求它们,您可以获得大约 6 秒的缓冲区。
每隔一两秒,index-live.m3u8 就会更新,旧文件会随着新文件添加到底部而滚动。当缓冲区耗尽时,您需要每隔几秒重新请求一次此文件,并请求其中的新剪辑以继续播放。