PHP使用CURL調用螢石雲開放平臺直播接口
序言
爲了加強記憶,寫的比較詳細
關於螢石雲開放平臺
如果是自己測試的話,可以直接去螢石雲官網,註冊成爲開發者,在 開發者服務->我的應用 裏有螢石雲官方給的測試用的AppKey和Secret,可以供開發者測試接口。
如果是做項目的話,客戶應該有開發者賬號,找客戶要一下AppKey和Secret。
另外,還需要 設備 的序列號 和 通道號
整體邏輯
首先拿到 AppKey,Secret,序列號,通道號。有了AppKey和Secret就可以獲取AccessToken。有了AccessToken,序列號,通道號,就可以獲取直播地址了。
- AppKey
- Secret
- AccessToken
- 序列號:通道號
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()是否缺少