You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
788 lines
28 KiB
788 lines
28 KiB
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | 天诚科技 [ 刘海东 17600099397赋能开发者,助力企业发展 ]
|
|
// +----------------------------------------------------------------------
|
|
// | Copyright (c) 2016~2020 https://www.tczxkj.com All rights reserved.
|
|
// +----------------------------------------------------------------------
|
|
// | Licensed 该系统并不是自由软件,未经许可不能去掉相关版权
|
|
// +----------------------------------------------------------------------
|
|
// | Author:甘肃天诚志信电子商务有限公司 刘海东 联系电话维系17600099397
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace service;
|
|
|
|
use think\Log;
|
|
use think\Request;
|
|
use think\Url;
|
|
use behavior\wechat\PaymentBehavior;
|
|
use service\HookService;
|
|
use service\SystemConfigService;
|
|
use OSS\OssClient;
|
|
use OSS\Core\OssException;
|
|
use OSS\Model\RefererConfig;
|
|
use OSS\Model\CorsConfig;
|
|
use OSS\Model\CorsRule;
|
|
use AlibabaCloud\Client\AlibabaCloud;
|
|
use AlibabaCloud\Client\Exception\ClientException;
|
|
use AlibabaCloud\Client\Exception\ServerException;
|
|
|
|
class AlipayDisposeService
|
|
{
|
|
|
|
protected static $AccessKeyId = ''; //阿里云AccessKeyId
|
|
|
|
protected static $accessKeySecret = ''; //阿里云AccessKeySecret
|
|
|
|
/**
|
|
* 初始化
|
|
*/
|
|
final static function init()
|
|
{
|
|
self::$AccessKeyId = SystemConfigService::get('accessKeyId');//阿里云AccessKeyId
|
|
self::$accessKeySecret = SystemConfigService::get('accessKeySecret');//阿里云AccessKeySecret
|
|
if (self::$AccessKeyId == '' || self::$accessKeySecret == '') return exception('阿里云AccessKeyId或阿里云AccessKeySecret没有配置');
|
|
}
|
|
|
|
//对象存储OSS
|
|
|
|
/**
|
|
* 创建存储空间
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
* @param int $jurisdiction 1:私有 2:公共读 3:公共读写
|
|
* @param int $type 1:标准储存 2:低频访问储存 3:归档储存
|
|
*/
|
|
public static function ossDispose($endpoint = '', $bucket = '', $jurisdiction = 1, $type = 1)
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
//检测存储空间是否存在
|
|
$res = $ossClient->doesBucketExist($bucket);
|
|
if ($res) return false;
|
|
switch ($type) {
|
|
case 1:
|
|
$storage = OssClient::OSS_STORAGE_STANDARD;
|
|
break;
|
|
case 2:
|
|
$storage = OssClient::OSS_STORAGE_IA;
|
|
break;
|
|
case 3:
|
|
$storage = OssClient::OSS_STORAGE_ARCHIVE;
|
|
break;
|
|
}
|
|
// 设置存储空间的存储类型为低频访问类型,默认是标准类型。
|
|
$options = array(
|
|
OssClient::OSS_STORAGE => $storage
|
|
);
|
|
switch ($jurisdiction) {
|
|
case 1:
|
|
$jurisdictions = OssClient::OSS_ACL_TYPE_PRIVATE;
|
|
break;
|
|
case 2:
|
|
$jurisdictions = OssClient::OSS_ACL_TYPE_PUBLIC_READ;
|
|
break;
|
|
case 3:
|
|
$jurisdictions = OssClient::OSS_ACL_TYPE_PUBLIC_READ_WRITE;
|
|
break;
|
|
}
|
|
// 设置存储空间的权限为公共读,默认是私有读写。
|
|
$res = $ossClient->createBucket($bucket, $jurisdictions, $options);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 列举存储空间
|
|
* @param string $endpoint
|
|
*/
|
|
public static function ossBucketList($endpoint)
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$bucketListInfo = $ossClient->listBuckets();
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
$bucketList = $bucketListInfo->getBucketList();
|
|
return $bucketList;
|
|
}
|
|
|
|
/**
|
|
* 删除存储空间
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function deleteBucket($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$res = $ossClient->deleteBucket($bucket);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
*判断存储空间是否存在
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function doesBucketExist($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$res = $ossClient->doesBucketExist($bucket);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**
|
|
* 设置防盗链
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function bucketReferer($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
$refererConfig = new RefererConfig();
|
|
// 设置允许空Referer。
|
|
$refererConfig->setAllowEmptyReferer(true);
|
|
// 添加Referer白名单。Referer参数支持通配符星号(*)和问号(?)。
|
|
//$refererConfig->addReferer("www.aliiyun.com");
|
|
//$refererConfig->addReferer("www.aliiyuncs.com");
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$res = $ossClient->putBucketReferer($bucket, $refererConfig);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**跨域规则设置
|
|
* @throws OssException
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function putBucketCors($endpoint = '', $bucket = '')
|
|
{
|
|
$corsConfig = new CorsConfig();
|
|
$rule = new CorsRule();
|
|
// AllowedHeaders和ExposeHeaders不支持通配符。
|
|
$rule->addAllowedHeader("*");
|
|
// AllowedOlowedMethods最多支持一个星号(*)通配符。星号(*)表示允许所有的域来源或者操作。
|
|
$rule->addAllowedOrigin("*");
|
|
$rule->addAllowedMethod("GET");
|
|
$rule->addAllowedMethod("POST");
|
|
$rule->addAllowedMethod("PUT");
|
|
$rule->addAllowedMethod("DELETE");
|
|
$rule->addAllowedMethod("HEAD");
|
|
$rule->setMaxAgeSeconds(600);
|
|
// 每个存储空间最多允许10条规则。
|
|
$corsConfig->addRule($rule);
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
// 已存在的规则将被覆盖。
|
|
$res = $ossClient->putBucketCors($bucket, $corsConfig);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $res;
|
|
}
|
|
|
|
/**获取跨域规则
|
|
* @throws OssException
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function getCrossDomainRules($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
$corsConfig = null;
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
|
|
$corsConfig = $ossClient->getBucketCors($bucket);
|
|
} catch (OssException $e) {
|
|
printf(__FUNCTION__ . ": FAILED\n");
|
|
printf($e->getMessage() . "\n");
|
|
return;
|
|
}
|
|
print(__FUNCTION__ . ": OK" . "\n");
|
|
print($corsConfig->serializeToXml() . "\n");
|
|
}
|
|
|
|
/**
|
|
* 获取存储空间的地域
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function ossRegion($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$Regions = $ossClient->getBucketLocation($bucket);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $Regions;
|
|
}
|
|
|
|
/**
|
|
* 获取存储空间元信息
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
*/
|
|
public static function ossMetas($endpoint = '', $bucket = '')
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
$Metas = $ossClient->getBucketMeta($bucket);
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
return $Metas['oss-requestheaders'];
|
|
}
|
|
|
|
/**获取文件元信息
|
|
* @param string $endpoint
|
|
* @param string $bucket
|
|
* @param string $ObjectName
|
|
*/
|
|
public static function getFileMetaInformation($endpoint = '', $bucket = '', $ObjectName = '')
|
|
{
|
|
self::init();
|
|
try {
|
|
$ossClient = new OssClient(self::$AccessKeyId, self::$accessKeySecret, $endpoint);
|
|
// 获取文件的全部元信息。
|
|
$objectMeta = $ossClient->getObjectMeta($bucket, $ObjectName);
|
|
return $objectMeta;
|
|
} catch (OssException $e) {
|
|
return $e->getMessage();
|
|
}
|
|
}
|
|
|
|
//视频直播配置
|
|
|
|
/**
|
|
* 添加直播域名
|
|
* @param string $domainName
|
|
* @param string $type
|
|
*/
|
|
public static function addLiveDomain($data)
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($data['region'])
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('AddLiveDomain')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $data['region'],
|
|
'LiveDomainType' => $data['live_domain_type'],
|
|
'DomainName' => $data['domain_name'],
|
|
'Region' => $data['region'],
|
|
'Scope' => $data['scope'],
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**删除已添加的直播域名
|
|
* @param $domainName
|
|
*/
|
|
public static function deleteLiveDomains($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DeleteLiveDomain')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**查询直播域名配置信息
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function describeLiveDomainDetails($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DescribeLiveDomainDetail')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**域名停用
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function stopLiveDomains($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('StopLiveDomain')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**域名启用
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function startLiveDomains($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('StartLiveDomain')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**添加直播域名播流域名和推流域名的映射关系配置
|
|
* @param string $PullDomain 播流域名
|
|
* @param string $PushDomain 推流域名
|
|
* @param string $regionId
|
|
*/
|
|
public static function addLiveDomainMappings($PullDomain = '', $PushDomain = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('AddLiveDomainMapping')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'PullDomain' => $PullDomain,
|
|
'PushDomain' => $PushDomain,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**删除直播域名播流域名和推流域名的映射关系配置
|
|
* @param string $PullDomain 播流域名
|
|
* @param string $PushDomain 推流域名
|
|
* @param string $regionId
|
|
*/
|
|
public static function deleteLiveDomainMappings($PullDomain = '', $PushDomain = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DeleteLiveDomainMapping')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'PullDomain' => $PullDomain,
|
|
'PushDomain' => $PushDomain,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**设置推流回调配置
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
* @param string $NotifyUrl
|
|
*/
|
|
public static function setLiveStreamsNotifyUrlConfigs($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
$site_url = SystemConfigService::get('site_url');
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('SetLiveStreamsNotifyUrlConfig')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
'NotifyUrl' => $site_url . '/live/index/serve',
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**查看推流回调配置
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
* @param string $NotifyUrl
|
|
*/
|
|
public static function describeLiveStreamsNotifyUrlConfig($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DescribeLiveStreamsNotifyUrlConfig')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**删除推流回调配置
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function deleteLiveStreamsNotifyUrlConfigs($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DeleteLiveStreamsNotifyUrlConfig')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**调用AddLiveAppRecordConfig配置APP录制,输出内容保存到OSS中
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
* @param string $StreamName
|
|
* @param string $AppName
|
|
* @param string $OssBucket
|
|
* @param string $OssEndpoint
|
|
* @param string $format 视频格式
|
|
* @param string $duration 录制时长
|
|
*/
|
|
public static function addLiveAppRecordConfigs($domainName = '', $regionId = '', $AppName = '', $StreamName = '', $OssBucket = '', $OssEndpoint = '', $format = '', $duration = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
if ($format == 'm3u8') {
|
|
$query = [
|
|
'RegionId' => $regionId,
|
|
'StreamName' => $StreamName,
|
|
'AppName' => $AppName,
|
|
'DomainName' => $domainName,
|
|
'OssBucket' => $OssBucket,
|
|
'OssEndpoint' => $OssEndpoint,
|
|
'RecordFormat.1.Format' => "m3u8",
|
|
'RecordFormat.1.OssObjectPrefix' => "record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}",
|
|
'RecordFormat.1.SliceOssObjectPrefix' => "record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence}",
|
|
'RecordFormat.1.CycleDuration' => bcmul($duration, 60, 0),
|
|
];
|
|
} else if ($format == 'mp4') {
|
|
$query = [
|
|
'RegionId' => $regionId,
|
|
'StreamName' => $StreamName,
|
|
'AppName' => $AppName,
|
|
'DomainName' => $domainName,
|
|
'OssBucket' => $OssBucket,
|
|
'OssEndpoint' => $OssEndpoint,
|
|
'RecordFormat.1.Format' => "mp4",
|
|
'RecordFormat.1.OssObjectPrefix' => "record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}",
|
|
'RecordFormat.1.CycleDuration' => bcmul($duration, 60, 0),
|
|
];
|
|
} else {
|
|
$query = [
|
|
'RegionId' => $regionId,
|
|
'StreamName' => $StreamName,
|
|
'AppName' => $AppName,
|
|
'DomainName' => $domainName,
|
|
'OssBucket' => $OssBucket,
|
|
'OssEndpoint' => $OssEndpoint,
|
|
'RecordFormat.1.Format' => "flv",
|
|
'RecordFormat.1.OssObjectPrefix' => "record/{AppName}/{StreamName}/{EscapedStartTime}_{EscapedEndTime}",
|
|
'RecordFormat.1.CycleDuration' => bcmul($duration, 60, 0),
|
|
];
|
|
}
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('AddLiveAppRecordConfig')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => $query,
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**解除录制配置
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
* @param string $AppName
|
|
* @param string $StreamName
|
|
*/
|
|
public static function deleteLiveAppRecordConfigs($domainName = '', $regionId = '', $AppName = '', $StreamName = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DeleteLiveAppRecordConfig')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'AppName' => $AppName,
|
|
'DomainName' => $domainName,
|
|
'StreamName' => $StreamName,
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**配置域名
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function batchSetLiveDomainConfigs($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
$site_url = SystemConfigService::get('site_url');
|
|
$url = parse_url($site_url)['host'];
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('BatchSetLiveDomainConfigs')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainNames' => $domainName,
|
|
'Functions' => "[{'functionArgs':[{'argName':'key','argValue':'Access-Control-Allow-Origin'},{'argName':'value','argValue':'*'}],'functionName':'set_resp_header'},
|
|
{'functionArgs':[{'argName':'refer_domain_allow_list','argValue':'$url'},{'argName':'allow_empty','argValue':'on'}],'functionName':'referer_white_list_set'}
|
|
]",
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
|
|
/**查询直播域名配置key
|
|
* @param string $domainName
|
|
* @param string $regionId
|
|
*/
|
|
public static function describeLiveDomainConfigs($domainName = '', $regionId = '')
|
|
{
|
|
self::init();
|
|
AlibabaCloud::accessKeyClient(self::$AccessKeyId, self::$accessKeySecret)
|
|
->regionId($regionId)
|
|
->asDefaultClient();
|
|
try {
|
|
$result = AlibabaCloud::rpc()
|
|
->product('live')
|
|
->version('2016-11-01')
|
|
->action('DescribeLiveDomainConfigs')
|
|
->method('POST')
|
|
->host('live.aliyuncs.com')
|
|
->options([
|
|
'query' => [
|
|
'RegionId' => $regionId,
|
|
'DomainName' => $domainName,
|
|
'FunctionNames' => 'aliauth'
|
|
],
|
|
])
|
|
->request();
|
|
return $result->toArray();
|
|
} catch (ClientException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
} catch (ServerException $e) {
|
|
return $e->getErrorMessage() . PHP_EOL;
|
|
}
|
|
}
|
|
}
|
|
|