unity-game-engine - 在 unity3D 应用程序中显示 Twitch.tv 流

标签 unity-game-engine video-streaming twitch

我想制作一个 Unity3D 应用程序,可以在其中观看当前的 Twitch.tv 直播。

我不确定这是否可行,例如使用 twitch api ( https://github.com/justintv/twitch-api )

我了解 Unity3D 中的视频纹理,并且知道如何使用默认的 twitch api 基础知识,但我不知道如何将正在运行的 twitch 流集成到我的应用程序中。

如果可能的话,有人可以给我提示吗?

非常感谢并致以最诚挚的问候 梅夫

最佳答案

最终来自 twitch 的流是 MPEG-4 (H264/M3U)。因此,如果您可以在 Unity 中渲染它,那么您就可以渲染抽搐流。

需要执行几个步骤才能获取 twitch 请求的正确网址,并且这些步骤可能会随着时间的推移而发生变化。您必须在播放流时检查当前的 twitch 页面,以查看 javascript 如何构建请求(url 和 header )。

最后,JavaScript 将构建一个访问 token ,然后使用它从其中一台 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 就会更新一次,旧文件会随着新文件添加到底部而滚落。当缓冲区耗尽时,您需要每隔几秒重新请求一次该文件,并请求其中的新剪辑以保持播放继续。

关于unity-game-engine - 在 unity3D 应用程序中显示 Twitch.tv 流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34857327/

相关文章:

unity-game-engine - 启用 Vuforia 时 Unity 崩溃

iphone - 我尝试构建的任何应用程序都会在 Unity 初始屏幕上崩溃

unity-game-engine - 从外部源读取电影或更新 Assets

html - Chatroulette Clone - 没有 Adob​​e 的方法?

javascript - 使用 Twitch API 检索信息

c# - C# 脚本中的线程安全

FFMPEG - 更正命令行参数以从一组图像创建 H.264 流 MP4

search - YouTube与该应用的集成

python - 如何将 Twitch IRC 响应中的表情解析为字典列表?

nginx - 使用 nginx rtmp 在多个流输入之间切换