阿里云视频直播PHP-SDK接入教程

阿里云视频直播PHP-SDK接入教程

  • 阿里云 视频直播 配置 及 PHP-SDK 接入教程
    • 准备工作
    • 域名管理
    • 配置鉴权
    • 地址生成器及DEMO演示-熟悉鉴权
    • 接入SDK
    • 推流回调的配置

阿里云 视频直播 配置 及 PHP-SDK 接入教程

个人感觉,阿里的文档比微信的要坑很多…
微信最多是有些比较重要的东西放到比较不起眼、比较难发现的地方.
阿里的文档就是要么就是sdk已经更新了,但是文档还没更新,导致文档与SDK不匹配.在关键点卡我一下…
要么是同样的功能有好几个版本的SDK以及文档,却不告诉你哪个是最新的…
吐槽结束~

准备工作

1.最重要的,先仔细看下视频直播文档!
2. 购买阿里云的视频直播服务 ,用量不大的时候建议使用按量收费的方式结算,接通之后消耗了流量才扣钱;
3. 准备好备案的域名,到时候需要解析两个二级域名(推流域名与拉流域名);
4. 如果需要存储直播视频文件的话,需要使用对象存储OSS服务,因为直播录制的视频都会到这里面.这也是可以先使用后收费的(按量收费).

域名管理

首先进入视频直播的控制台>>域名管理>>添加域名
添加两次,分别是播流域名推流域名,

阿里云视频直播PHP-SDK接入教程_第1张图片

添加完成之后进行域名解析配置这两个域名的CDN加速指向分配的CNAME.
阿里云视频直播PHP-SDK接入教程_第2张图片
阿里云视频直播PHP-SDK接入教程_第3张图片

然后配置将它们两个域名(一个推流,一个播流)关联起来.阿里云视频直播PHP-SDK接入教程_第4张图片

阿里云视频直播PHP-SDK接入教程_第5张图片

配置鉴权

推流与播流的链接都是以一定的规则自己拼起来的,首先要在域名配置
阿里云视频直播PHP-SDK接入教程_第6张图片

阿里云视频直播PHP-SDK接入教程_第7张图片

地址生成器及DEMO演示-熟悉鉴权

AppName:随意理解,或者理解为分组吧;
StreamName:理解为直播的id,一个StreamName同时只能推一个直播流.可以开始直播-终止直播-开始直播-终止直播…

阿里云视频直播PHP-SDK接入教程_第8张图片

有关鉴权的规则是这样的:鉴权规则
代码如下:

获取到推流URL和播流URL就可以愉快地玩直播啦,可以下载阿里的DEMO(APP)到手机上,测试这URL是否有用~

接入SDK

阿里是将所有的SDK打包一起下载,里面不仅有视频直播的SDK,还有别的业务的SDK…T_T
PHP SDK 下载地址

我的项目是TP框架(还是3.2的T_T)
阿里云视频直播PHP-SDK接入教程_第9张图片
在一开始拿到SDK代码的时候很懵逼,无从下手…
度娘了下才知道要引入的是这两个文件 ! ! !

配置AccessKeyID AccessKeySecret
这里并没有用子账号RAM权限,因此我这种方法配置的密钥对阿里的所有密钥有效,不建议这么做!
阿里云视频直播PHP-SDK接入教程_第10张图片
阿里云视频直播PHP-SDK接入教程_第11张图片
直播在线流SDK接入,我这里是用已知的直播流名称去检测它是否在线

setAppName('应用名称');                        //应用名称。
        $request ->setStreamName($stream_name);   //流名称。不填的话就是查AppName下所有的在线直播流
        $request ->setDomainName('pull.xxx.com');           //您的加速域名。播流域名
        $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;

推流回调的配置

阿里云视频直播PHP-SDK接入教程_第12张图片
阿里云视频直播PHP-SDK接入教程_第13张图片
将回调接收到的数据打印出来

["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) "push.xxxxx.com"
  ["appname"]=>
  string(6) "gifoge"		//App名称
  ["time"]=>
  string(10) "1551839491"
  ["usrargs"]=>
  string(277) "vhost=pull.paxy365.com&auth_key=1551850143-0-0-6f97891e39859d558b8e583860f22094&ali_publisher_ip=119.137.54.224&ali_edge_node_ip=175.6.241.195&ali_node_via=cache2.cn541%2clive11.l2em21-3&alilive_streamidv2=2.cn541_6638_355280423_1551839490901&alilive_clienthost=live11.l2em21-3"
  ["node"]=>
  string(13) "135.6.541.195"

你可能感兴趣的:(阿里)