PHP接入螢石雲開放平臺直播功能

序言

爲了加強記憶,寫的比較詳細

關於螢石雲開放平臺
如果是自己測試的話,可以直接去螢石雲官網,註冊成爲開發者,在 開發者服務->我的應用 裏有螢石雲官方給的測試用的AppKey和Secret,可以供開發者測試接口。
如果是做項目的話,客戶應該有開發者賬號,找客戶要一下AppKey和Secret。
另外,還需要 設備序列號通道號

整體邏輯

首先拿到 AppKey,Secret,序列號,通道號。有了AppKey和Secret就可以獲取AccessToken。有了AccessToken,序列號,通道號,就可以獲取直播地址了。

  1. AppKey
  2. Secret
  3. AccessToken
  4. 序列號通道號

CURL

先說一下 curl

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $url);//$url爲訪問的接口地址

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);

curl_setopt($ch, CURLOPT_POST, 1);//訪問方式POST

curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);//向接口傳遞參數

//下面兩條在訪問https協議地址時會用上
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

$output = curl_exec($ch);//執行
curl_close($ch);

//這裏是去掉json數據的bom頭
if(preg_match('/^\xEF\xBB\xBF/',$output))
{
    $output = substr($output,3);
}

$info = json_decode(trim($output),true);//得到數組形式的數據

調用螢石雲開放平臺接口

1.根據appKey和secret獲取accessToken

接口地址:https://open.ys7.com/api/lapp/token/get
請求方式:POST
請求參數:appKey , Secret
具體代碼

$appKey = $data['app_key'];
$secret = $data['secret'];

$curlPost = array("appKey"=>$appKey,"appSecret"=>$secret);
//把數組形式的參數轉爲‘appkey=....&secret=...'這種形式
$parm = http_build_query($curlPost);
$url = 'https://open.ys7.com/api/lapp/token/get';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
if(preg_match('/^\xEF\xBB\xBF/',$output))
{
    $output = substr($output,3);
}
//可獲取accessToken和過期時間(過期時間爲毫秒級時間戳)
$info = json_decode(trim($output),true);
2.開通直播功能接口

如果需要就調用這個接口,如果提示已經開通直播功能,可以直接調用獲取直播地址的接口

接口地址:https://open.ys7.com/api/lapp/live/video/open
請求方式:POST
請求參數:accessToken , Source
Source就是[設備序列號]:[通道號],例如427734222:1
具體代碼

$accessToken = $data['accessToken'];
$source = 序列號:通道號;
$curlPost = array("accessToken"=>$accessToken,"source"=>$source);
$parm = http_build_query($curlPost);
$url = 'https://open.ys7.com/api/lapp/live/video/open';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
if(preg_match('/^\xEF\xBB\xBF/',$output))
{
    $output = substr($output,3);
}
$info = json_decode(trim($output),true);//返回數據中code=200爲操作成功
3.獲取直播地址接口

接口地址:https://open.ys7.com/api/lapp/live/address/get
請求方式:POST
請求參數:accessToken , Source
Source就是[設備序列號]:[通道號],例如427734222:1
具體代碼

$accessToken = $data['accessToken'];
$source = 序列號:通道號;
$curlPost = array("accessToken"=>$accessToken,"source"=>$source);
$parm = http_build_query($curlPost);
$url = 'https://open.ys7.com/api/lapp/live/address/get';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $parm);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
$output = curl_exec($ch);
curl_close($ch);
if(preg_match('/^\xEF\xBB\xBF/',$output))
{
    $output = substr($output,3);
}
$info = json_decode(trim($output),true);

$info中有很多種直播地址,如果是在手機上播放的話,選
hls或hlsHd

以上

AccessToken的有效期爲7天,再寫個判斷是否過期的接口就行了
前端需要螢石雲插件UIKit Javascript
如果curl獲取不到數據,仔細檢查下curl_setopt()是否缺少

OVER

耳東晨

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章