媒体库管理-媒体基本信息-示例代码-PHP

  • 简介

    示例如何查询和更新媒体基本信息。

    SDK的安装和使用,参考媒体库SDK-PHP

  • 查询媒体基本信息

    查询媒体提供了2种方式:媒体ID或OSS文件地址。

    • 使用媒体ID查询媒体

      详细参数参考API使用手册->媒体接口->查询媒体-使用媒体ID

      include_once 'aliyun-php-sdk-core/Config.php';
      use Mts\Request\V20140618 as Mts;
      $accessKeyID = 'test'; // 替换成真实的id
      $accessKeySecret = 'test'; // 替换成真实的secret
      $profile = DefaultProfile::getProfile('cn-hangzhou',
                                            $accessKeyID,
                                            $accessKeySecret);
      $client = new DefaultAcsClient($profile);
      
      function queryMediaById($client, $mediaID)
      {
           $request = new Mts\QueryMediaListRequest();
           $request->setAcceptFormat('JSON');
           $request->setMediaIds($mediaID);
           $response = $client->getAcsResponse($request);
           return $response;
      }
      function printMedia($media)
      {
           if (array_key_exists('Title', $media)) {
             print_r('Title: '.$media->{'Title'}."\n");
           }
           if (array_key_exists('Description', $media)) {
             print_r('Description: '.$media->{'Description'}."\n");
           }
           if (array_key_exists('Tags', $media)) {
             print_r('Tags: '.$media->{'Tags'}->{'Tag'}[0]."\n");
           }
           if (array_key_exists('CoverURL', $media)) {
             print_r('CoverURL: '.$media->{'CoverURL'}."\n");
           }
           print_r('Format: '.$media->{'Format'}."\n");
           print_r('Resolution: '.$media->{'Width'}.'x'.$media->{'Height'}."\n");
           print_r('FileSize: '.$media->{'Size'}."\n");
           print_r('Bitrate: '.$media->{'Bitrate'}."\n");
           print_r('FPS: '.$media->{'Fps'}."\n");
      }
      $mediaID = 'test'; // 替换成真实的mediaID
      $medias = queryMediaById($client, $mediaID)->{'MediaList'}->{'Media'};
      for ($i=0; $i < count($medias); $i++) {
           printMedia($medias[$i]);
      }
      
    • 使用OSS文件地址查询媒体

      详细参数参考API使用手册->媒体接口->查询媒体-使用OSS文件地址

      function queryMediaByURL($client, $mediaURL)
      {
           $request = new Mts\QueryMediaListByURLRequest();
           $request->setAcceptFormat('JSON');
           $request->setFileURLs($mediaURL);
           $response = $client->getAcsResponse($request);
           return $response;
      }
      $ossEndpoint = 'http://test.oss-cn-hangzhou.aliyuncs.com/';
      // OSS的Object不需要"/"开始,替换成真实的ossObject
      $ossObject = 'test/测试.mp4';
      $medias = queryMediaByURL($client,$ossEndpoint.urlencode($ossObject))->{'MediaList'}->{'Media'};
      for ($i=0; $i < count($medias); $i++) {
           printMedia($medias[$i]);
      }
      
  • 更新属性

    更新提供了2种更新方式:全量属性更新,单个属性更新。

    • 全量更新属性

      详细参数参考API使用手册->媒体接口->更新媒体-基本信息

      更新时,必须指定所有字段,不设置的字段会被清空。

      function updateMediaAllField($client, $mediaID, $title, $description, $tags, $coverURL)
      {
           $request = new Mts\UpdateMediaRequest();
           $request->setAcceptFormat('JSON');
           $request->setMediaId($mediaID);
           $request->setTitle($title);
           $request->setCateId(2663987);
           $request->setDescription($description);
           $request->setTags($tags);
           $request->setCoverURL($coverURL);
           $response = $client->getAcsResponse($request);
           return $response;
      }
      $mediaID = 'test'; // 替换成真实的mediaID
      $media = updateMediaAllField($client, $mediaID,
                              'title', 'description', 'tags', 'coverURL')->{'Media'};
      
    • 单个更新属性

      不同的字段可以单独更新,使用的是不同API,可以不修改其他字段的情况下,方便的更新单个字段。

      这里通过“发布状态”举例,详细参数参考API使用手册->媒体接口->更新媒体-发布状态

      function updateMediaPublishState($client, $mediaID, $state)
      {
           $request = new Mts\UpdateMediaPublishStateRequest();
           $request->setAcceptFormat('JSON');
           $request->setMediaId($mediaID);
           $request->setPublish($state);
           $response = $client->getAcsResponse($request);
           return $response;
      }
      $mediaID = 'test'; // 替换成真实的mediaID
      // 更新"发布状态"的API没有返回值,通过捕获异常来判断是否执行成功
      try {
           updateMediaPublishState($client, $mediaID, "true");
      } catch (ClientException $e) {
           print_r('ClientException:'."\n");
           print_r($e);
      } catch (ServerException $e) {
           print_r('ServerException:'."\n");
           print_r($e);
      }
      

results matching ""

    No results matching ""