本文提供了调用视频异步检测任务进行视频审核的具体接口和参数说明,帮助您编写程序构建HTTP调用请求。

  • 关于如何构造HTTP请求,请参见请求结构
  • 您也可以直接选用已构造好的HTTP请求,具体请参见SDK 概览

提交视频异步检测任务

业务接口:/green/video/asyncscan

异步检测视频文件或视频流中是否包含违规内容。支持检测的场景包括:视频智能鉴黄、视频暴恐涉政识别、视频图文违规识别、视频不良场景识别、视频logo识别、视频语音违规内容识别。

说明 该接口为收费接口,具体计费方式请参见内容安全产品定价

同时检测多个场景的情况下,将按照“每个场景的检测视频截帧数量×每个场景的单价”进行累加计费。如果您同时检测视频中的语音违规内容,则还将增加“视频时长×语音违规功能的单价”的费用。

异步检测结果需要通过调用结果查询接口进行查询(具体请参见查询视频异步检测结果)或者通过callback的方式进行接收,检测结果最多保留4个小时。具体的检测接口调用逻辑如下图所示。

异步检测流程

scene与label参数

在提交检测任务时,您需要指定scenes场景参数;而在检测返回结果中,则包含您指定的场景对应的label结果分类参数。在视频审核中,scene与label的对应关系如下。
场景 描述 scenes label
视频智能鉴黄 识别短视频是否为色情视频。 porn
  • normal:正常视频
  • porn:色情视频
视频暴恐涉政识别 识别短视频是否为暴恐涉政视频。 terrorism
  • normal:正常视频
  • terrorism:暴恐涉政视频
视频不良场景识别 识别短视频中的不良场景。 live
  • normal:正常视频
  • live:包含不良场景的视频
视频logo识别 识别短视频中的特定logo。 logo
  • normal:正常视频
  • logo:带有logo的视频
视频图文违规识别 识别视频画面中包含的广告或者文字违规内容。 ad
  • normal:正常视频
  • ad:包含广告的视频

audioScenes与label参数

在提交检测任务时且通过视频URL方式传入视频时,可以同时对视频中的语音内容进行违规检测。您需要指定audioScenes语音检测场景参数;而在检测返回结果中,则包含您指定的场景对应的label结果分类参数。在视频语音检测中,audioScenes与label的对应关系如下。
场景 描述 scenes label
视频中语音内容反垃圾 识别视频中的语音内容是否包含违规信息。
说明 默认识别语言为中文。如果您需要识别英文内容,请提交工单联系阿里云技术支持人员。
antispam
  • normal:正常文本
  • spam:含垃圾信息
  • ad:广告
  • politics:涉政
  • terrorism:暴恐
  • abuse:辱骂
  • porn:色情
  • flood:灌水
  • contraband:违禁
  • customized:自定义(比如命中自定义关键词)
待检测视频需要满足以下要求:
  • 视频文件链接支持以下协议:HTTP和HTTPS。
  • 视频文件支持以下格式:AVI、FLV、MP4、MPG、ASF、WMV、MOV、WMA、RMVB、RM、FLASH、TS。
  • 视频大小限制:单个视频大小不超过200MB。如果您有特殊需求(大视频),可以提工单进行调整。
  • 视频流支持以下协议:RTMP、HLS、HTTP-FLV、RTSP。
  • 视频流时长限制:单个视频流检测任务最长支持24小时,超过24小时任务自动结束。
  • 视频检测的时间依赖于视频的下载时间。请保证被检测的视频文件所在的存储服务稳定可靠,建议您使用阿里云OSS存储服务存储视频文件。

请求参数

名称 类型 是否必须 描述
bizType 字符串 该字段用于标识业务场景。针对不同的业务场景,您可以配置不同的内容审核策略,以满足不同场景下不同的审核标准或算法策略的需求。您可以通过云盾内容安全控制台创建业务场景(bizType),或者通过工单联系我们帮助您创建业务场景。
live 布尔型 是否直播。默认为false,表示为普通视频检测;若为直播检测,该值必须传入true
offline 布尔型 是否近线检测模式。
  • 默认为false,表示实时检测模式,对于超过了并发路数限制的检测请求会直接拒绝。
  • 如果为true,会进入近线检测模式,提交的任务不保证实时处理,但是可以排队处理,在24小时内开始检测。
说明 该参数仅作用于视频文件检测,不支持流式检测。
scenes 字符串数组 指定视频检测的应用场景,可选值包括:
  • porn:视频智能鉴黄
  • terrorism:视频暴恐涉政识别
  • ad:视频图文违规识别
  • live:视频不良场景识别
  • logo:视频logo识别
