音视频直播LSS

    安装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);

    注意:不能删除使用中的时间戳水印。

    上一篇
    安装LSS-PHP-SDK
    下一篇
    LSS开发指南