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

准备工作

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

域名管理

首先进入视频直播的控制台>>域名管理>>添加域名
添加两次,分别是播流域名和推流域名,
在这里插入图片描述添加完成之后进行域名解析配置这两个域名的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 = 'push.paxy365.com';
        $pull_cdn = 'pull.paxy365.com';

        //推流地址  一个
        $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就可以愉快地玩直播啦,可以下载阿里的DEMO(APP)到手机上,测试这URL是否有用~

接入SDK

阿里是将所有的SDK打包一起下载,里面不仅有视频直播的SDK,还有别的业务的SDK,
PHP SDK 下载地址:https://github.com/aliyun/aliyun-openapi-php-sdk

视频直播:https://github.com/aliyun/aliyun-openapi-php-sdk/tree/master/aliyun-php-sdk-live

在这里插入图片描述要引入的是这两个文件

<?php
    include_once LIB_PATH . 'Vendor/aliyun-openapi/aliyun-php-sdk-core/Config.php';
    include_once LIB_PATH . 'Vendor/aliyun-oss-php/autoload.php';
    
    //接下来就可以为所欲为了~~~

阿里云SDK目录结构

下图为从阿里云的PHP SDK整个大包,里面包含阿里云所有产品的PHP SDK。
在这里插入图片描述
1、aliyun-php-sdk-core:作为PHP SDK引用核心包,只要使用阿里云的产品的php 的SDK,这个文件夹下的所有东东都是基础。
2、aliyun-php-sdk-cdn:这个包里面是阿里云 CDN产品的PHP SDK,但是目前直播里面的SDK都在这个里面,可能是因为直播产品和CDN产品比较紧密吧!(PS:在开通直播产品时,CDN产品的开通是前提条件)

配置SDK

1、将整个PHP SDK包放置项目目录当中。

2、配置aliyun-php-sdk-core

在aliyun-php-sdk-core下面有一个config.php文件

include_once 'Autoloader/Autoloader.php';
include_once 'Regions/EndpointConfig.php';

//config sdk auto load path.
Autoloader::addAutoloadPath("aliyun-php-sdk-cdn");
// Autoloader::addAutoloadPath("aliyun-php-sdk-batchcompute");
// Autoloader::addAutoloadPath("aliyun-php-sdk-sts");
// Autoloader::addAutoloadPath("aliyun-php-sdk-push");
// Autoloader::addAutoloadPath("aliyun-php-sdk-ram");
// Autoloader::addAutoloadPath("aliyun-php-sdk-ubsms");
// Autoloader::addAutoloadPath("aliyun-php-sdk-ubsms-inner");
// Autoloader::addAutoloadPath("aliyun-php-sdk-green");
// Autoloader::addAutoloadPath("aliyun-php-sdk-dm");
// Autoloader::addAutoloadPath("aliyun-php-sdk-iot");

//config http proxy    
define('ENABLE_HTTP_PROXY', FALSE);
define('HTTP_PROXY_IP', '127.0.0.1');
define('HTTP_PROXY_PORT', '8888');

Autoloader::addAutoloadPath(“aliyun-php-sdk-cdn”); 这一句作为核心,表示自动加载aliyun-php-sdk-cdn文件夹下所有的PHP文件。aliyun-php-sdk-cdn是直播服务的SDK,若是想使用阿里云的其他功能,则需要引用其他相关的文件夹。

3、调用直播相关PHP SDK

//引用config.php文件,路径根据实际情况自行定义
include_once('aliyunopenapi'.DIRECTORY_SEPARATOR.'aliyun-php-sdk-core'.DIRECTORY_SEPARATOR.'Config.php');
//$accessKeyId,$accessSecret为阿里云密钥
$iClientProfile = DefaultProfile::getProfile("cn-hangzhou", $accessKeyId, $accessSecret);
$client = new DefaultAcsClient($iClientProfile);


//初始化直播的具体操作,DescribeLiveRecordConfigRequest是获取直播云下面,所有的创建的app

$request = new Cdn\Request\V20141111\DescribeLiveRecordConfigRequest();
$request ->setDomainName('live.ezoon.cn');
$request->setAppName($appname);
$request->setOssEndpoint('oss-cn-hangzhou.aliyuncs.com');
$request->setOssBucket('liveplaybucket');
$request->setOssObjectPrefix('record/'.$appname.'/{StreamName}/{UnixTimestamp}_{Sequence}');
 
//针对阿里云进行请求
 $response = $this->client->getAcsResponse($request);

 print_r("\r\n");
 print_r($response);

4、查看数据返回的结果,返回的值是一个对象,里面

stdClass Object
(
    [LiveAppRecordList] => stdClass Object
        (
            [LiveAppRecord] => Array
                (
                    [0] => stdClass Object
                        (
                            [CreateTime] => 2016-07-27T09:48:23Z
                            [DomainName] => live.xxx.cn
                            [OssEndpoint] => oss-cn-hangzhou.aliyuncs.com
                            [AppName] => asfdsadfsadfafds
                            [OssObjectPrefix] => record/asfdsadfsadfafds/{StreamName}/{UnixTimestamp}_{Sequence}
                            [OssBucket] => liveplaybucket
                        )

                    [1] => stdClass Object
                        (
                            [CreateTime] => 2016-07-26T06:46:28Z
                            [DomainName] => live.xxx.cn
                            [OssEndpoint] => oss-cn-hangzhou.aliyuncs.com
                            [AppName] => live1
                            [OssObjectPrefix] => record/live1/{StreamName}/{UnixTimestamp}_{Sequence}
                            [OssBucket] => liveplaybucket
                        )

                    [2] => stdClass Object
                        (
                            [CreateTime] => 2016-07-27T09:37:54Z
                            [DomainName] => live.xxx.cn
                            [OssEndpoint] => oss-cn-hangzhou.aliyuncs.com
                            [AppName] => live1213123213
                            [OssObjectPrefix] => record/live1213123213/{StreamName}/{UnixTimestamp}_{Sequence}
                            [OssBucket] => liveplaybucket
                        )

                    [3] => stdClass Object
                        (
                            [CreateTime] => 2016-07-26T02:55:09Z
                            [DomainName] => live.xxx.cn
                            [OssEndpoint] => oss-cn-hangzhou.aliyuncs.com
                            [AppName] => liveezoon
                            [OssObjectPrefix] => record/liveezoon/{StreamName}/{UnixTimestamp}_{Sequence}
                            [OssBucket] => liveplaybucket
                        )

                    [4] => stdClass Object
                        (
                            [CreateTime] => 2016-07-26T02:55:26Z
                            [DomainName] => live.xxx.cn
                            [OssEndpoint] => oss-cn-hangzhou.aliyuncs.com
                            [AppName] => livetest
                            [OssObjectPrefix] => record/livetest/{StreamName}/{UnixTimestamp}_{Sequence}
                            [OssBucket] => liveplaybucket
                        )

                )

        )

    [RequestId] => 392B879D-2A09-47B3-85CF-627F7BCD3AC1
)

猜你喜欢

转载自blog.csdn.net/guo_qiangqiang/article/details/88953222