视频审核接口
提交视频审核
用户提供视频路径,创建一次视频审核。
- 视频路径支持BOS、VOD、URL路径;
- 正在审核中的视频无法再次进行审核;
- 已经审核过的视频(FINISHED/ERROR)可以重新进行审核;
- 视频重新审核会覆盖上次审核结果。
输入限制
- 文件格式:3gpp,asf/wmv,avi,flv/f4v,mkv,mov/mp4/m4a,mp3,mp2,mpeg/mpg,ts/ogg,mts,wmv/wma,rm/rmvb,webm等
- 视频编码标准:H.264,H.263/H.263+,MPEG-1/2/4,VP8/9,Quicktime,RealVideo,WMV,MJPEG等
- 音频编码标准:MP1,MP2,MP3,AAC,AC-3,WMA,PCM,ADPCM,AMR,RealAudio,Vorbis,DSD等
请求语法
PUT /v<version>/media HTTP/1.1
host: vcr.bj.baidubce.com
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
content-type: application/json
请求参数
无
请求体
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
source | String | 视频路径 | 是 |
auth | String | 视频路径鉴权参数,仅URL视频使用 | 否 |
description | String | 视频描述,默认空字符串,不超过256字符 | 否 |
preset | String | 审核模板名称,不填写使用默认模版 | 否 |
notification | String | 通知名称,可填写通知服务中配置的通知名称,配置后会把审核结果回调至该通知名称所对应的回调地址 | 否 |
说明:
- 对于 BOS 视频,
source="bos://<bos-bucket>/<bos-object>”
, 例如"bos://testbucket/dir/video.mp4",由客户保证 BOS 路径可访问。- 对于 VOD 媒资原视频,
source="vod://<vod-media-id>”
,例如"vod://mda-fhepatsnpn4rk9z",VCR 会内部请求VOD获取原视频地址,需要确保媒资在VOD状态为PUBLISHED。- 对于 VOD 媒资转码后视频,
source="vod://<vod-media-id>-<preset>"
, 例如"vod://mda-fhepatsnpn4rk9z-mp4",VCR 会内部请求VOD获取转码后视频地址,需要确保媒资在VOD状态为PUBLISHED,且模板存在。注意这里VOD媒资ID和模板名称的分隔符为"-"。VCR 会自动区分同一个媒资的原视频和转码后视频,几个视频可以同时发起审核,互不影响。- 对于 URL 视频,
source="<http(s)-url">
,例如”http://video.domain.com/dir/video.mp4”
;URL source中可以包含参数,例如”http://vod.domain.com/dir/video?id=0308”
,VCR 会主动拉取source对应的原视频进行审核,由客户保证视频可访问。- 对于包含鉴权参数的 URL 视频,可以将鉴权参数(大多是临时参数,且在指定时间内有效)设置到auth中,
auth="<key1>=<value1>&<key2>=<value2>"
,注意这里(和HTTP协议一致)使用&
分隔多个参数,例如"token=abcxyz×tamp=1514993900"。VCR 会使用?
或&
将source和auth拼接,得到完整的原视频URL后拉取进行审核,由客户保证实际拉取的URL可访问。区分source
和auth
的好处是,客户在查询视频审核结果或处理回调时,仅需传入或解析source
而可忽略鉴权参数auth
。
请求示例
示例一:审核 BOS 视频
PUT /v1/media HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
{
"source": "bos://testbucket/dir/video.mp4",
"preset": "ad_preset",
"notification": "vcr_callback"
}
示例二:审核 VOD 媒资原视频
PUT /v1/media HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
{
"source": "vod://mda-fhepatsnpn4rk9z",
"notification": "vcr_callback"
}
示例三:审核 VOD 转码后视频
PUT /v1/media HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
{
"source": "vod://mda-fhepatsnpn4rk9z-mp4"
}
示例四:审核 URL 视频
PUT /v1/media HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
{
"source": "http://test.domain.com/dir/video.mp4"
}
示例五:审核包含鉴权参数的 URL 视频
PUT /v1/media HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
{
"source": "http://test.domain.com/dir/video.mp4",
"auth": "token=abcxyz×tamp=1514993900"
}
响应体
无
响应示例
HTTP/1.1 200 OK
查询视频审核结果
根据视频路径查询审核结果。
请求语法
查询视频审核结果:
GET /v<version>/media HTTP/1.1
host: vcr.bj.baidubce.com
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
content-type: application/json
请求参数
参数 | 类型 | 描述 | 是否必须 |
---|---|---|---|
source | String | 视频路径,需要对source进行urlEncode。 | 是 |
请求体
无
请求示例
示例一:查询 BOS 视频审核结果
GET /v1/media?source=bos%3a%2f%2ftestbucket%2fdir%2fvideo.mp4 HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
示例二:查询 VOD 媒资原视频审核结果
GET /v1/media?source=vod%3a%2f%2fmda-fhepatsnpn4rk9z HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
示例三:查询 VOD 转码后视频审核结果
GET /v1/media?source=vod%3a%2f%2fmda-fhepatsnpn4rk9z-mp4 HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
示例四:查询 URL 视频审核结果
GET /v1/media?source=http%3a%2f%2ftest.domain.com%2fdir%2fvideo.mp4 HTTP/1.1
host: vcr.bj.baidubce.com
content-type: application/json
authorization: <bce-authorization-string>
x-bce-date: <bce-authorization-utc-date>
如前所述,对于 URL 视频,如果在提交审核时指定了auth
参数,在查询审核结果时是不需要指定的。
响应头域
无
响应参数
参数 | 类型 | 描述 |
---|---|---|
source | String | 视频路径 |
mediaId | String | VOD媒资id,source为VOD路径时存在 |
description | String | 视频描述 |
preset | String | 审核模板名称 |
status | String | 审核状态 |
percent | Number | 审核进度,0 ~ 100整数;仅status=PROCESSING时存在 |
notification | String | 通知名称 |
createTime | Date | 审核创建时间 |
finishTime | Date | 审核结束时间,仅当status=FINISHED/ERROR时存在 |
label | String | 审核结果标记,仅当status=FINISHED时存在 |
results | Array | 审核结果,仅当status=FINISHED且视频中有疑似涉黄/暴恐/涉政/广告/违禁成分时存在 |
+ type | String | 审核类型 |
+ items | Array | 审核结果项数组 |
++ subType | String | 审核项 |
++ target | String | 审核物料类型,可选值:thumbnail, audio, speech, character |
++ timeInSeconds | Number | 物料在视频中的秒数 |
++ confidence | Double | 该审核结果项的置信度,0~100的浮点数 |
++ label | String | 审核结果项标记 |
++ extra | String | 额外信息,如有;例如政治敏感人物识别出来的人名 |
++ evidence | Object | 审核证据 |
+++ thumbnail | String | 缩略图URL |
+++ location | Object | 证据位置信息 |
++++ leftOffsetInPixel | Number | 左偏移 |
++++ topOffsetInPixel | Number | 上偏移 |
++++ widthInPixel | Number | 宽度 |
++++ heightInPixel | Number | 高度 |
+++ text | String | 文本证据 |
error | Object | 审核失败信息,仅当status=ERROR时存在 |
+ code | String | 错误码 |
+ message | String | 错误信息 |
响应示例
HTTP/1.1 200 OK
{
"source": "vod://mda-fhepatsnpn4rk9z",
"status": "FINISHED",
"createTime": "2017-03-22T12:00:00Z",
"finishTime": "2017-03-22T12:06:48",
"label": "REVIEW",
"results": [{
"type": "sexual_porn",
"items": [{
"subType": "behavior",
"target": "audio",
"startTimeInSeconds": 0,
"confidence": 68,
"label": "REVIEW"
}]
},
{
"type": "ad_brand",
"items": [
{
"confidence": 99.66,
"evidence": {
"location": {
"heightInPixel": 15,
"leftOffsetInPixel": 386,
"topOffsetInPixel": 111,
"widthInPixel": 35
},
"thumbnail": "http://path.to.thumbnail.jpg"
},
"extra": "美孚",
"label": "REJECT",
"subType": "brand",
"target": "thumbnail",
"timeInSeconds": 845
},
{
"confidence": 90.06,
"evidence": {
"location": {
"heightInPixel": 24,
"leftOffsetInPixel": 451,
"topOffsetInPixel": 132,
"widthInPixel": 103
},
"thumbnail": "http://path.to.thumbnail.jpg"
},
"extra": "诺优能",
"label": "REVIEW",
"subType": "brand",
"target": "thumbnail",
"timeInSeconds": 219
}]
},
{
"type": "political_group",
"items": [
{
"confidence": 99.8,
"endTimeInSeconds": 4226,
"evidence": {
"text": "昆明市工商局的"
},
"extra": "工商局",
"label": "REJECT",
"startTimeInSeconds": 4225,
"subType": "political_group_positive",
"target": "speech"
}]
}]
}
审核结果说明
视频审核状态和进度
审核状态 | 状态名称 | 描述 |
---|---|---|
PROVISIONING | 排队中 | 视频审核排队中 |
PROCESSING | 审核中 | 视频审核进行中 |
FINISHED | 审核完成 | 审核结束,可以查询审核结果 |
ERROR | 审核失败 | 审核失败,可以查询失败错误原因 |
- 每一次提交审核后,VCR会根据其使用的审核模板在内部根据不同审核类型进行多项”子审核”。
- 若任一子审核失败,本次审核就会失败。
- 当每项子审核完成时,VCR 都会更新本次审核的审核进度。
审核结果
每个视频的审核结果格式为:
参数 | 类型 | 描述 |
---|---|---|
label | String | 审核结果标记,可选值:NORMAL/REVIEW/REJECT |
results | Array | 审核结果 |
+ type | String | 审核类型 |
+ items | Array | 审核结果项数组 |
审核标记
审核结果标记label
,简称审核标记
,其可选值包括NORMAL/REVIEW/REJECT
,分别表示正常/疑似违规/确认违规。
审核标记是根据 VCR 审核结果的置信度和用户审核视频时指定的审核模板中疑似置信度阈值和确认置信度阈值生成的。
举个例子,VCR在对视频进行图像审核时,判断某一帧为涉黄场景下的色情类图片的置信度为C
,用户使用的审核模板中配置的疑似置信度阈值和确认置信度阈值分别为T_Review
和T_Reject
:
C < T_Review
,VCR忽视该帧图片的涉黄-色情审核结果;T_Review <= C < T_Reject
,VCR输出一个label=REVIEW
的审核结果项;T_Reject <= C
,VCR会输出一个label=REJECT
的审核结果项。
视频的审核结果标记由各审核结果项(见下)汇总得到,汇总规则:
- 审核结果数组为空,即没有审核结果项时视频
label = NORMAL
; - 任一审核结果项
label = REJECT
时,视频label = REJECT
; - 其余情况下(所有审核结果项
label = REVIEW
)视频label = REVIEW
审核物料
VCR 会对视频中提取的不同审核物料进行审核。VCR 审核物料分为以下四种:
- thumbnail,图像物料,即以一定策略从视频截取的缩略图;
- audio,声音物料,即视频音频;
- speech,语音物料,即视频音频通过ASR技术获取的语音识别结果;
- character,文字物料,即视频缩略图通过OCR技术获取的文字识别结果。
审核类型
审核结果中的type
表示”审核类型”。每类审核场景下包含着多种审核类型,不同审核类型支持的审核物料也不一样。随着智能内容审核服务的迭代升级,会不断扩展审核场景和审核类型。
审核类型列表
审核场景 | 审核类型 | 描述 | 支持的审核物料类型 |
---|---|---|---|
涉黄审核 | sexual_porn | 色情审核 | thumbnail,audio,character,speech |
涉黄审核 | sexual_sexy | 性感审核 | thumbnail |
涉黄审核 | sexual_intimacy | 亲密行为审核 | thumbnail |
涉黄审核 | sexual_vulgar | 低俗行为 | thumbnail |
涉黄审核 | sexual_special | 特殊行为 | thumbnail |
暴恐审核 | terrorist_group | 暴恐组织审核 | thumbnail,speech,character |
暴恐审核 | terrorist | 暴恐人物审核 | thumbnail,speech,character |
暴恐审核 | terror_event | 暴力事件审核 | thumbnail,speech,character |
涉政审核 | politician | 涉政人物审核 | thumbnail,character,speech |
涉政审核 | political_event | 涉政事件审核 | character,speech |
涉政审核 | political_group | 涉政组织审核 | thumbnail,character,speech |
广告审核 | ad_brand | 品牌广告审核 | thumbnail,character,speech |
广告审核 | ad_marketing | 欺诈及营销广告审核 | thumbnail,character,speech |
广告审核 | ad_brand_negative | 品牌负面评论审核 | character,speech |
违禁审核 | bad_behavior | 不良行为审核 | thumbnail |
违禁审核 | illegal_gamble | 赌博审核 | character,speech |
违禁审核 | illegal_forgery | 假冒伪劣及造假盗窃审核 | character,speech |
违禁审核 | illegal_trade | 非法交易审核 | character,speech |
违禁审核 | illegal_privacy | 非法获取私人信息审核 | character,speech |
质量审核 | disgust | 恶心 | thumbnail |
审核结果项
在审核结果中,每个审核类型都对应一个items
,表示该子审核的结果。数组中的元素称为审核结果项
,其具体格式为:
参数 | 类型 | 描述 |
---|---|---|
subType | String | 审核项 |
target | String | 审核物料类型,可选值:thumbnail, audio, speech, character |
timeInSeconds | Number | 物料在视频中的秒数,thumbnail/character审核物料有该属性 |
startTimeInSeconds | Number | 物料在视频中的起始秒数,和endTimeInSeconds同时存在,audio/speech审核物料有该属性 |
endTimeInSeconds | Number | 物料在视频中的结束秒数,和startTimeInSeconds同时存在 |
confidence | Double | 审核结果项的置信度,0~100的浮点数 |
label | String | 审核结果项标记 |
extra | String | 额外信息,如有;例如涉政人物审核出来的人名 |
evidence | Object | 审核证据 |
审核项
审核结果中的subType
表示”审核项”。每种审核类型下细分了不同审核项。
审核项列表
审核场景 | 审核类型 | 审核项 | 审核项描述 |
---|---|---|---|
涉黄审核 | sexual_porn | behavior,sm,products,children,art | 性行为及露点及招嫖,SM,性用品及性玩具,儿童,艺术品色情 |
涉黄审核 | sexual_sexy | male,female | 男性衣着暴露,女性衣着暴露 |
涉黄审核 | sexual_intimacy | intimacy | 亲密行为 |
涉黄审核 | sexual_vulgar | vulgar | 低俗行为 |
涉黄审核 | sexual_special | pregnant | 孕肚裸露 |
暴恐审核 | terrorist_group | terrorist_group | 恐怖组织 |
暴恐审核 | terrorist | terrorist | 暴恐人物 |
暴恐审核 | terror_event | blood,corpse,murder,explosion,riot,weapon,police,traffic | 血腥,尸体,绑架及杀人,爆炸火灾,暴乱,军事武器,警察部队,车祸 |
涉政审核 | politician | politician_positive, politician_negative,bad_artist | 涉政正面人物,涉政负面人物,劣迹艺人 |
涉政审核 | political_event | political_event_positive,political_event_negative | 涉政正面事件,涉政负面事件 |
涉政审核 | political_group | political_group_positive,political_group_negative | 涉政正面组织,涉政负面组织 |
广告审核 | ad_brand | brand | 品牌标识 |
广告审核 | ad_marketing | qrcode,contact,website,commercial,watermark | 二维码,联系方式,网址,软文推广,水印 |
广告审核 | ad_brand_negative | brand_negative_comment | 品牌负面评论 |
违禁审核 | bad_behavior | smoke,drink,bad_behavior_gamble,drug | 吸烟,喝酒,赌博,毒品 |
违禁审核 | illegal_gamble | gamble | 赌博 |
违禁审核 | illegal_forgery | forgery | 假冒伪劣及造假盗窃 |
违禁审核 | illegal_trade | trade | 非法交易 |
违禁审核 | illegal_privacy | privacy | 非法获取私人信息 |
质量审核 | disgust | disgust_image | 恶心图 |
官方文本黑库 | official_text_black_lib | baidu_illegal_textlib | 违禁词库 |
官方图片黑库 | image_black_lib | default_image_black_lib | 百度云风控 |
审核证据
根据不同的审核物料类型,审核证据也不相同。审核证据的格式为:
参数 | 类型 | 描述 |
---|---|---|
thumbnail | String | 缩略图URL |
location | Object | 证据位置信息 |
+ leftOffsetInPixel | Number | 左偏移 |
+ topOffsetInPixel | Number | 上偏移 |
+ widthInPixel | Number | 宽度 |
+ heightInPixel | Number | 高度 |
text | String | 文本证据 |
具体地说:
target=thumbnail
,审核证据=thumbnail +(可选)locationtarget=audio
,暂无审核证据target=speech
,审核证据=texttarget=character
,审核证据=thumbnail + location + text
审核错误码列表
视频审核失败时,查询视频审核结果会返回审核失败错误信息。目前VCR支持如下错误码:
错误码 | 错误信息 | 备注 |
---|---|---|
InvalidMedia | fetch media failure | URL视频拉取失败,请检查原视频 |
InvalidMedia | media duration/resolution exceeds limit | 视频时长/分辨率/元信息不满足VCR系统限制,详细可查看视频审核要求。 |
InvalidMedia | invalid media: invalid audio or video | 视频元信息中音频或视频信息不合预期,请检查原视频 |
InvalidMedia | invalid media: media duration/resolution exceeds limit | 视频时长或分辨率不满足系统限制,请检查原视频 |
InvalidMedia | convert to mp4 error | 原视频转码为mp4失败,请检查原视频 |
InvalidMedia | extract thumbnails error | 抽取视频缩略图失败,请检查原视频 |
InvalidMedia | extract pcm error | 抽取视频音频失败,请检查原视频 |
InternalError | get media info failure | 获取视频元信息异常,建议重试 |
InternalError | create extract jobs error, please retry | 系统内部错误,建议重试 |
InternalError | convert to mp4 error | 原视频转码为mp4内部错误,请先检查原视频,如视频正常则可以重试 |
InternalError | extract thumbnails error | 抽取视频缩略图内部错误,请先检查原视频,如视频正常则可以重试 |
InternalError | extract pcm error | 抽取视频音频内部错误,请先检查原视频,如视频正常则可以重试 |
InternalError | extract speech(asr) error, please retry | 视频语音识别失败 |
InternalError | extract characters(ocr) error, please retry | 视频文字识别失败 |
InternalError | create check jobs error, please retry | 系统内部错误,建议重试 |
InternalError | porn check error, please retry | 视频涉黄审核失败 |
InternalError | politics check error, please retry | 视频涉政审核失败 |
InternalError | ad check error, please retry | 视频广告审核失败 |
InternalError | terrorism check error, please retry | 视频暴恐审核失败 |
InternalError | speech text check error, please retry | 对视频语音识别结果审核失败,建议重试 |
InternalError | character check error, please retry | 对视频文字识别结果审核失败,建议重试 |
InternalError | service internal error, please retry | 系统内部错误,建议重试 |
TimeOut | time out, please retry | 视频审核超时,请先检查原视频,如视频正常则可以重试 |
审核结果示例
审核结果:
{
"label" : "REJECT",
"results" : [{
"type": "sexual_porn",
"items": [{
"subType": "products",
"target": "thumbnail",
"timeInSeconds": 103,
"confidence": 98.76,
"label": "REJECT",
"evidence": {
"thumbnail": "http://xxx/xxx.jpg"
}
}, {
"subType": "behavior",
"target": "audio",
"confidence": 70,
"startTimeInSeconds": 0,
"label": "REVIEW"
}, {
"subType": "behavior",
"target": "character",
"confidence": 69,
"timeInSeconds": 2,
"label": "REVIEW",
"evidence": {
"thumbnail": "http://xxx/xxx.jpg",
"location": {
"leftOffsetInPixel": 10,
"topOffsetInPixel": 10,
"widthInPixel": 20,
"heightInPixel": 20
},
"text": "这是一段文字识别的涉黄文字"
}
}, {
"subType": "behavior",
"target": "speech",
"confidence": 68,
"startTimeInSeconds": 0,
"endTimeInSeconds": 20,
"label": "REVIEW",
"evidence": {
"text": "这是一段语音识别的涉黄文字"
}
}],
}, {
"type": "sexual_sexy",
"items": [{
"subType": "female",
"target": "thumbnail",
"timeInSeconds": 35,
"confidence", 68.4,
"label": "REVIEW",
"evidence": {
"thumbnail": "http://xxx/xxx.jpg"
}
}]
}, {
"type": "terror_event",
"items": [{
"subType": "explosion",
"target": "character",
"timeInSeconds": 12,
"confidence": 50,
"label": "REVIEW",
"extra": "炸弹",
"evidence": {
"thumbnail": "http://xxx/xxx.jpg",
"location": {
"leftOffsetInPixel": 10,
"topOffsetInPixel": 10,
"widthInPixel": 20,
"heightInPixel": 20
},
"text": "炸弹是文字识别的暴恐文字"
}
}]
}, {
"type": "politician",
"items": [{
"subType": "politician_positive",
"target": "thumbnail",
"timeInSeconds": 144,
"confidence": 95,
"label": "REJECT",
"extra": "习大大",
"evidence": {
"thumbnail": "http://xxx/xxx.jpg",
"location": {
"leftOffsetInPixel": 10,
"topOffsetInPixel": 10,
"widthInPixel": 20,
"heightInPixel": 20
}
},
}]
}, {
"type": "political_group",
"items": [{
"subType": "political_group_positive",
"target": "speech",
"startTimeInSeconds": 2
"endTimeInSeconds": 10
"confidence": 90,
"label": "REJECT",
"extra": "天安门",
"evidence": {
"text": "天安门是语音识别的涉政文字"
}
}]
}]
}