开发者指南
所有文档

          媒体内容审核 VCR

          开发者指南

          视频审核

          VCR 支持对BOS视频、VOD媒资、URL视频审核。对于不同来源的视频,需要按照如下规则拼接视频路径source:

          • 对于 BOS 视频,source=bos://{bucket}/{object}
          • 对于 VOD 媒资原视频,source=vod://{mediaId}
          • 对于 VOD 媒资转码后视频,source="vod://<vod-media-id>-<preset>"
          • 对于 URL 视频,source="<http(s)-url">

          发起视频审核

          指定视频路径发起视频审核。

          审核 BOS 视频

          根据BOS bucket和BOS key直接发起审核。需要说明,使用本方法需要将object配置公共GetObject权限,参考设置BOS bucket权限。简述为:在BOS 的控制台中 Bucket 设置-权限设置-自定义权限中添加 VCR 服务帐号: fa5f9a177f54454b9076a57c6280f61b。

          代码示例:

          public void putBosMedia(VcrClient vcrClient, String bucket, String object) {
              vcrClient.putMedia("bos://" + bucket + "/" + object);
          }

          审核 VOD 媒资原视频

          根据 VOD 媒资ID直接发起审核。

          代码示例:

          public void putVodMedia(VcrClient vcrClient, String mediaId) {
              vcrClient.putMedia("vod://" + mediaId);
          }

          审核 VOD 媒资转码后视频

          根据 VOD 媒资ID和 VOD 转码模板名称发起审核。

          代码示例:

          public void putVodMedia(VcrClient vcrClient, String mediaId, String preset) {
              // preset is vod preset
              vcrClient.putMedia("vod://" + mediaId + "-" + preset);
          }

          审核 URL 视频

          根据视频 URL 直接发起审核。

          代码示例:

          public void putUrlMedia(VcrClient vcrClient, String url) {
              vcrClient.putMedia(url);
          }

          审核视频配置审核模板等参数

          提交视频时可以配置视频描述、审核模板和通知名称等可选参数。

          代码示例:

          public void putMedia(VcrClient vcrClient, String source, String preset, String notification) {
              PutMediaRequest request = new PutMediaRequest();
              request.setSource(source);
              request.setDescription("this is a test media");
              // preset is vcr preset
              request.setPreset(preset);
              request.setNotification(notification);
              vcrClient.putMedia(request);
          }

          说明:

          审核包含鉴权参数的 URL 视频,将PutMediaRequestauth成员设置为鉴权参数即可。

          查询视频审核结果

          指定视频路径查询视频的审核结果。

          代码示例:

          public void getMedia(VcrClient vcrClient, String source) {
              GetMediaResponse response = vcrClient.getMedia(source);
              String status = response.getStatus();
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String target = item.getTarget();
                      Integer timeInSeconds = item.getTimeInSeconds();
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String extra = item.getExtra();
                      String subType = item.getSubType();
                      Evidence evidence = item.getEvidence();
                  }
              }
          }

          说明:

          1. 视频审核结果格式和各字段含义参考VCR API
          2. 对于包含鉴权参数的 URL 视频,在查询审核结果时,无需使用鉴权参数。

          直播审核

          发起直播审核

          提交直播流审核时需要配置直播流地址、审核模板和通知名称等参数。 代码示例

          public void putStream(VcrClient vcrClient, String source, String preset, String notification) {
              PutStreamRequest request = new PutStreamRequest();
              request.setSource(source);
              request.setPreset(preset);
              request.setDescription("this is a test stream");
              request.setNotification(notification);
              PutStreamResponse response = vcrClient.putStreamV2(request);
          }

          取消直播流审核

          取消直播流审核时,需要配置直播流地址和回调地址参数

          public void cancelStream(VcrClient vcrClient, String source, String notification) {
              CancelStreamRequest request = new CancelStreamRequest();
              request.setSource(source);
              request.setNotification(notification);
              CancelStreamResponse response = vcrClient.cancelStreamV2(request);
          }

          获取直播流审核结果

          通过直播流地址获取审核结果

          public void getStream(VcrClient vcrClient, String source) {
              GetStreamRequest request = new GetStreamRequest();
              request.setSource(source);
              GetStreamResponse response = vcrClient.getStreamV2(request);
          }

          获取直播流审核任务列表

          public void getStreamCheckTaskList(VcrClient vcrClient, Integer maxKeys, String marker, String status) {
              GetStreamCheckTaskListRequest request = new GetStreamCheckTaskListRequest();
              request.setMaxKeys(maxKeys);
              request.setMarker(marker);
              request.setStatus(status);
              GetStreamCheckTaskListResponse response = vcrClient.getStreamCheckTaskListV2(request);
          }

          音频审核

          发起音频审核

          审核音频配置审核模板等参数

          提交音频时可以配置音频描述、审核模板和通知名称等可选参数。

          代码示例:

          public void putAudio(VcrClient vcrClient, String source, String preset, String notification) {
              PutAudioRequest request = new PutAudioRequest();
              request.setSource(source);
              request.setDescription("this is a test audio");
              // preset is vcr preset
              request.setPreset(preset);
              request.setNotification(notification);
              vcrClient.putAudio(request);
          }

          说明:

          审核包含鉴权参数的 URL 音频,将PutAudioRequestauth成员设置为鉴权参数即可。

          查询音频审核结果

          指定音频路径查询音频的审核结果。

          代码示例:

          public void getAudio(VcrClient vcrClient, String source) {
              GetAudioResponse response = vcrClient.getAudio(source);
              String status = response.getStatus();
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String target = item.getTarget();
                      Integer timeInSeconds = item.getTimeInSeconds();
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String extra = item.getExtra();
                      String subType = item.getSubType();
                      Evidence evidence = item.getEvidence();
                  }
              }
          }

          说明:

          1. 音频审核结果格式和各字段含义参考VCR API
          2. 对于包含鉴权参数的 URL 音频,在查询审核结果时,无需使用鉴权参数。

          图片审核

          VCR支持 BOS 图片、HTTP图片审核。对于不同来源的图片,需要按照如下规则拼接图片路径source:

          • 对于BOS图片,source=bos://{bucket}/{object}
          • 对于HTTP图片,source={url}

          图片同步审核

          图片同步审核,审核结果在HTTP Response中返回。

          代码示例:

          public void putImage(VcrClient vcrClient, String source) {
              PutImageResponse response = vcrClient.putImage(source);
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String target = item.getTarget();
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String extra = item.getExtra();
                      String subType = item.getSubType();
                      Evidence evidence = item.getEvidence();
                  }
              }
          }

          图片指定模板审核。

          代码示例:

          public void putImage(VcrClient vcrClient, PutImageRequest request) {
              PutImageResponse response = vcrClient.putImage(request);
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String target = item.getTarget();
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String extra = item.getExtra();
                      String subType = item.getSubType();
                      Evidence evidence = item.getEvidence();
                  }
              }
          }

          图片异步审核

          图片异步审核,支持GIF图片(帧数不能超过100张)审核,审核结果通过通知服务进行回调。

          代码示例:

          public void putImageAsync(VcrClient vcrClient, String source, String preset, String notification) {
              PutImageAsyncResponse response = vcrClient.putImageAsync(source, preset, notification);
          }

          图片异步审核查询

          图片异步审核结果查询,结果保存时间10分钟。

          代码示例:

          public void getImageAsync(VcrClient vcrClient, String source, String preset) {
              GetImageAsyncResponse response = vcrClient.getImageAsync(source, preset);
              String label = response.getLabel();
              String status = response.getStatus();
                  for (CheckResult result : response.getResults()) {
                      String type = result.getType();
                      for (ResultItem item : result.getItems()) {
                          String target = item.getTarget();
                          String label = item.getLabel();
                          Double confidence = item.getConfidence();
                          String extra = item.getExtra();
                          String subType = item.getSubType();
                          Evidence evidence = item.getEvidence();
                      }
                  }
              }

          图片审核结果格式和各字段含义参考VCR API

          文本审核

          对文本进行审核。

          代码示例:

          public void putText(VcrClient vcrClient, String text) {
              PutTextResponse response = vcrClient.putText(text);
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String subType = item.getSubType();
                      String extra = item.getExtra();
                  }
              }
          }

          文本指定模板审核。

          代码示例:

          public void putText(VcrClient vcrClient, PutTextRequest request) {
              PutTextResponse response = vcrClient.putText(request);
              String label = response.getLabel();
              for (CheckResult result : response.getResults()) {
                  String type = result.getType();
                  for (ResultItem item : result.getItems()) {
                      String label = item.getLabel();
                      Double confidence = item.getConfidence();
                      String subType = item.getSubType();
                      String extra = item.getExtra();
                  }
              }
          }

          文本审核结果格式和各字段含义参考VCR API

          自定义face库

          face库集素材添加

          添加库集图片。

          代码示例:

          public void addFaceImage(VcrClient vcrClient, String lib, String brief, String image) {
              vcrClient.addFaceImage(lib, brief, image);
          }

          face库集素材删除

          删除指定的face库集素材,需指定face库集名称。

          代码示例:

          public void delFaceImage(VcrClient vcrClient, String lib, String brief, String image) {
              vcrClient.delFaceImage(lib, brief, image);
          }

          face库集素材列表

          根据face库集名称查询face库集素材列表。

          代码示例:

          public void getFaceBrief(VcrClient vcrClient, String lib, String brief) {
              LibImageResponse response = vcrClient.getFaceBrief(lib, brief);
              for (String image : response.getImages()) {
                  String imageUrl = image;
              }
          }

          face库集删除

          根据face库集名称删除face库集。

          代码示例:

          public void delFaceBrief(VcrClient vcrClient, String lib, String brief) {
              vcrClient.delFaceBrief(lib, brief);
          }

          face库列表查询

          根据face库名查询库集合。

          代码示例:

          public void getFaceLib(VcrClient vcrClient, String lib) {
              LibBriefResponse response = vcrClient.getFaceLib(lib);
              for (String brief : response.getBriefs()) {
                  String briefName = brief;
              }
          }

          文本审核结果格式和各字段含义参考VCR API

          自定义logo库

          logo库集素材添加

          添加库集图片。

          代码示例:

          public void addLogoImage(VcrClient vcrClient, String lib, String brief, String image) {
              vcrClient.addLogoImage(lib, brief, image);
          }

          logo库集素材删除

          删除指定的logo库集素材。

          代码示例:

          public void delLogoImage(VcrClient vcrClient, String lib, String image) {
              vcrClient.delLogoImage(lib, image);
          }

          logo库集素材列表

          根据logo库集名称查询logo库集素材列表。

          代码示例:

          public void getLogoBrief(VcrClient vcrClient, String lib, String brief) {
              LibImageResponse response = vcrClient.getLogoBrief(lib, brief);
              for (String image : response.getImages()) {
                  String imageUrl = image;
              }
          }

          logo库集删除

          删除指定的logo库集。

          代码示例:

          public void delLogoBrief(VcrClient vcrClient, String lib, String brief) {
              vcrClient.delLogoBrief(lib, brief);
          }

          logo库列表查询

          根据logo库名查询库集合。

          代码示例:

          public void getLogoLib(VcrClient vcrClient, String lib) {
              LibBriefResponse response = vcrClient.getLogoLib(lib);
              for (String brief : response.getBriefs()) {
                  String briefName = brief;
              }
          }

          文本审核结果格式和各字段含义参考VCR API

          日志

          VCR Java SDK发布版本中增加了logback作为slf4j的实现,开发者可以直接使用。如果工程中有其他框架实现,例如log4j,也可以用来替代logback。

          默认日志

          如果使用默认的logback,需要配置logback.xml到classpath中。不做配置时,日志级别默认为DEBUG。

           <configuration>
              <property name="LOG_HOME" value="./log/"/>
              <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
                  <!-- encoders are assigned the type
                       ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
                  <encoder>
                      <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
                  </encoder>
              </appender>
              <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
                  <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                      <FileNamePattern>${LOG_HOME}/VCRUnitTest.%d{yyyy-MM-dd}.log</FileNamePattern>
                      <MaxHistory>30</MaxHistory>
                  </rollingPolicy>
                  <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                      <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
                  </encoder>
                  <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
                      <MaxFileSize>10MB</MaxFileSize>
                  </triggeringPolicy>
              </appender>
          
              <root level="info">
                  <appender-ref ref="STDOUT"/>
                  <appender-ref ref="FILE"/>
              </root>
           </configuration>

          自有日志模块

          如果使用自己的日志实现模块,例如项目依赖于Maven,则可以参考下面的配置到pom.xml中来去除logback。

          <?xml version="1.0" encoding="utf-8"?>
          
          <dependency>
            <groupId>com.baidubce</groupId>
            <artifactId>bce-java-sdk</artifactId>
            <version>${bce.sdk.version}</version>
            <exclusions>
              <exclusion>
                <groupId>ch.qos.logback</groupId>
                <artifactId>logback-classic</artifactId>
              </exclusion>
              <exclusion>
                <artifactId>logback-core</artifactId>
                <groupId>ch.qos.logback</groupId>
              </exclusion>
              <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
              </exclusion>
            </exclusions>
          </dependency>
          上一篇
          安装VCR-Java-SDK
          下一篇
          版本更新记录