媒体内容审核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
    下一篇
    版本更新记录