详解阿里云视频直播PHP-SDK接入教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
详解阿⾥云视频直播PHP-SDK接⼊教程阿⾥云视频直播配置及 PHP-SDK 接⼊教程
个⼈感觉,阿⾥的⽂档⽐微信的要坑很多…
微信最多是有些⽐较重要的东西放到⽐较不起眼、⽐较难发现的地⽅.
阿⾥的⽂档就是要么就是sdk已经更新了,但是⽂档还没更新,导致⽂档与SDK不匹配.在关键点卡我⼀下…
要么是同样的功能有好⼏个版本的SDK以及⽂档,却不告诉你哪个是最新的…
吐槽结束~
准备⼯作
1.最重要的,先仔细看下!
2. 购买阿⾥云的服务 ,⽤量不⼤的时候建议使⽤按量收费的⽅式结算,接通之后消耗了流量才扣钱;
3. 准备好备案的域名,到时候需要解析两个⼆级域名(推流域名与拉流域名);
4. 如果需要存储直播视频⽂件的话,需要使⽤服务,因为直播录制的视频都会到这⾥⾯.这也是可以先使⽤后收费的(按量收费).
域名管理
⾸先进⼊视频直播的控制台>>域名管理>>添加域名
添加两次,分别是播流域名和推流域名,
添加完成之后进⾏域名解析配置这两个域名的CDN加速指向分配的CNAME.
然后配置将它们两个域名(⼀个推流,⼀个播流)关联起来.
配置鉴权
推流与播流的链接都是以⼀定的规则⾃⼰拼起来的,⾸先要在域名配置
地址⽣成器及DEMO演⽰-熟悉鉴权
AppName:随意理解,或者理解为分组吧;
StreamName:理解为直播的id,⼀个StreamName同时只能推⼀个直播流.可以开始直播-终⽌直播-开始直播-终⽌直播…
有关鉴权的规则是这样的:
代码如下:
<?php
$AppName = 'AppName'; //app名称 ,随意设定
$StreamName = "StreamName"; //直播流名称 ,随意设定
$now = time();
//------------------- 阿⾥云视频直播控制台地址⽣成器鉴权设置 -----------
//加密key,即直播后台鉴权⾥⾯⾃⾏设置
$pull_key = 'oCudfghYGM'; //播流主key
$push_key = '0hgggfjAhT'; //推流主key
$time = $now + 60*60*3; //URL的有效期 180分钟随意设定
//------------------------ end ---------------------------------------------
$strpush = "/{$AppName}/{$StreamName}-{$time}-0-0-{$push_key}";
$push_cdn = '';
$pull_cdn = '';
//推流地址⼀个
$pushurl = "rtmp://{$push_cdn}/{$AppName}/{$StreamName}?auth_key={$time}-0-0-".md5($strpush);
//播流地址
$strviewrtmp = "/{$AppName}/{$StreamName}-{$time}-0-0-{$pull_key}";
$strviewflv = "/{$AppName}/{$StreamName}.flv-{$time}-0-0-{$pull_key}";
$strviewm3u8 = "/{$AppName}/{$StreamName}.m3u8-{$time}-0-0-{$pull_key}";
$rtmpurl = "rtmp://{$pull_cdn}/{$AppName}/{$StreamName}?auth_key={$time}-0-0-".md5($strviewrtmp); //播流地址
$flvurl = "http://{$pull_cdn}/{$AppName}/{$StreamName}.flv?auth_key={$time}-0-0-".md5($strviewflv); //播流地址
$m3u8url = "http://{$pull_cdn}/{$AppName}/{$StreamName}.m3u8?auth_key={$time}-0-0-".md5($strviewm3u8); //播流地址
获取到推流URL和播流URL就可以愉快地玩直播啦,可以阿⾥的(APP)到⼿机上,测试这URL是否有⽤~
接⼊SDK
阿⾥是将所有的SDK打包⼀起下载,⾥⾯不仅有视频直播的SDK,还有别的业务的SDK…T_T
我的项⽬是TP框架(还是3.2的T_T)
在⼀开始拿到SDK代码的时候很懵逼,⽆从下⼿…
度娘了下才知道要引⼊的是这两个⽂件 ! ! !
<?php
use OSS\OssClient;
use OSS\Core\OssException;
include_once LIB_PATH . 'Vendor/aliyun-openapi/aliyun-php-sdk-core/Config.php'; // LIB_PATH 指向的是项⽬地址/ThinkPHP/Library/ include_once LIB_PATH . 'Vendor/aliyun-oss-php/autoload.php';
配置AccessKeyID AccessKeySecret
这⾥并没有⽤⼦账号RAM权限,因此我这种⽅法配置的密钥对阿⾥的所有密钥有效,不建议这么做!
直播在线流SDK接⼊,我这⾥是⽤已知的直播流名称去检测它是否在线
<?php
/**
* 在线流判断
* 获取某直播流正在推的流的信息
*/
public function StreamsOnlineList($stream_name=''){
$iClientProfile = \DefaultProfile::getProfile("cn-shenzhen", 'AccessKeyID', 'AccessKeySecret'; //cn-shenzhen 这个貌似都可以,我填cn-hangzhou也没问题 Access Key ID,Access Key Secret $client = new \DefaultAcsClient($iClientProfile);
$request = new \live\Request\V20161101\DescribeLiveStreamsOnlineListRequest();
$request ->setAppName('应⽤名称'); //应⽤名称。
$request ->setStreamName($stream_name); //流名称。
不填的话就是查AppName下所有的在线直播流
$request ->setDomainName(''); //您的加速域名。
播流域名
$request ->setPageNum('1'); //取得第⼏页,默认1。
//以下参数我都没有⽤到,因此注释了
//$request ->setStreamType('all'); //流类型。
取值范围:all raw trans 对应查询所有流、原始流、转码流,默认all返回所有流信息
//$request ->setStartTime('2019-03-04T00:00:00Z');
//$request ->setEndTime('2019-03-04T23:59:59Z');
//$request ->setPageSize('2000'); //每页⼤⼩,最⼤3000。
取值:1~3000之前的任意整数。
默认值:2000
//$request ->setQueryType('strict'); //指定是否模糊匹配流名称。
取值: fuzzy:模糊匹配 strict:精准匹配
//$request ->setOrderBy(''); //⽂档中没有,sdk有该参数,⾮必填
//$request ->setOwnerId(''); //⽂档中没有,sdk有该参数,⾮必填
//针对阿⾥云进⾏请求
$response = $client->getAcsResponse($request);
//对象转数组,总感觉我这种⽅法太⼟了...⽹上也有很多⾃定义的函数可以对象转数组
$response = json_decode(json_encode($response,true),true);
dump($response);exit;
推流回调的配置
将回调接收到的数据打印出来
["action"]=>
string(7) "publish" //publish 推流开始 publish_done推流结束
["ip"]=>
string(14) "139.147.54.224"
["id"]=>
string(24) "y-12005-870-1-2019030610" //StreamName ⾃⼰设定的直播流名称(这⾥叫id)
["app"]=>
string(16) ""
["appname"]=>
string(6) "gifoge" //App名称
["time"]=>
string(10) "1551839491"
["usrargs"]=>
string(277) "vhost=&auth_key=1551850143-0-0-6f97891e39859d558b8e583860f22094&ali_publisher_ip=119.137.54.224&ali_edge_node_ip=175.6.241.195&ali_node_via=541%2clive11.l2em21-3&alilive_streamidv2=54 ["node"]=>
string(13) "135.6.541.195"
到此这篇关于阿⾥云视频直播PHP-SDK接⼊教程的⽂章就介绍到这了,更多相关阿⾥云视频直播PHP-SDK 内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。