七牛直播鉴权方式

本篇以PHP的代码为例

新版的鉴权方式(v2版本)

新Portal expiry 动态推流地址

描述:新版的主要使用的是Access_Key,Secret_Key来做鉴权方式
格式

rtmp://<RTMPPublishDomain>/<Hub>/<StreamKey>?e=<ExpireAt>&token=<Token>

生成推流凭证:

// 构造 RTMP 推流 Path
path = "//"

// 为推流 Path 加上过期时间
path = "//?e="

// 计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码
sign = hmac_sha1(path, "Secret_Key")
encodedSign = urlsafe_base64_encode(sign)

// 将 AccessKey 与 sign 拼接得到推流凭证
token = "Access_Key" + ":" + encodedSign

PHP案例

require_once 'autoload.php';
require_once"config.php";
use Qiniu\Auth;
$accessKey=Config::ACCESS_KEY;
$secretKey=Config::SECRET_KEY;
//  推流域名
$dynamic="rtmp://pili-publish.pili.echohu.top";
$time = time()+3600;
//这里是/直播应用名/流名?e=当前的时间戳
$path = "/1314xicong/huxicongp?e=".$time;
// 计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码
$sign=hash_hmac('sha1',$path,$secretKey,ture);
$data=Qiniu\base64_urlSafeEncode($sign);
//   /直播的流名?e=<当前时间>
$token = $accessKey.":".$data;
$token=$dynamic.$path."&token=".$token;
var_dump($token);

旧版的鉴权方式(v1版本)

描述:旧版的主要使用的是 publish来生成直播鉴权方式

1.static 静态推流地址

使用场景:无需要生成鉴权直接使用
直接使用PublishKey作为推流鉴权,
publishUrl是: rtmp:////?key=

2.expiry 限时推流地址

使用场景:首先客户估计一个推流持续有效的时间(推荐为当前时间+30s),然后使用该时间签算token。
publishUrl是 rtmp:////?expire=&token=
ExpireAt为unixstamp,单位为秒。服务器会以服务器时间为准,在此时刻之前,允许推流。超过这个时刻,拒绝推流。token计算方法为:

sign = hmac_sha1("/<HubName>/<StreamTitle>expire=<ExpireAt>&
<OtherKey>=<OtherValue>",
"<PublishKey>")
publishToken= url_base64(sign)

PHP案例


//  推流域名/hub
$expiry="rtmp://pili-publish.pili.echohu.top/1314xicong/";
//设定在一个小时后过期
$time = time()+60*60;
//这里是/直播应用名/流名?expire=过期时的时间戳
$path = "/1314xicong/huxicongp?expire=".$time;
//流的公钥
$PublishKey="b321c6c6-9004-4cad-b29a-7d5dec42659b";
// 计算 HMAC-SHA1 签名,并对签名结果做 URL 安全的 Base64 编码
$sign=hash_hmac('sha1',$path,$PublishKey,ture);
$data=base64urlSafeEncode($sign);
$token = "huxicongp?expire=".$time."&token=".$data;
echo($expiry.$token);
function base64urlSafeEncode($data)
 {
        $find = array('+', '/');
        $replace = array('-', '');
        return str_replace($find, $replace, base64_encode($data));
    }

dynamic 动态推流地址

使用场景:需要秘钥来获取直播推流
需要签算nonce和token。
publishUrl是 rtmp:////?nonce=&token=
token计算方法为:

sig = hmac_sha1("/<HubName>/<StreamTitle>?nonce=<Nonce>&<OtherKey>=<OtherValue>", "<PublishKey>")
publishToken = url_base64(sign)```


PHP案例

你可能感兴趣的:(七牛)