放慢了步伐,只为跑得更远~

0%

国外的直播SDK-Twitch的接入与应用

游戏一旦接入国内的直播之后,如果以后还要多语言版本游戏的话,意味着需要再接入新的直播接口.比如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;
}

参考资料

-------------本文结束感谢您的阅读-------------