【发布时间】:2014-10-09 01:55:00
【问题描述】:
我已经开始了一个小型 android 项目,它的最后一个功能是观看 twitch 流,但我遇到了挫折。我红了抽搐API,后来发现this post。我的想法如下:
-获取特定游戏的抽搐流媒体列表。
-当点击列表中的一个元素时打开流并播放。
在阅读了这两个来源之后,我使用 arrayadapter 制作了一个 listfragment 并使用 volley 加载了来自 https://api.twitch.tv/kraken/streams?game=(MyGame) 的响应。 例如:
https://api.twitch.tv/kraken/streams?game=League%20of%20Legends
我收到了 25 个顶级流媒体的 JSON 响应并显示它们。这是我遇到问题的地方。我不知道如何获取流视频 URL。
根据我的第二个链接,我必须获得不同的质量流视频:
1) 从 http://api.twitch.tv/api/channels/(CHANNELNAME)/access_token 获取令牌
收到的响应如下所示:
{ token: "{"user_id":null,"channel":"riotgames","expires":1408096127,"chansub":{"view_until":1924905600,"restricted_bitrates":[]},"private":{"allowed_to_view":true},"privileged":false}",
sig: "c81dfc25b90d44ea107cdeae5371df28185bd0dd",
mobile_restricted: false
}
此响应有 3 个值:token、sig 和 mobile_restricted。
2) 使用这个 http://usher.twitch.tv/select/(CHANNELNAME).json?nauthsig=(SIG)&nauth=(TOKEN)&allow_source=true ,我使用 json 令牌响应填写字段
http://usher.twitch.tv/select/riotgames.json?nauthsig=c81dfc25b90d44ea107cdeae5371df28185bd0dd&nauth="{"user_id":null,"channel":"riotgames","expires":1408096127,"chansub":{"view_until":1924905600,"restricted_bitrates":[]},"private":{"allowed_to_view":true},"privileged":false}"&allow_source=true
,但我得到的回复总是:
[]
根据我的理解,这意味着该流不是直播的?但同时我可以看到流在进行。
我的问题是:如何获得不同质量的直播网址?我称呼他们的方式有什么问题?
作为免责声明:我对任何类型的编程都非常陌生,所以我不会假装什么都懂。我可能忽略了某些东西或明显错过了它。另外,我似乎不能发布超过 2 个链接,所以我在 http 之后添加了一个额外的空间。
编辑:在@rcxrdx 的帮助下,我得到了我正在寻找的响应。他指出的是我必须正确编码令牌。下面是一个编码的 url 示例,用于接收具有所有视频质量的字符串响应:
http://usher.twitch.tv/select/reckful.json?segment_preference=2&player=twitchweb&nauth=%7B%22user_id%22%3Anull%2C%22channel%22%3A%22reckful%22%2C%22expires%22%3A1408897471%2C%22chansub%22%3A%7B%22view_until%22%3A1924905600%2C%22restricted_bitrates%22%3A%5B%5D%7D%2C%22private%22%3A%7B%22allowed_to_view%22%3Atrue%7D%2C%22privileged%22%3Afalse%7D&allow_source=true&type=any&nauthsig=b0e19347528f3675612d4c5d1a030bfa8d9ffb13
我失去了一些时间的是,当您收到访问令牌时,如果您没有登录,则 user_id 将返回 null。在大多数示例中,例如我添加到顶部的博客文章中的示例,请不要明确说明。所以是的,如果有人想播放 twitch 视频,层次结构如下:获取 access_token,按照我在编辑中的示例形成 url,接收 STRING(它可能会说它是 JSON,但它不是)响应,从响应并使用 VideoView 通过以下几行播放它们:
String myStream=response;
Uri uri = Uri.parse(myStream);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
【问题讨论】:
标签: android json api stream twitch