首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twitch,流URL

Twitch,流URL
EN

Stack Overflow用户
提问于 2014-08-15 10:00:32
回答 2查看 9K关注 0票数 2

我已经启动了一个小型的android项目,它的最后一个功能是观察抽搐流,但我遇到了挫折。我把抽搐的API接口弄红了,后来又找到了这个职位。我的想法如下:

-get特定游戏的抽动彩带列表。

单击列表中的-when元素,打开流并播放。

在阅读了这两个源代码之后,我使用array适配器创建了一个列表片段,并使用volley加载了https ://api.twitch.tv/kraken/streams?game=(MyGame)中的响应。例:

代码语言:javascript
复制
https://api.twitch.tv/kraken/streams?game=League%20of%20Legends

我得到了25个顶级彩带的JSON回复并显示它们。这是我遇到问题的地方。我不知道如何获得流视频URL。

根据我的第二个链接获得不同的质量流视频,我必须:

1)从http ://api.twitch.tv/api/channels/(CHANNELNAME)/access_token获取令牌

收到的答复如下:

代码语言:javascript
复制
{ 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个值:令牌、sig和mobile_restricted。

2)使用此http ://usher.twitch.tv/select/(CHANNELNAME).json?nauthsig=(SIG)&nauth=(TOKEN)&allow_source=true,我使用json令牌响应填充字段。

代码语言:javascript
复制
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

,但我得到的回应总是:

代码语言:javascript
复制
[]

据我所知,哪一条河是不存在的?但在同一时间,我能看到溪流在流。

我的问题是:如何获得具有不同质量的实时流urls?我叫他们的方式有什么问题?

作为一个免责声明:我对任何类型的编程都非常陌生,所以我不会假装什么都懂。我可能忽略了一些东西或者明显地错过了。而且,我似乎不能张贴超过2个链接,所以我增加了一个额外的空间后,http。

编辑:在@rcxrdx的帮助下,我得到了我正在寻找的响应。他所指出的是,我必须正确地编码这个记号。下面是一个使用所有视频质量接收字符串响应的编码url示例:

代码语言:javascript
复制
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。在大多数例子中,比如我在博客文章中加起来的例子,不要直截了当地说。因此,如果有人想播放一个抽搐视频,层次结构如下所示:获取access_token,按照我在编辑中的示例形成url,接收字符串(它可能说是JSON,但不是)响应,从响应中获取视频质量,并使用VideoView来播放它们如下:

代码语言:javascript
复制
String myStream=response;
Uri uri = Uri.parse(myStream);
videoView.setVideoURI(uri);
videoView.requestFocus();
videoView.start();
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-18 19:47:59

你这样做是对的,你所缺少的唯一的东西就是你的令牌必须通过你选择的方法进行URL编码。

如果要确保正确执行编码步骤,则可以在通过浏览器连接到流时(使用wireshark或Chrome上的Network选项卡)查看发送的请求,并确保发送的令牌相同。

票数 1
EN

Stack Overflow用户

发布于 2014-08-15 14:59:23

我不知道这对你有多大的帮助,但是几个月前我用twitch做了一些工作,我发现它很难,但能够让游戏搜索工作,并引入流。

希望它有帮助,这是我使用的代码

//Twitch //参考文献:https://github.com/justintv/Twitch-API/blob/master/embedding.md

代码语言:javascript
复制
function getTwitch(title){
$.getJSON("https://api.twitch.tv/kraken/search/streams?q="+title+"&limit=20&type=top&callback=?", function (data) {
    var temp = "";

    $.each(data.streams.slice(0,5), function (index, item) {
        temp = temp + "<a target='frame1' href='http://www.twitch.tv/widgets/live_embed_player.swf?channel=" + item.channel.name + "'><button>"+item.channel.display_name+"</button></a><br />";
    });
    $("#StreamList").html(temp);
});
}

下面是我使用原版api代码构建的一个示例jsfiddle,您也使用它作为点的跳转,但是上面的代码是我使用的最终代码。

http://jsfiddle.net/F4tsM/10/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25324567

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档