PHP接入萤石云开放平台直播功能

一曲冷凌霜 提交于 2019-12-27 03:24:04

序言

为了加强记忆,写的比较详细

关于萤石云开放平台
如果是自己测试的话,可以直接去萤石云官网,注册成为开发者,在 开发者服务->我的应用 里有萤石云官方给的测试用的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

耳东晨

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!