使用场景

用户常需要对视频直播的内容进行分析。例如,需要对直播中的某一帧的内容作为封面图片或者对于直播内容进行鉴黄以查看内容合法性等需求。因此,视频直播提供了实时截图功能满足用户的截图需求。

截图功能介绍

  • 截图功能配置

    配置视频直播的截图功能可以通过两种方法:

    • 通过控制台创建。参见 配置截图

    • 通过API/SDK:API/SDK提供了添加、删除、查询和更新截图配置的接口。详情参见 添加截图配置删除截图配置查询截图配置更新截图配置查询截图信息。下面提供使用Java SDK添加截图配置的示例代码。

          IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","<AccessKeyId>", "<AccessKeySecret>");
          IAcsClient client = new DefaultAcsClient(profile);
      
          AddLiveAppSnapshotConfigRequest addLiveAppSnapshotConfigRequest = new AddLiveAppSnapshotConfigRequest();
          addLiveAppSnapshotConfigRequest.setDomainName("<DomainName>");
          addLiveAppSnapshotConfigRequest.setAppName("<AppName>");
          addLiveAppSnapshotConfigRequest.setTimeInterval(5);
          addLiveAppSnapshotConfigRequest.setOssEndpoint("<Endpoint>");
          addLiveAppSnapshotConfigRequest.setOssBucket("<BucketName>");
          addLiveAppSnapshotConfigRequest.setOverwriteOssObject("{AppName}/{StreamName}.jpg");
          try {
              AddLiveAppSnapshotConfigResponse addLiveAppSnapshotConfigResponse = client.getAcsResponse(addLiveAppSnapshotConfigRequest);
              System.out.println(addLiveAppSnapshotConfigResponse.getRequestId());
              // todo something.
          } catch (ServerException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          } catch (ClientException e) {
              // TODO Auto-generated catch block
              e.printStackTrace();
          }
      							
  • 查看截图文件

    上述截图配置完成后新发起的推流即可生成截图,查看截图的方法包括以下三种:

    • OSS控制台提供截图管理功能。参见 删除截图

    • API/SDK提供了查询截图信息的接口。参见 查询截图信息

    • 在知晓截图录制地址时可以直接在该媒体Bucket的对应目录查看生成结果,请参考下图。

常见问题

  • 直播截图是针对于推流的AppName为粒度设置的,用户可以设置某个AppName下的所有StreamName的截图规则。并且AppName支持“*”通配符,表示该截图规则是针对于该直播域名下的所有推流均生效的,截图生效需要注意推流的AppName需要与配置的AppName匹配。

  • 与直播录制功能类似,截图功能也需要将截图结果存放在媒体Bucket中。因此,截图功能也需要开通OSS服务,并且在媒体Bucket中设置输入媒体Bucket。详情参见 媒体Bucket的增删改操作

  • 配置截图功能时,ObjectName可以定义为覆盖和非覆盖两种类型,其中覆盖是按照截图频率每次新生成的截图将覆盖之前生成的截图文件,因此仅会得到一张截图文件;而不覆盖则是每次新产生的截图将不覆盖之前生成的截图文件,各截图文件使用{Sequence}区分,{Sequence}将通过1,2,……,n的方式表示。

  • 使用API/SDK配置截图配置是需要输入OSS的Endpoint,OSS的Endpoint为不包括Bucket名称的OSS访问地址,详情参见 OSS Endpoint设置,并且这里请不要加http://或者https://协议头。

  • 使用API/SDK配置截图时OverwriteOssObject参数和SequenceOssObject参数必须二者选一进行配置,暂时没有默认值设置。