游戏一旦接入国内的直播之后,如果以后还要多语言版本游戏的话,意味着需要再接入新的直播接口.比如Twitch,想想头就有点大~
目前twitch的接口已经可以正常接入到游戏的SDK中,不过还有有些兼容问题需要不断的修正.
基本介绍
最近一两年刚刚兴起的直播行业悄悄的火起来了,几乎变成人人都轻易完成的”全名直播”.随着国内各种直播技术的不断的日趋完善和成熟,国内各大厂也相继开始争夺”直播”行业这块大饼.自媒体时代的另一个视听盛宴正悄然兴起.”直播”也不是国内独有的,在国内也正如火如荼的展开着,在国外有很多相对完善的直播平台,比如说本文重点提到的一个直播平台”twitch”.
授权
获取Twitch授权的重点在于获取client id,按照overstackflow上的一些人的建议,当我们创建app的时候会返回给我们一个client id 和 client secret.
频道信息
频道信息的主要参考Twitch提供的接口,输入指定的参数查询相应频道的信息.
频道推流
基本接口
1 2
| private $urlUsherBase = 'http://usher.twitch.tv/api/channel/hls/{channel}.m3u8?player=twitchweb&token={token}&sig={sig}&allow_audio_only=true&allow_source=true&type=any&p={random}'; private $urlTokenAPI = 'http://api.twitch.tv/api/channels/{channel}/access_token?client_id={client_id}';
|
获取授权签名
1 2 3 4 5 6 7 8
| function get_token_and_signature($channel){ $arrGetTokenSignatureWhere = array( "{channel}" => $channel, "{client_id}" => $this->arrConfigSDK['idClient'], ); $urlTokenAPI = $this->getStrFormat($this->urlTokenAPI,$arrGetTokenSignatureWhere); return $this->getDataFromTwitch($urlTokenAPI); }
|
获取指定的推流数据
1 2 3 4 5 6 7 8 9 10 11 12
| function get_live_stream($channel){ $arrGetTokenSignature = $this->get_token_and_signature($channel); $random = $this->getRandom(); $arrGetLiveStreamWhere = array( "{channel}" => $channel, "{token}" => urlencode($arrGetTokenSignature['token']), "{sig}" => $arrGetTokenSignature['sig'], "{random}" => $random, ); $urlUsherAPI = $this->getStrFormat($this->urlUsherBase,$arrGetLiveStreamWhere); return $urlUsherAPI; }
|
获取随机值
1 2 3 4 5 6
| function getRandom($num=3){ $microtime = microtime(); list($uSec, $sec) = explode(" ",$microtime); $random = $uSec + $sec*pow(10,$num); return intval($random); }
|
数据格式化
1 2 3 4 5 6
| function getStrFormat($strData,$arrData){ if(!empty($strData) && !empty($arrData) && is_array($arrData)){ $strFormat = str_replace(array_keys($arrData),array_values($arrData),$strData); } return empty($strData) ? "" : empty($arrData) ? $strData : empty($strFormat) ? $strData : $strFormat; }
|
参考资料