安装LssClient
所有文档

          音视频直播 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开发指南