点播检测结果获取接口
点播视频离线接口方式获取
离线接口获取地址
http://as.dun.163.com/v3/video/callback/results
接口描述
该接口用于获取点播视频检测结果,检测结果包含截图证据信息及违规分类信息等。建议您使用POST请求, 且仅接受 application/x-www-form-urlencoded 编码格式。
接口请求频率
小于10s/20次,请求频率过快服务器会拒绝处理。
请求参数
该接口参数与请求公共参数一致,详细见 请求公共参数
参数名称 | 类型 | 是否必选 | 最大长度 | 描述 |
---|---|---|---|---|
version | String | Y | 4 | 接口版本v3.1 |
响应结果
响应字段如下,响应通用字段已省略,详细见 响应通用字段 :
参数名称 | 类型 | 描述 |
---|---|---|
result | json数组 | 检测结果数组 |
result 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
status | Number | 视频处理状态码,定义为:0:检测成功,110:请求重复,120:参数错误,130:解析错误,140:数据类型错误,160:视频大小超限(>5G) |
taskId | String | 点播视频提交生成的唯一数据标识,可以根据该标识查询视频数据最新结果 |
callback | String | 产品提交视频点播信息时带的 callback 字段数据,用于标识视频,产品根据业务情况自行设计 |
censorSource | Number | 审核来源,0:易盾人审,1:客户人审,2:易盾机审 |
censorTime | Number | 人工审核完成时间,毫秒单位时间戳(13位) |
level | Number | 视频级别信息,分为0:正常,1:不确定,2:确定,其中不确定的建议人工复审 |
suggestionLevel | Number | 视频嫌疑程度,1:低嫌疑,2:高嫌疑,只有level为不确定时才可能返回 |
duration | Number | 视频时长字段,单位s |
evidences | json对象数组 | 证据信息数组,如果数组为空,则表示该视频为正常视频 |
evidences对象数据结构:
证据时间戳说明
◆ 证据信息命中黑屏挂机后,type为视频,开始时间和结束时间为证据采集时对应视频内截取第一帧的相对时间。其他垃圾类别,证据开始时间与结束时间一致
参数名称 | 类型 | 描述 |
---|---|---|
beginTime | Number | 证据开始相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29" |
endTime | Number | 证据结束相对时间,单位为毫秒,调用方获取后可自行格式化为可视化时间,如:149000 转换为"00:02:29" |
type | Number | 1:图片,2:视频 |
url | String | 证据信息 |
censorSource | Number | 审核来源,0:易盾人审,1:客户人审,2:易盾机审 |
labels | json对象数组 | 证据结果数组 |
frontPics | json对象数组 | 关联信息-命中前截图信息 |
backPics | json对象数组 | 关联信息-命中后截图信息 |
labels对象数据结构
参数名称 | 类型 | 描述 |
---|---|---|
label | Number | 分类信息,100:色情,110:性感;200:广告,210:二维码,260:广告法,300:暴恐,400:违禁,500:涉政,800:恶心类,900:其他,1020:黑屏,1030:挂机,1100:涉价值观 |
subLabels | json数组 | 细分类信息,可能包含多个,可能为空 |
level | Number | 级别信息,分为1:不确定,2:确定 |
rate | Number | 分数 |
subLabels 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
subLabel | Number | 细分类,详细编码请参考下方对应细分类编码对照表 |
rate | Number | 置信度分数,0-1之间取值,1为置信度最高,0为置信度最低 |
details | json数组 | htiInfos:命中详细信息 |
details 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
hitInfos | String | 针对命中sublabel的补充说明 |
imageTagInfo | json数组 | 命中标签详细信息,对于返回的hintInfo的解释说明,可能为空 |
imageListInfo | json数组 | 命中自定义关键词名单时返回 |
hitLocationInfos | json数组 | 命中详情位置信息,当前人脸、logo、关键词支持位置信息返回 |
imageTagInfo 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
tagName | String | hinInfo中可返回的图片中包含的可识别内容 |
tagGroup | String | tagName对应的分组名称,用于对tageName的解释 |
imageListInfo 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
type | Number | type为2时为自定义敏感词名单 |
word | String | 该图片命中的自定义敏感词 |
hitLocationInfos 数据结构
参数名称 | 类型 | 描述 |
---|---|---|
hitInfo | String | 命中详情 |
x1 | Number | 位置信息,对应目标矩形左上角横坐标相对坐标 |
y1 | Number | 位置信息,对应目标矩形左上角纵坐标相对坐标 |
x2 | Number | 位置信息,对应目标矩形右下角横坐标相对坐标 |
y2 | Number | 位置信息,对应目标矩形右下角纵坐标相对坐标 |
frontPics对象数据结构
参数名称 | 类型 | 描述 |
---|---|---|
url | String | 命中截图前3个截图URL信息,不满3个按实际存在截图返回 |
backPics对象数据结构
参数名称 | 类型 | 描述 |
---|---|---|
url | String | 命中截图后3个截图URL信息,不满3个按实际存在截图返回 |
自定义细分类
易盾支持subLabel自定义细分类过检并返回,如有需求,可联系您的专属运营经理添加。
响应示例
输出结果:
{
"code":200,
"msg":"ok",
"result":[
{
"taskId":"e8b83ad1acc24fcb88d2ac6b1db51dc2",
"callback":"",
"status":0,
"level":1,
"suggestionLevel":2,
"censorSource":2,
"censorTime":1612234421000,
"duration";10,
"evidences":[
{
"type":1,
"url":"https://illegal-video.nosdn.127.net/e8b83ad1acc24fcb1db51dc2_1608098799080.jpg",
"beginTime":0,
"endTime":0,
"labels":[
{
"label":400,
"level":1,
"rate":0.986885,
"subLabels":[
{
"subLabel":40003,
"rate":0.9868849,
"details":{
"hitInfos":[
"抖音"
],
"hitLocationInfos":[
{
"hitInfo":"抖音",
"x1":0.019444445,
"y1":0.009375,
"x2":0.23888889,
"y2":0.05625
}
]
}
}
]
}
],
"censorSource":2
}
]
}
]
}
点播视频回调方式获取结果
回调方式以数据为维度由客户设置回调地址;机器检测结束之后,调用客户提供的回调接口。
回调接入说明
接入回调方式很简单,只需要在调用在线检测接口请求参数中指定了回调通知参数callbackUrl(即一个http(s)协议接口的URL)。需要您的回调接口支持http协议,支持POST方法,传输数据编码采用utf-8。
业务类型 | 回调参数名称 | 类型 | 最大长度 | 描述 |
---|---|---|---|---|
点播视频 | callbackUrl | String | 256 | 点播视频提交接口参数中添加callbackUrl字段 |
回调状态
您服务端接收到我们回调的结果后,返回的HTTP状态码为200时,表示推送成功,其他的HTTP状态码均视为您接收失败,我们将每隔10分钟推送一次,如果一直失败,持续一天后不再推送;回调接口超时时间设置为2s,为了保证顺利接收数据,客户需保证接收接口性能稳定并且保证幂等性。
请求公共参数
参数名称 | 类型 | 是否必传 | 描述 |
---|---|---|---|
secretId | String | Y | 产品秘钥 id ,由易盾反垃圾云服务分配,产品标识 |
businessId | String | Y | 业务id ,由易盾反垃圾云服务分配,业务标识 |
signature | String | Y | 请求签名,用来验证此次请求的合法性,具体算法见 接口鉴权 |
callbackData | String | Y | 主动推送推送数据,格式为json字符串 |
secretId,businessId,signature参数用来给数据接收接口做签名鉴权用
接口鉴权
回调结果可以通过业务开通时易盾分配的密钥信息字段进行接口鉴权,鉴权粒度是否要精确到业务级别,用户可以根据需要自行决定
/**
* 通过HttpServletRequest做签名验证
*
* @param request
* @return
*/
public static boolean verifySignature(HttpServletRequest request) {
String secretId = request.getParameter("secretId");
String businessId = request.getParameter("businessId");
String signature = request.getParameter("signature");
if (StringUtils.isEmpty(secretId) || StringUtils.isEmpty(signature)) {
// 签名参数为空,直接返回失败
return false;
}
Map<String, String> params = Maps.newHashMap();
for (String paramName : request.getParameterMap().keySet()) {
if (!"signature".equals(paramName)) {
params.put(paramName, request.getParameter(paramName));
}
}
// SECRETKEY:产品私有密钥 SECRETID:产品密钥ID BUSINESSID:业务ID,开通服务时,易盾会提供相关密钥信息
String serverSignature = getSignature(SECRETKEY, params);
return signature.equals(serverSignature) && SECRETID.equals(secretId) && BUSINESSID.equals(businessId);
}
/**
* 生成签名信息
* @param secretKey 产品私钥
* @param params 接口请求参数名和参数值map,不包括signature参数名
* @return
* @throws UnsupportedEncodingException
*/
public static String genSignature(String secretKey, Map<String, String> params) throws UnsupportedEncodingException {
// 1. 参数名按照ASCII码表升序排序
String[] keys = params.keySet().toArray(new String[0]);
Arrays.sort(keys);
// 2. 按照排序拼接参数名与参数值
StringBuffer paramBuffer = new StringBuffer();
for (String key : keys) {
paramBuffer.append(key).append(params.get(key) == null ? "" : params.get(key));
}
// 3. 将secretKey拼接到最后
paramBuffer.append(secretKey);
// 4. MD5是128位长度的摘要算法,用16进制表示,一个十六进制的字符能表示4个位,所以签名后的字符串长度固定为32个十六进制字符。
return DigestUtils.md5Hex(paramBuffer.toString().getBytes("UTF-8"));
}
点播视频回调数据结构
callbackData为Json字符串,数据结构如下:
{
"taskId":"ed7dv8g3lk98bvx435s444444",
"callback":"自定义内容",
"status":0,
"level":1,
"suggestionLevel":2,
"censorSource":2
"censorTime":1612234421000,
"duration";10,
"evidences":[
{
"type":1,
"url":"https://illegal-video.nosdn.127.net/xxx.jpg",
"beginTime":156240,
"endTime":156240,
"labels":[
{
"label":110,
"level":1,
"rate":0.979219,
"subLabels":[
{
"subLabel":11000,
"rate":0.979219
}
]
}
],
"censorSource":2
},
{
"type":1,
"url":"https://illegal-video.nosdn.127.net/xxxx.jpg",
"beginTime":146160,
"endTime":146160,
"labels":[
{
"label":110,
"level":1,
"rate":0.997613,
"subLabels":[
{
"subLabel":11000,
"rate":0.997613
}
]
}
]
},
]
}