安装LssClient
配置LssClient
LssClient是LSS服务的PHP客户端,为开发者与LSS服务进行交互提供了一系列的方法。
在新建LssClient前,您需要先创建配置文件对LssClient进行配置,以下将此配置文件命名为YourConf.php
,具体配置信息如下:
// 报告所有 PHP 错误
error_reporting(-1);
define('__LSS_CLIENT_ROOT', dirname(__DIR__));
// 设置LssClient的Access Key ID、Secret Access Key和ENDPOINT
$LSS_TEST_CONFIG =
array(
'credentials' => array(
'ak' => '<AK>',
'sk' => '<SK>',
),
'endpoint' => 'http://lss.bj.baidubce.com',
);
// 设置log的格式和级别
$__handler = new \Monolog\Handler\StreamHandler(STDERR, \Monolog\Logger::DEBUG);
$__handler->setFormatter(
new \Monolog\Formatter\LineFormatter(null, null, false, true)
);
\BaiduBce\Log\LogFactory::setInstance(
new \BaiduBce\Log\MonoLogFactory(array($__handler))
);
\BaiduBce\Log\LogFactory::setLogLevel(\Psr\Log\LogLevel::DEBUG);
新建LssClient
在完成上述配置之后,参考如下代码新建一个LssClient:
//使用PHP SDK,并且使用自定义配置文件
include 'BaiduBce.phar';
require 'YourConf.php';
use BaiduBce\Services\Lss\LssClient;
//调用配置文件中的参数
global $LSS_TEST_CONFIG;
//新建LssClient
$client = new LssClient($LSS_TEST_CONFIG);
参数说明
PHP SDK在\BaiduBce\Bce.php
中默认设置了一些基本参数,如需修改参数值,可参考此文件自定义参数配置函数,并在构造LssClient的时候传入,传入代码参考如下:
public function CustomizedConfig() {
$customizedConfig = array(
BceClientConfigOptions::PROTOCOL => 'http',
BceClientConfigOptions::CONNECTION_TIMEOUT_IN_MILLIS => 120 * 1000,
BceClientConfigOptions::SOCKET_TIMEOUT_IN_MILLIS => 300 * 1000,
BceClientConfigOptions::SEND_BUF_SIZE => 5 * 1024 * 1024,
BceClientConfigOptions::RECV_BUF_SIZE => 5 * 1024 * 1024,
BceClientConfigOptions::CREDENTIALS => array(
'ak' => '<AK>',
'sk' => '<SK>',
),
'endpoint' => 'http://lss.bj.baidubce.com',
);
//利用自定义配置创建LssClient
$customizedClient = new LssClient($customizedConfig);
//通过自定义配置调用方法
$options = array('config'=>$customizedConfig);
$this->client->listSessions($options);
}
参数说明如下:
参数 | 说明 | 默认值 |
---|---|---|
PROTOCOL | 协议 | http |
CONNECTION_TIMEOUT_IN_MILLIS | 请求超时时间(单位:毫秒) | 50 * 1000 |
SOCKET_TIMEOUT_IN_MILLIS | 通过打开的连接传输数据的超时时间(单位:毫秒) | 0(表示无限等待, 若设置非0数值需要对文件大小和网速进行评估,否则上传大文件时会产生超时) |
SEND_BUF_SIZE | 发送缓冲区大小 | 1024 * 1024 |
RECV_BUF_SIZE | 接收缓冲区大小 | 10 ** 1024 1024 |
相关说明
LssClient将可选的参数封装到$options
中,每一个方法具有的可选参数详见具体的接口使用方法介绍,以createSession
方法为例,请参考如下代码设置可选参数:
//创建Session无任何必选参数,通过$options传入可选参数
$options = array(
'description' => 'This is a test session',
'preset' => '<Preset_Name>',
'notification' => '<Notification_Name>',
);
$client->createSession($options);
注意:请不要将null
传入$options
中,否则调用时会抛出异常。
录制模板Recording
录制模板是对直播过程中音视频进行录制的参数配置集合,包括录制文件存储模式、录制文件格式、录制文件切割时长等。
目前API仅支持查询指定录制模板和查询模板列表接口,用户如需新建录制模板,请在控制台创建。
查询录制模板
下述代码示例用于查询指定的Recording:
$name = '<Recording_Name>';
$response = $client->getRecording($name);
print json_encode($response);
录制模板列表
下述代码示例用于查询所有的Recording:
$response = $client->listRecordings();
foreach ($response->recordings as $recording) {
print json_encode($recording);
}
安全策略SecurityPolicy
安全策略是直播过程中安全配置参数的集合,包括推流认证、播放认证、内容加密、防盗链(Referer/IP 黑白名单)三类安全配置。
目前LSS为每个用户创建了一个默认安全策略,尚不支持创建自定义安全策略。
查询安全策略
下述代码示例用于查询指定的SecurityPolicy:
$name = 'default';
$response = $client->getSecurityPolicy($name);
print json_encode($response);
安全策略列表
下述代码示例用于查询所有的SecurityPolicy:
$response = $client->listSecurityPolicies();
foreach ($response->securityPolicies as $securityPolicy) {
print json_encode($securityPolicy);
}
通知Notification
您可以通过提供通知接口名称和接口地址来创建Notification,然后在创建直播会话时配置直播通知。LSS会在直播会话状态改变,直播过程中HLS直播m3u8文件等生成时主动向您推送消息。
创建通知
下述代码示例用于创建一个Notification:
//指定notification name & endpoint
$name = '<Notification_Name>';
$endpoint = 'http://notification.domain.com';
$client->createNotification($name, $endpoint);
通知列表
下述代码示例用于查询所有的Notification:
$response = $client->listNotifications();
foreach ($response->notifications as $notification) {
print json_encode($notification);
}
查询通知
下述代码示例用于查询指定的Notification:
//指定notification name
$name = '<Notification_Name>';
$response = $client->getNotification($name);
print json_encode($response);
删除通知
下述代码示例用于删除Notification:
//指定notification name
$name = '<Notification_Name>';
$client->deleteNotification($name);
注意:不能删除使用中的Notification。
水印Watermark
LSS支持为直播会话添加水印,包括图片水印和时间戳水印两种类型。
图片水印
为直播会话添加图片水印需要您先创建图片水印,然后在创建直播会话时配置图片水印。
创建图片水印
通过定义水印的详细参数集合(大小、位置等)来创建图片水印。代码示例如下:
$path = '<Image_Path>';
$fp = fopen($path, 'rb');
$content = fread($fp, filesize($path));
fclose($fp);
$content = base64_encode($content);
$options = array(
'maxWidthInPixel' => <Image_Width_Limit>,
'maxHeightInPixel' => <Image_Height_Limit>,
'sizingPolicy' => '<Sizing_Policy>',
);
$name = '<Image_Watermark_Name>';
$client->createImageWatermark($name, $content, $options);
查询指定图片水印
通过指定水印名称查询特定图片水印的详细信息,包括图片URL、大小、位置、创建时间等。代码示例如下:
//指定ImageWatermark name
$name = '<Image_Watermark_Name>';
$response = $client->getImageWatermark($name);;
print json_encode($response);
查询图片水印列表
查询用户的所有图片水印的详细信息。代码示例如下:
$resp = $client->listImageWatermarks();
foreach ($response->imageWatermarks as $imageWatermark) {
print json_encode($imageWatermark);
}
删除图片水印
通过指定水印名称删除特定图片水印。代码示例如下:
//指定ImageWatermark name
$name = '<Image_Watermark_Name>';
$client->deleteImageWatermark($name);
注意:不能删除使用中的图片水印。
时间戳水印
为直播会话添加时间戳水印需要您先创建时间戳水印,然后在创建直播会话时配置时间戳水印。
创建时间戳水印
通过定义水印的详细参数集合(时区、文字、背景、位置等)来创建时间戳水印。代码示例如下:
$options = array(
'timezone' => '<Timezone>',
'alpha' => <Alpha>,
'fontFamily' => '<Font_Family>',
'fontSizeInPoint' => <Font_Size>,
'fontColor' => '<Font_Color>',
'backgroundColor' => '<Background_Color>',
);
$name = '<Timestamp_Watermark_Name>';
$client->createTimestampWatermark($name, $options);
查询指定时间戳水印
通过指定水印名称查询特定时间戳水印的详细信息,包括时间戳的时区、文字、位置、创建时间等。代码示例如下:
//指定TimestampWatermark name
$name = '<Timestamp_Watermark_Name>';
$response = $client->getTimestampWatermark($name);
print json_encode($response);
时间戳水印列表
查询用户的所有时间戳水印的详细信息。代码示例如下:
$resp = $client->listTimestampWatermarks();
foreach ($response->timestampWatermarks as $timestampWatermark) {
print json_encode($timestampWatermark);
}
删除时间戳水印
通过指定水印名称删除特定时间戳水印。代码示例如下:
//指定TimestampWatermark name
$name = '<Timestamp_Watermark_Name>';
$client->deleteTimestampWatermark($name);
注意:不能删除使用中的时间戳水印。