场景
商城需要直播模块,然后可以在后台监控每个开播的直播间,可以随时关闭封禁直播间,可以看到直播中的列表,商城做的是多门店入驻形式,每个门店都可以开启直播。由于项目比较古老,新版SDK版本要求高,难以引入,只能先看文档自己请求。
云直播配置
由于新用户开通云直播功能的时候有20G免费直播流量,可以用于个人测试开发,我们可以自己先注册自己的直播配置
- 创建域名(创建推流的域名地址)
- 创建云直播服务的license(客户端能跟我们绑定的原因)
- 创建直播回调(用于做数据分析统计)
云直播实现功能
- 我们需要根据lstreamName给客户端提供推流和拉流地址
- 需要根据腾讯提供的接口查询在线直播的流信息
- 根据流名称然后外部访问在线直播视频
- 根据流名称封禁直播流
- 查看封禁流列表
- 解封封禁的直播流
云直播代码实现
-
使用v1签名算法
<?php $param["Nonce"] = rand(); // use current timestamp by default, in seconds $param["Timestamp"] = time(); $param["Region"] = ""; $param["Action"] = "ResumeDelayLiveStream"; $param["Version"] = "2018-08-01"; ksort($param); $signStr = "POSTlive.tencentcloudapi.com/?"; foreach ( $param as $key => $value ) { $signStr = $signStr . $key . "=" . $value . "&"; } $signStr = substr($signStr, 0, -1); $signature = base64_encode(hash_hmac("sha1", $signStr, "", true)); echo $signature;
-
创建统一的API client请求发布:
function tencentCloudClient($param) { ksort($param); $signStr = "POSTlive.tencentcloudapi.com/?"; foreach ( $param as $key => $value ) { $signStr = $signStr . $key . "=" . $value . "&"; } $signStr = substr($signStr, 0, -1); $signature = base64_encode(hash_hmac("sha1", $signStr, "腾讯账号统一访问所有api的key", true)); $param['Signature'] = $signature; $url = 'https://live.tencentcloudapi.com'; $param = http_build_query($param, 'RFC3986'); $a = curl_post($url, $param); return $a ;exit(); } function curl_post($url, $data= array()){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); // POST数据 curl_setopt($ch, CURLOPT_POST, 1); // 把post的变量加上 // -H "Content-Type: application/json" -H "Host: live.tencentcloudapi.com" -H "X-TC-Action: DescribeLiveStreamOnlineList" -H "X-TC-Timestamp: 1611821444" -H "X-TC-Version: 2018-08-01" -H "X-TC-Language: zh-CN" curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/x-www-form-urlencoded', 'Content-Length:'.strlen($data)) ); $output = curl_exec($ch); curl_close($ch); return $output; }