开发者指南

视频分析

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

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

说明:

注意:这里的”视频“概念包含视频、音频和图片。

提交视频分析

指定视频路径发起视频分析。如果使用定制模板,由 VCA 研发人员在后台帮用户创建好模板,然后用户在创建视频时在请求参数或请求体中配置模板名称即可。

分析 BOS 视频

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

VCA 也支持BOS回源,只要在BOS配置了正确的回源地址,参考设置BOS镜像回源,VCA 可以帮助回源并完成分析。

代码示例:

示例一:使用默认模板分析 BOS 视频

public void analyzeBosMedia(VcaClient vcaClient, String bucket, String object) {
    vcaClient.analyze("bos://" + bucket + "/" + object);
}

示例二:使用定制模板分析 BOS 视频

public void analyzeBosMedia(VcaClient vcaClient, String bucket, String object, String preset) {
    AnalyzeRequest request = new AnalyzeRequest();
    request.setSource("bos://" + bucket + "/" + object);
    request.setPreset(preset);
    vcaClient.analyze(request);
}

分析 VOD 媒资

根据 VOD 媒资ID直接发起分析。

代码示例:

示例一:使用默认模板分析 VOD 媒资

public void analyzeVodMedia(VcaClient vcaClient, String mediaId) {
    vcaClient.analyze("vod://" + mediaId);
}

示例二:使用定制模板分析 VOD 媒资

public void analyzeVodMedia(VcaClient vcaClient, String mediaId, String preset) {
    AnalyzeRequest request = new AnalyzeRequest();
    request.setSource("vod://" + mediaId);
    request.setPreset(preset);
    vcaClient.analyze(request);
}

分析 HTTP(S) URL 视频

根据url直接发起分析。

代码示例:

示例一:使用默认模板分析 URL 视频

public void analyzeMedia(VcaClient vcaClient, String source) {
    vcaClient.analyze(source);
}

示例二:使用定制模板分析 URL 视频

public void analyze(VcaClient vcaClient, String source, String preset) {
    AnalyzeRequest request = new AnalyzeRequest();
    request.setSource(source);
    request.setPreset(preset);
    vcaClient.analyze(request);
}

说明:

分析包含鉴权参数的 URL 视频,将AnalyzeRequest中auth成员设置为鉴权参数即可。
提交媒资分析时还可以配置通知名称,参考analyze(AnalyzeRequest)函数。

查询视频分析结果

指定视频路径查询对应的分析结果。

代码示例:

public void queryResult(VcaClient vcaClient, String source) {
    QueryResultResponse response = vcaClient.queryResult(source);
    String status = response.getStatus();
    if ("FINISHED".equals(status)) {
        for (TagsResult tagsResult: response.getResults()) {
            String type = tagsResult.getType();
            for (ResultItem item: tagsResult.getResult()) {
                String attribute = item.getAttribute();
                Double confidence = item.getConfidence();
                String source = item.getSource();
                List<ResultItem.TimeInSeconds> time = item.getTime();
            }
        }
    }
}

视频分析结果格式和各字段含义参考VCA API

查询中间任务结果

指定视频路径查询中间任务的分析结果。

代码示例:

public void querySubTaskResult(VcaClient vcaClient, String source, String type) {
    QuerySubTaskResponse subTaskResponse = vcaClient.querySubTask(source, type);
    String status = subTaskResponse.getStatus();
    if ("FINISHED".equals(status)) {
        String result = subTaskResponse.getResult();
    }
}

视频分析中间任务结果格式和各字段含义参考VCA API