国外的直播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;
}

参考资料

文章目录
  1. 1. 基本介绍
  2. 2. 授权
  3. 3. 频道信息
  4. 4. 频道推流
    1. 4.1. 基本接口
    2. 4.2. 获取授权签名
    3. 4.3. 获取指定的推流数据
    4. 4.4. 获取随机值
    5. 4.5. 数据格式化
  5. 5. 参考资料
,