开发者指南
视频审核
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 视频,将
PutMediaRequest
中auth
成员设置为鉴权参数即可。
查询视频审核结果
指定视频路径查询视频的审核结果。
代码示例:
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();
}
}
}
说明:
- 视频审核结果格式和各字段含义参考VCR API。
- 对于包含鉴权参数的 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 音频,将
PutAudioRequest
中auth
成员设置为鉴权参数即可。
查询音频审核结果
指定音频路径查询音频的审核结果。
代码示例:
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();
}
}
}
说明:
- 音频审核结果格式和各字段含义参考VCR API。
- 对于包含鉴权参数的 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>