直播音视频解决方案视频截图查询接口
2023.09.22 17:31:52
接口地址
https://as.dun.163yun.com/v1/livewallsolution/query/image
接口描述
实时查询视频截图信息。建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。
请求频率
小于10s/200次,请求频率过快服务器会拒绝处理
请求参数
公共参数已省略,详细见 请求公共参数
参数名称 | 类型 | 是否必选 | 最大长度 | 描述 |
---|---|---|---|---|
taskId | String | Y | - | 请求数据标识,32位长 |
levels | String | Y | - | String形式的数组,eg, "[1,2]", 0: 正常,1: 嫌疑,2: 确定 |
pageSize | Number | N | - | 每页查询数据条数,大于0,上限1000 |
pageNum | Number | N | - | 查询页码,从1开始 |
startTime | Number | 最近开始时间点,单位毫秒 | ||
endTime | Number | 最近结束时间点,单位毫秒 | ||
callbackStatus | Number | N | - | 回调状态:0:不需要回调,1:等待回调,2:已回调,3:回调失败 |
响应结果
响应字段如下,响应通用字段已省略,详细见响应通用字段:
result数组结构
参数名称 | 类型 | 描述 |
---|---|---|
status | Number | 数据状态,0: 成功,20: taskId过期,30: taskId不存在 |
images | json对象 | 截图分页数据 |
其中images结构如下:
参数名称 | 类型 | 描述 |
---|---|---|
count | Number | 查询截图张数总量 |
rows | json数组 | 分页数据 |
rows结构如下:
参数名称 | 数据类型 | 描述 |
---|---|---|
url | String | 截图地址 |
label | Number | 分类信息,100:色情,200:广告,400:违禁,500:涉政,600:谩骂,700:灌水 |
labelLevel | Number | 分类级别,1:不确定,2:确定 |
beginTime | Number | 截图开始时间,单位毫秒 |
endTime | Number | 截图结束时间,单位毫秒 |
请求示例
/** 产品密钥ID,产品标识 */
private final static String SECRETID = "your_secret_id";
/** 产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露 */
private final static String SECRETKEY = "your_secret_key";
/** 易盾反垃圾云服务直播音视频解决方案截图结果获取接口地址 */
private final static String API_URL = "http://as.dun.163yun.com/v1/livevideo/query/image";
/** 实例化HttpClient,发送http请求使用,可根据需要自行调参 */
private static HttpClient httpClient = HttpClient4Utils.createHttpClient(100, 20, 10000, 2000, 2000);
/**
*
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
Map<String, String> params = new HashMap<String, String>();
// 1.设置公共参数
params.put("secretId", SECRETID);
params.put("version", "v1.1");
params.put("timestamp", String.valueOf(System.currentTimeMillis()));
params.put("nonce", String.valueOf(new Random().nextInt()));
// 2.设置私有参数
params.put("taskId", "c633a8cb6d45497c9f4e7bd6d8218443");
params.put("levels", "[1,2]");
params.put("callbackStatus", "1");
params.put("pageNum", "1");
params.put("pageSize", "10");
// 3.生成签名信息
String signature = SignatureUtils.genSignature(SECRETKEY, params);
params.put("signature", signature);
// 4.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求
String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);
// 5.解析接口返回值
JsonObject resultObject = new JsonParser().parse(response).getAsJsonObject();
int code = resultObject.get("code").getAsInt();
String msg = resultObject.get("msg").getAsString();
if (code == 200) {
JsonObject result = resultObject.getAsJsonObject("result");
int status = result.get("status").getAsInt();
JsonObject images = result.get("images").getAsJsonObject();
int count = images.get("count").getAsInt();
JsonArray rows = images.get("rows").getAsJsonArray();
if (status == 0) {
for (JsonElement rowElement : rows) {
JsonObject row = rowElement.getAsJsonObject();
String url = row.get("url").getAsString();
int label = row.get("label").getAsInt();
int labelLevel = row.get("labelLevel").getAsInt();
long beginTime = row.get("beginTime").getAsLong();
long endTime = row.get("endTime").getAsLong();
}
System.out.println(String.format("live data query success, images: %s", rows));
} else if (status == 20) {
System.out.println("taskId is expired");
} else if (status == 30) {
System.out.println("taskId is not exist");
}
} else {
System.out.println(String.format("ERROR: code=%s, msg=%s", code, msg));
}
}
请求响应示例如下:
{
"code": 200,
"msg": "ok",
"result": {
"status": 0,
"images": {
"count": 3,
"rows": [
{
"url": "xxxxxxxxx",
"label": 200,
"labelLevel": 1,
"beginTime": 1588056782734,
"endTime": 1588056700000
}
]
}
}
}