视频内容审核,用于检测视频文件中的不良信息,并给出审核结果管控建议。支持同时检测文件中的音频和视频数据。
调用方提交一个或多个审核文件,指定需要检测的类型,服务器异步回调返回检测结果。
画面支持的检测类型及对应标签如下:
检测类型 | 说明 | action | 一级label | 二级label |
---|---|---|---|---|
色情识别 | 识别图片中的色情、性感等违规内容 | v-porn | ||
normal: 正常 | normal: 正常 | |||
sexy: 性感 | female_underwear: 女性内衣内裤 female_sexy_chest_l12: 女性露沟12级 female_sexy_chest_l3: 女性露沟3级 female_sexy_chest_l4: 女性露沟4级 female_backless: 女性露背 female_sexy_leg: 女性露腿过臀线 female_focus_leg: 聚焦女性长腿 bathing_suit: 女性沙滩泳衣 male_topless: 男性赤裸上半身【露出乳头位置】 male_normal_topless: 男性赤裸上半身【未到乳头位置】 other_sexy: 其他性感 |
|||
porn: 色情 | sex_product: 性用品 naked_private_part: 裸露敏感部位 extensive_naked: 大面积裸露,但未裸露敏感部位 sex_behavior: 性行为 naked_female_back: 女性上半身未穿【背部】 naked_hip: 露臀沟 sex_bulge: 敏感部位激凸 focus_female_crotch: 聚焦女性裆部、拍摄女性底裤 focus_male_crotch: 聚焦男性裆部及下半身 hand_on_sexy: 手抚摸、抓敏感部位 lick: 舔手舔脚舔物 kiss: 接吻 sm: SM sperm: 精液 naked_child: 儿童裸露 other_dirty: 其他低俗 tongue_out: 吐舌头 female_focus_hip: 聚焦女性臀部 male_underwear: 男性内裤 porn_pip: 画中画小窗口色情 |
|||
暴恐识别 | 识别图片中的血腥、暴恐等违规内容 | v-terrorism | normal: 正常 fire_explosion: 爆炸/烟光 gun: 枪支 knife: 刀具 crowd: 人口聚集 flag_of_terrorism: 恐怖主义旗帜 special_dress: 特殊着装 disgusted: 恶心不适 with_weapon: 武器携带 bloody: 血腥画面 uniform: 军警制服 |
无 |
敏感信息识别 | 识别图片中的敏感信息内容 | v-antispam | normal: 正常 special_building: 中国地标建筑 rmb: 人民币 map_of_China: 中国地图 cartoons_of_leaders: 领导人漫画 flags_of_China: 中国旗帜(原中国国旗) Tibetan_buddhism: 藏传佛教 other_antispam: 其他敏感信息(银河邪教组织、国殇之柱\民主女神) tank: 坦克、装甲车 fighter: 战斗机 cannon: 大炮 battleship: 战舰 |
无 |
敏感人物识别 | 识别图片中是否包含国内外政治人物、公众人物 | v-sface | normal: 正常 sface: 包含敏感人物 |
无 |
违法违规识别 | 识别图片中是否包含违法违规场景信息 | v-illegal | normal: 正常 minor: 未成年人 drug: 吸毒 drive: 开车直播 gamble: 赌博 smoke: 吸烟 id_infomation: 身份证件 tattoo: 社会纹身 inbed: 躺播 |
无 |
广告识别 | 识别图片中是否包含广告信息 | v-ad | normal: 正常 QR_code: 二维码 bar_code: 条形码 applet_code: 小程序码 |
无 |
图文违规识别 | 识别图片中是否包含疑似违规文字信息 | v-ocr | normal: 正常 ocr_politics: 涉政 ocr_terrorism: 涉暴 ocr_porn: 涉黄 ocr_illegal: 违法 ocr_abuse: 辱骂 ocr_ad: 广告 |
无 |
声音支持的检测类型和对应标签如下:
检测类型 | 说明 | action | label |
---|---|---|---|
音频娇喘识别 | 检测音频文件的声纹特征,识别其中的娇喘等违规特征 | a-porn | normal:正常 moan:娇喘 |
音频敏感词识别 | 翻译音频文件的文字信息,识别其中的敏感违规内容 | a-antispam | normal:正常 terrorism:暴力恐怖 porn:色情低俗 illegal:违法违规 politics:涉政敏感 abuse:谩骂灌水 ad:广告欺诈 feudalism:封建迷信 religion:宗教敏感 affairs:时事舆情 contraband:违禁物品 minors:未成年人 banned-website:非法网址 |
音转文识别 | 翻译音频文件的文字信息 | a-asr | normal: 正常 |
限制类别 | 说明 |
---|---|
视频格式 | 支持.avi、.mp4、.asf、.wmv、.mov,更多方式支持请联系技术支持 |
文件大小限制 | 单个视频大小不超过200MB,如果您需支持更大视频,请联系技术支持 |
并发限制 | 每秒最多可提交20段视频审核,同时在处理的视频数量不超过200条,如需更高并发,请联系技术支持 |
保存时长 | 系统会自动保存疑似违规截图和音频片段,并将文件url连同检测结果返回给用户。 保存时间为3小时,超过3小时url可能失效,请及时做好转存。 |
视频分辨率 | 不低于128x128, 分辨率过低可能会影响识别效果 |
区域限制 | 目前只支持在中国大陆使用,如果您需要其他国家和地区支持,请联系技术支持 |
事项 | 说明 |
---|---|
请求方法 | POST |
请求协议 | HTTPS |
请求域名 | ai.jocloud.com |
请求路径 | /app/{appid}/v1/video/async/submit?traceId=uuid-xxxx-xxxx-xxxx-xxxx |
请求参数 | traceId为uuid字符串,用于排查问题时对账,建议每次请求使用不同值 |
请求头部 | Content-Type: application/json;charset=UTF-8 token: 鉴权token,生成方式参考 认证鉴权 |
请求Body | json字符串,详细定义如下 |
请求参数存放在请求body中,是一个json对象,具体字段说明如下:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
actions | 字符串数组 | 是 | 检测类型,可选值包括: v-porn: 色情识别 v-terrorism: 暴恐识别 v-antispam: 敏感信息识别 v-sface: 敏感人物识别 v-illegal: 违法违规识别 v-ad: 广告识别 v-ocr: 图文违规识别 音频检测类型,可选值包括: a-porn: 娇喘识别 a-antispam:敏感词识别 a-asr: 音转文识别 |
data[] | JSON数组 | 是 | 指定检测对象信息列表,JSON数组中每个元素是一个检测任务结构体(见下方请求data表)。 单次调用最多同时处理5个视频。 |
callback | 字符串 | 否 | 结果回调路径,支持HTTP/HTTPS回调。 允许为空,当回调地址设置空时,用户可以通过查询接口获得检测结果(建议使用回调方式接收审核结果) |
sequence | 字符串 | 否 | 该值用于回调通知请求中的签名。当使用回调时该字段必须提供。详细使用方法见检测结果回调说明 |
表. 请求data
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
dataId | 字符串 | 是 | 数据唯一标识,如:uuid-xxxx-xxxx-xxxx-xxxx |
dataType | 字符串 | 是 | 数据类型,必须填写URL |
content | 字符串 | 是 | 待检测视频文件HTTP地址 |
extra | JSON | 否 | 识别的扩展参数,见下表 |
context | JSON | 否 | 用户自定义上下文数据,返回结果时自动带上 |
表. 扩展参数
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
lang | 字符串 | a-antispam 敏感词检测使用的语言,默认为中文,可选值: - chinese:中文 - bahasa:印尼语 | 无 |
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 请求错误码,详见 错误码 |
message | 字符串 | 是 | 错误信息描述 |
traceId | 字符串 | 是 | 对应请求参数中的traceId |
requestId | 字符串 | 是 | 系统针对本次请求生成的唯一请求标识,用于后续结果回调和状态查询 |
timestamp | 整型 | 是 | 当前unix时间戳,单位秒 |
检测完成后,系统使用HTTP POST方式访问用户提供的callback地址,将检测结果返回给用户。
为了防止内容被篡改,在http请求header增加一个checksum项用于校验内容是否合法。
checksum串的生成方式如下:
启动任务参数携带的sequence + body字符串数据,通过SHA256算法生成checksum值
检测结果保存在body中的JSON结构中,具体字段说明如下:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 请求错误码,详见 错误码 |
message | 字符串 | 是 | 错误信息描述 |
traceId | 字符串 | 是 | 透传请求参数中的traceId内容 |
requestId | 字符串 | 是 | 系统针对本次检查请求生成的唯一标识 |
timestamp | 整型 | 是 | 当前unix时间戳,单位秒 |
data[] | JSON数组 | 否 | 检测结果数据列表(具体结构见下方返回data表),数组中每一项表示一个数据的处理结果,在出错的情况下该字段可能为空。 |
表. 返回data
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 数据处理错误码,点击详细定义 |
message | 字符串 | 是 | 错误描述信息 |
dataId | 字符串 | 是 | 对应请求中的dataId |
taskId | 字符串 | 是 | 针对该检查对象多个检测类型生成的唯一任务标识 |
context | JSON | 否 | 对应请求中的context |
results[] | JSON数组 | 否 | 返回结果数据,调用成功时存在。 返回结果包含的元素与传入的actions相对应。 每个元素是一个结构体,代表对应action的处理结果 不同action的结果结构如下表 |
表. result
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 检测错误码,详见 错误码 |
message | 字符串 | 是 | 错误描述信息 |
action | 字符串 | 是 | 检测类型,对应请求actions参数 |
label | 字符串 | 是 | 检测结果标签,请参考上面检测类型及对应标签表 |
rate | 浮点数 | 是 | 检测结果标签的概率,取值范围在[0.00 - 1.00],值越大表示可信度越高 |
suggestion | 字符串 | 是 | 建议您执行的操作,取值范围: - pass: 正常,无需操作 - review: 疑似,检测结果不确定,需要进一步人工审核 - block: 违规,建议做违规处罚 |
duration | 浮点数 | 否 | 针对音频检测类型,返回检测音频长度 |
text | 字符串 | 否 | 音频片段的文本内容。当action为a-antispam或a-asr时才会存在该字段。 |
segment[] | JSON数组 | 否 | 疑似和违规视频帧或音频段识别结果列表。不同action对应不同结构的segment参数,详见下面各action segment定义 |
result->segment在不同action检测中的结果结构不尽相同,具体包含以下几种情况:
(1)当action为v-porn、v-terrorism、v-antispam、v-sface、v-illegal、v-ad、v-ocr时,result->segment的结构如下:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
label | 字符串 | 是 | 检测标签,检测到所有人脸标签中rate最大的标签 |
rate | 浮点数 | 是 | 检测结果标签的概率,取值范围在[0.00 - 1.00],值越大表示可信度越高 |
suggestion | 字符串 | 是 | 建议您执行的操作 |
url | 字符串 | 是 | 截图地址 |
timeOffset | 浮点数 | 是 | 截图距离视频开始的时间点 |
extraData[] | JSON数组 | 否 | action为v-porn或v-sface时才存在该字段。 为v-porn时,该数组保存识别到的二级label信息,元素结构见下面porn表 为v-sface时,该数组保存截图中识别到的所有人脸信息,元素结构见下面face表 |
表. face
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
label | 字符串 | 是 | 检测到的人脸标签 |
rate | 浮点数 | 是 | 检测结果标签的概率,取值范围在[0.00 - 1.00],值越大表示可信度越高 |
name | 字符串 | 是 | 检测到的敏感人物名字 |
x | 整型 | 是 | 检测到的人脸左上角在画面中的横坐标 |
y | 整型 | 是 | 检测到的人脸左上角在画面中的纵坐标 |
w | 整型 | 是 | 检测到的人脸宽度 |
h | 整型 | 是 | 检测到的人脸高度 |
表. porn
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
label | 字符串 | 是 | 检测到的二级标签 |
rate | 浮点数 | 是 | 检测结果标签的概率,取值范围在[0.00 - 1.00],值越大表示可信度越高 |
(2)当action为a-porn时,result->segment的结构如下
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
begin | 浮点数 | 否 | 音频片段开始时间,单位秒 |
end | 浮点数 | 否 | 音频片段结束时间,单位秒 |
score | 浮点数 | 否 | 声音娇喘匹配程度,取值[0~100],分数越高匹配程度越高 |
(3)当action为a-antispam时,result->segment的结构如下
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
begin | 浮点数 | 否 | 音频片段开始时间,单位秒 |
end | 浮点数 | 否 | 音频片段结束时间,单位秒 |
extraData[] | JSON数组 | 否 | 该音频分段的敏感词识别结果列表,元素结构见下面antispam-extraData表 |
表. antispam-extraData
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
hint | JSON数组 | 否 | 命中的关键字 |
label | 字符串 | 否 | 命中的关键字所属类型 |
rate | 浮点数 | 否 | 无意义,恒为"1.0" |
由于是异步处理,所以建议使用以上的异步回调方式接收处理结果,如有必要可以通过轮训同步接口的方式获取结果,具体说明如下:
事项 | 说明 |
---|---|
请求方法 | GET |
请求协议 | HTTPS |
请求域名 | ai.jocloud.com |
请求路径 | app/{appid}/v1/video/async/results?traceId=uuid-xxxx-xxxx-xxxx-xxxx&requestId=yyyy |
请求参数 | traceId为uuid字符串,用于排查问题时对账,建议每次请求使用不同值 requestId为需要查询的请求id,即在提交检测任务返回结果中携带的requestId |
请求头部 | Content-Type: application/json;charset=UTF-8 token: 鉴权token,生成方式参考 认证鉴权 |
body中的数据是JSON,具体字段说明如下:
名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
code | 整型 | 是 | 请求错误码,详见 错误码 |
message | 字符串 | 是 | 错误信息描述 |
traceId | 字符串 | 是 | 透传请求参数中的traceId内容 |
requestId | 字符串 | 是 | 本次查询对应的requestId,与请求参数一致 |
status | 字符串 | 是 | 任务状态 (received-待处理, processing-处理中,completed-已完成) |
timestamp | 整型 | 是 | 当前unix时间戳,单位秒 |
data[] | 数组 | 否 | 返回结果数据。调用成功时(code==200),元素定义见上面表返回data |
以下是一个python的调用示例代码:
# -*- coding: utf-8 -*-
#! python3.5
import requests
import uuid
import base64
host = "https://ai.jocloud.com"
appid = 123456789 # 您的业务ID
restful_id = '********************' # 您的证书ID
restful_secret = '********************' # 您的证书秘钥
traceid = str(uuid.uuid4())
dataid = str(uuid.uuid4())
# url
url = host + '/app/%s/v1/video/async/submit?traceId=%s' % (appid, traceid)
# headers
headers = {
"content-type": "application/json"
}
auth = base64.b64encode(("%s:%s" % (restful_id, restful_secret)).encode('utf-8'))
headers['token'] = 'Base ' + auth.decode()
# 需要识别的视频文件url地址
file_url = 'http://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/d67f1b655f0b49be87fdcc84f7f06029/7.ts'
# 业务放需要使用到的上下文信息,便于在回调消息中协助后续处理,例如:
context = {
'myid': 123,
'myname': 'test'
}
# 识别结果及状态的回调地址,识别结果及状态通知将会通过http POST回调
callback_addr = 'http://mydomain.com/callback'
# content
values = {
'actions': ['v-sface', 'v-porn'],
'data': [
{
'dataId': dataid,
'dataType': 'URL',
'content': file_url,
'extra': {},
'context': context
}
],
'callback': callback_addr,
'sequence': 'test'
}
# request
res = requests.post(url, json=values, headers=headers)
print ('url=%s\nbody=%s\ncode=%s\ndata=%s\n' % (url, values, res.status_code, res.text))
版本 | 时间 | 说明 |
---|---|---|
v2.2.3 | 2020-10-15 | 图文违规识别增加标签 |
V2.2.2 | 2020-10-14 | 增加a-asr功能支持 |
v2.2.1 | 2020-10-13 | 违法违规识别增加inbed标签 |
v2.2.0 | 2020-08-31 | 增加广告识别、图文违规识别类型; 更新暴恐识别和敏感信息识别的label |
v2.1.0 | 2020-08-24 | 增加违法违规识别类型 |
v2.0.0 | 2020-08-17 | 色情识别类型增加二级标签 |
v1.1.0 | 2020-06-30 | 移除启动请求参数extra中的interval和maxframes,改为智能截帧审核 |
v1.0.0 | 2020-03-13 | 初始版本 |