audioScenes 字符串数组 选择一个或多个语音检测场景,在检测视频中图像的同时,对视频中语音进行检测。可选值:antispam(语音反垃圾)。
说明 语音检测仅支持通过URL(task中传入url)传入待检测视频。使用截帧方式(task中传入frames)传入视频不支持语音检测。
callback 字符串 异步检测结果回调通知您的URL,支持HTTP、HTTPS。当该字段为空时,您必须定时检索检测结果。
seed 字符串 该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
tasks JSON数组 JSON数组中的每个元素是一个结构体(Video表)。每个元素的具体结构描述请参见task
表 1. task
名称 类型 是否必须 描述
clientInfo JSON结构体 客户端信息,请参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId 字符串 数据ID。需要保证在一次请求中所有的ID不重复。
url 字符串 视频地址,不能和frames同时为空,也不能和frames同时有值。
说明 传入本字段时按照传URL方式计费。
frames JSON数组 截帧信息。frames中的每个元素是个结构体(Frame表),每个元素的具体结构描述请参见frame
说明 传入本字段时按照传图片序列的方式计费。
framePrefix 字符串 frames存在时,截帧的完整URL为:framePrefix + frame.url
interval 整型 视频截帧间隔,单位为秒,取值范围为1~60。默认值为1秒。
maxFrames 整型 系统对本次检测的视频进行截帧的张数上限,取值范围为5~3600,默认为200张。如需调整到更大,请通过工单联系我们。
说明
  • 该参数仅在视频文件检测中生效(live=false)。如果是视频流检测(live=true),则该参数无效,视频流检测没有截帧数量上限。
  • 当使用OSS地址(以oss://开头)作为视频源地址,并且授权内容安全服务访问阿里云MTS服务后,最大可截取20,000张,该方式不会产生额外费用。关于授权内容安全访问阿里云MTS服务的方法,请参见授权访问MTS服务
表 2. frame
名称 类型 是否必须 描述
url 字符串 截帧地址。当framePrefix存在时,完整的截帧地址为:framePrefix + url
offset 整型 该截帧距离片头的时间戳,单位为秒。

结果回调通知

调用异步检测时,您可以在请求参数中传入回调通知参数(callback),即一个HTTP、HTTPS协议接口的URL,用来接收检测结果。callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照下表描述的生成规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
名称 类型 描述
checksum 字符串 用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
说明 用户UID必须是阿里云主账号UID,而非子账号UID。
content 字符串 JSON字符串格式,请自行解析反转成JSON对象。content结果的示例如下。
content结果示例
{
    "code": 200,
    "msg": "OK",
    "dataId": "videoId xxx",
    "taskId": "taskId xxx",
    "results": [
        {
            "label": "porn",
            "rate": 99.2,
            "scene": "porn",
            "suggestion": "block"
        }
    ]
}

返回参数

名称 类型 是否必须 描述
taskId 字符串 该检测任务的ID。
dataId 字符串 检测对象对应的数据ID。
说明 如果在请求参数中传入了dataId,则此处返回对应的dataId

示例

请求示例
  • 视频截帧图片序列检测
    {
        "scenes": [
            "porn"
        ],
        "tasks": [
            {
                "dataId": "videoId xxx",
                "frames": [
                    {
                        "offset": 10,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460000"
                    },
                    {
                        "offset": 20,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460001"
                    },
                    {
                        "offset": 30,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460002"
                    },
                    {
                        "offset": 40,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460003"
                    },
                    {
                        "offset": 50,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460003"
                    },
                    {
                        "offset": 60,
                        "url": "http://g1.ykimg.com/0B860000586C0A0300038A046000x"
                    }
                ]
            }
        ]
    }
  • 普通视频文件检测
    {
         "scenes": [
            "porn"
        ],
         "audioScenes": [
            "antispam"
        ],
         "tasks": [
              {
                   "dataId": "videoId xxx",
                   "url": "http://www.foo.bak/a.mp4",
                   "interval": 1,
                   "maxFrames": 200
            }
        ]
    }
  • 视频直播流检测
    {
        "scenes": [
            "porn"
        ],
        "live": true,
        "tasks": [
            {
                "dataId": "videoId xxx",
                "url": "http://www.foo.bak/a.flv",
                "interval": 1,
                "maxFrames": 200
            }
        ]
    }
返回示例
{
    "code": 200,
    "msg": "OK",
    "requestId": "requestID xxx",
    "data": [
        {
            "dataId": "videoId xxx",
            "taskId": "taskId xxx"
        }
    ]
}

查询视频异步检测结果

业务接口:/green/video/results

查询异步检测的结果。建议您将查询间隔设置为30秒,最长不能超过4个小时,否则结果将会消失。

说明 该接口为免费接口。

请求参数

名称 类型 是否必须 描述
body JSON数组 要查询的taskId列表。最大长度不超过100。

返回参数

名称 类型 是否必须 描述
code 整型 错误码,和HTTP的status code一致。
msg 字符串 错误描述信息。
dataId 字符串 检测对象对应的数据ID。
说明 如果在请求参数中传入了dataId,则此处返回对应的dataId
taskId 字符串 该检测任务的ID。
results 数组 返回结果,调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体,具体结构描述请参见result
说明 拉流检测场景中,code返回280表示在检测中,返回200表示检测完成。在检测中状态时,检测结果中包含从开始检测到当前时间检测到的问题。
audioScanResults 结构体 视频语音检测结果。具体结构描述请参见audioScanResult
表 3. result
名称 类型 是否必须 描述
scene 字符串 视频检测场景,和调用请求中的场景对应。
label 字符串 检测结果的分类,与具体的scene对应。取值请参见scene 和 label说明
suggestion 字符串 建议您执行的操作,取值范围:
  • pass:视频正常,无需进行其余操作,或者未识别出目标对象
  • review:检测结果不确定,需要进行人工审核,或识别出目标对象
  • block:视频违规,建议执行进一步操作(直接删除或做限制处理)
rate 浮点数 结果为该分类的概率,取值范围为0.00~100.00。值越高,表示越有可能属于该分类。
frames JSON数组 判断为该分类的一些截帧检测结果(FrameScanResult),截帧检测结果表的具体结构描述请参见frame
extras JSON对象 额外附加信息。

图文违规识别场景(scenes包含ad)中,extras可能返回以下内容。

hitLibInfo:若检测结果命中了自定义文本库,则返回命中的文本库信息。格式为数组,具体结构描述请参见hitLibInfo

示例值:
"hitLibInfo":[{"context":"好看视频","libCode":"2144002","libName":"预发测试广告相似文本库a"}]
extras.newUrl 字符串 开启视频证据转存后,返回转存的视频文件的OSS URL链接。更多信息,请参见证据转存
hintWordsInfo 数组 视频中含有广告时,返回视频中广告文字命中的风险关键词信息。格式为数组,具体结构描述请参见hintWordsInfo
说明 仅适用于ad场景。
示例值:
"hintWordsInfo":[{"context":"敏感词"}]
logoData 数组 图片中含有logo时,返回识别出来的logo信息,具体结构描述请参见logoData
说明 仅适用于logo场景。
sfaceData 数组 视频中包含暴恐识涉政内容时,返回识别出来的暴恐涉政信息,具体结构描述请参见sfaceData
说明 仅适用于terrorism和sface场景(scene)。关于该参数在sface场景下的具体内容,请参见视频敏感人脸识别
表 4. frame
名称 类型 是否必须 描述
url 字符串 截帧地址。
说明 若开启了视频证据转存,则返回转存的视频截帧的OSS URL链接。更多信息,请参见证据转存
offset 整型 该截帧距离片头的时间戳,单位为秒。
label 字符串 该视频截帧的风险分类,取值范围请参见视频截帧中的label说明
rate 浮点数 该视频截帧结果为label所述分类的概率,取值范围为0.00~100.00。值越高,表示越有可能属于该分类。
表 5. 视频截帧中的label说明
场景 描述 label
视频智能鉴黄 视频检测场景为porn的情况下,视频截帧对应的label取值。
  • normal:正常图片,无色情内容
  • sexy:性感图片
  • porn:色情图片
视频暴恐涉政识别 视频检测场景为terrorism的情况下,视频截帧对应的label取值。
  • normal:正常图片
  • bloody:血腥
  • explosion:爆炸烟光
  • outfit:特殊装束
  • logo:特殊标识
  • weapon:武器
  • politics:涉政
  • violence : 打斗
  • crowd:聚众
  • parade:游行
  • carcrash:车祸现场
  • flag:旗帜
  • location:地标
  • others:其他
视频违规识别 视频检测场景为ad的情况下,视频截帧对应的label取值。
  • normal:正常图片
  • politics:文字含涉政内容
  • porn:文字含涉黄内容
  • abuse:文字含辱骂内容
  • terrorism:文字含暴恐内容
  • contraband:文字含违禁内容
  • spam:文字含其他垃圾内容
  • npx:牛皮藓广告
  • qrcode:包含二维码
  • programCode:包含小程序码
  • ad:其他广告
说明 默认只会返回normal或者ad,如需其他label,请通过工单联系我们进行配置。
视频不良场景识别 视频检测场景为live的情况下,视频截帧对应的label取值。
  • normal:正常图片
  • meaningless:无意义图片
  • PIP:画中画
  • smoking:吸烟
  • drivelive:车内直播
视频logo识别 视频检测场景为logo的情况下,视频截帧对应的label取值。
  • normal:正常图片
  • TV:带有管控logo的图片
  • trademark:商标
表 6. logoData
名称 类型 是否必须 描述
type 字符串 识别出的logo类型,取值为TV(台标)。
name 字符串 识别出的logo名称。
x 浮点数 以图片左上角为坐标原点,logo区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,logo区域左上角到x轴距离。
w 浮点数 logo区域宽度。
h 浮点数 logo区域高度。
表 7. sfaceData
名称 类型 是否必须 描述
x 浮点数 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y 浮点数 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w 浮点数 人脸区域宽度。
h 浮点数 人脸区域高度。
faces 数组 识别出的人脸信息,具体结构描述请参见face
表 8. face
名称 类型 是否必须 描述
name 字符串 相似人物的名称。
rate 浮点数 相似概率。
id 字符串 人脸Id。
表 9. audioScanResult
名称 类型 是否必须 描述
scene 字符串 视频语音检测的场景。取值:antispam
label 字符串 视频语音检测结果的分类,与具体的audioScene对应。取值请参见audioScenes与label参数说明
suggestion 字符串 建议您执行的操作。取值:
  • pass:语音正常,无需进行其余操作
  • review:检测结果不确定,需要进行人工审核
  • block:语音违规,建议执行进一步操作(直接删除或做限制处理)
rate 浮点数 结果为该分类的概率,取值范围为0.00~100.00。值越高,越有可能属于该分类。
details JSON数组 语音对应的文本详情(每一句文本对应一个元素),包含一个或者多个元素,具体结构描述请参见detail
表 10. detail
名称 类型 是否必须 描述
startTime 整型 句子开始的时间,单位为秒。
endTime 整型 句子结束的时间,单位为秒。
text 字符串 语音转换成文本的结果。
label 字符串 该句语音的检测结果的分类,取值请参见audioScenes与label参数说明
keyword 字符串 如果了命中用户自定义关键词,返回命中的关键词。
libName 字符串 如果了命中用户自定义关键词,返回关键词所在的词库。
表 11. hitLibInfo
名称 类型 是否必须 描述
context 字符串 视频中文字命中的自定义文本内容。
libCode 字符串 视频中文字命中的自定义文本内容对应的库code。
libName 字符串 视频中文字命中的自定义文本内容对应的库名称。
表 12. hintWordsInfo
名称 类型 是否必须 描述
context 字符串 视频中文字命中的风险关键词内容。

示例

请求示例
[
    "taskId xxx",
    "taskId bbb"
]
返回示例
  • 仅检测视频画面
    {
        "code": 200,
        "msg": "OK",
        "requestId": "requestID xxx",
        "data": [
            {
                "code": 200,
                "msg": "OK",
                "dataId": "videoId xxx",
                "taskId": "taskId xxx",
                "results": [
                    {
                        "label": "porn",
                        "rate": 99.2,
                        "scene": "porn",
                        "suggestion": "block"
                    }
                ]
            }
        ]
    }
  • 检测视频画面与视频中的语音
    {
        "code": 200,
        "msg": "OK",
        "requestId": "requestID xxx",
        "data": [
            {
                "code": 200,
                "msg": "OK",
                "dataId": "videoId xxx",
                "taskId": "taskId xxx",
                "results": [
                    {
                        "label": "porn",
                        "rate": 99.2,
                        "scene": "porn",
                        "suggestion": "block"
                    }
                ],
                "audioScanResults": [
                    {
                        "scene": "antispam",
                        "label": "customized",
                        "suggestion": "block",
                        "rate": 99.91,
                        "details": [
                            {
                                "startTime": 0,
                                "endTime": 24,
                                "text": "blabla...",
                                "label": "customized"
                            },
                            {
                                "startTime": 24,
                                "endTime": 60,
                                "text": "blabla...",
                                "label": "normal"
                            }
                        ]
                    }
                ]
            }
        ]
    }