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

(提交视频异步检测任务)使用说明

业务接口:/green/video/asyncscan,表示异步检测视频文件或视频流中是否包含敏感人脸信息,支持通过传入视频URL、本地视频文件、视频二进制流的方式进行检测。

  • 计费信息

    该接口为收费接口。关于计费方式,请参见内容安全产品定价

  • 返回结果
    • callback获取审核结果:提交视频异步检测任务时,在请求参数中传入callback参数,用来自动接收检测结果。更多信息,请参见请求参数
    • 轮询获取审核结果:提交视频异步检测任务时,无需传入callback参数。提交视频异步检测任务后,调用结果查询接口获取检测结果。更多信息,请参见(查询视频异步检测结果)使用说明
  • 视频要求
    • 视频文件链接支持以下协议:HTTP和HTTPS。
    • 视频文件支持以下格式:AVIFLVMP4MPGASFWMVMOVWMARMVBRMFLASHTS
    • 视频大小限制:单个视频大小不超过200 MB。
    • 视频流支持以下协议:RTMP、HLS、HTTP-FLV、RTSP。
    • 视频流时长限制:单个视频流检测任务最长支持24小时,超过24小时任务自动结束。
    • 视频检测的时间依赖于视频的下载时间。请保证被检测的视频文件所在的存储服务稳定可靠,建议您使用阿里云OSS存储服务存储视频文件。

QPS限制

本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

请求参数

名称 类型 是否必选 示例值 描述
bizType String default 该字段用于标识您的业务场景。您可以通过内容安全控制台创建业务场景(具体操作,请参见自定义机审标准)。
scenes StringArray ["sface"] 指定视频检测的应用场景,唯一取值:sface
live Boolean false 是否直播。默认为false,表示为普通视频检测;若为直播检测,该值必须传入true
offline Boolean false 是否近线检测模式。
  • 默认为false,表示实时检测模式,对于超过了并发路数限制的检测请求会直接拒绝。
  • 如果为true,会进入近线检测模式,提交的任务不保证实时处理,但是可以排队处理,在24小时内开始检测。
说明 该参数仅作用于视频文件检测,不支持流式检测。
callback String http://www.test.com 异步检测结果回调通知您的URL,支持使用HTTP和HTTPS协议的地址。该字段为空时,您必须定时轮询检测结果。
callback接口必须支持POST方法、UTF-8编码的传输数据,以及表单参数checksumcontent。内容安全按照以下规则和格式设置checksumcontent,调用您的callback接口返回检测结果。
  • checksum:字符串格式,由用户uid + seed + content拼成字符串,通过SHA256算法生成。用户UID即阿里云账号ID,可以在阿里云控制台查询。为防篡改,您可以在获取到推送结果时,按上述算法生成字符串,与checksum做一次校验。
    说明 用户UID必须是阿里云账号的UID,而不是RAM用户的UID。
  • content:JSON字符串格式,请自行解析反转成JSON对象。关于content结果的示例,请参见查询异步检测结果的返回示例。
说明 您的服务端callback接口收到内容安全推送的结果后,如果返回的HTTP状态码为200,则表示接收成功,其他的HTTP状态码均视为接收失败。接收失败时,内容安全将最多重复推送16次检测结果,直到接收成功。重复推送16次后仍未接收成功,则不再推送,建议您检查callback接口的状态。
seed String abc_123 该值用于回调通知请求中的签名。当使用callback时,该字段必须提供。
cryptType String SHA256 使用回调通知时(callback),设置对回调通知内容进行加密的算法。内容安全会将返回结果(由用户uid + seed + content拼接的字符串)按照您设置的加密算法加密后,再发送到您的回调通知地址。取值:
  • SHA256(默认):使用SHA256加密算法。
  • SM3:使用国密HMAC-SM3加密算法,返回十六进制的字符串,且字符串由小写字母和数字组成。

    例如,abc经国密SM3加密后返回66c7f0f462eeedd9d1f2d46bdc10e4e24167c4875cf2f7a2297da02b8f4ba8e0

tasks JSONArray 指定检测对象,JSON数组中的每个元素是一个检测任务结构体。最多支持100个元素,即每次提交100条内容进行检测,支持100个元素的前提是需要将并发任务调整到100个以上。关于每个元素的具体结构描述,请参见task
表 1. task
名称 类型 是否必选 示例值 描述
clientInfo JSONObject {"userId":"120234234","userNick":"Mike","userType":"others"} 客户端信息,请参见公共参数中的公共查询参数。
服务器会把全局的clientInfo和此处独立的clientInfo合并。
说明 独立的clientInfo优先级更高。
dataId String videoId xxx 数据ID。需要保证在一次请求中所有的ID不重复。
liveId String liveId123 视频直播流的ID。

该参数用于视频直播任务去重,防止重复检测,如果传递该参数,会根据uid+bizType+liveId判断是否存在检测中的直播任务。如果存在,就直接返回已存在的直播检测taskId,不发起新的任务。

url String http://xxxxx.com/test.avi 视频地址,不能和frames同时为空,也不能和frames同时有值。
说明 传入本字段时按照传URL方式计费。
frames JSONArray 截帧信息。frames中的每个元素是个结构体(Frame表),每个元素的具体结构描述请参见frame
说明 传入本字段时按照传图片序列的方式计费。
framePrefix String http://xxx.xx.xx/video/ frames存在时,截帧的完整URL为:framePrefix + frame.url
interval Integer 1 视频截帧间隔,单位为秒,取值范围为1~600。默认值为1秒。
maxFrames Integer 200 200
表 2. frame
名称 类型 是否必选 示例值 描述
url String http://g1.ykimg.com/0B860000586C0A0300038A0460000 截帧地址。当framePrefix存在时,完整的截帧地址为:framePrefix + url
offset Integer 10 该截帧距离片头的时间戳,单位为秒。
content结果示例
{
    "code": 200,
    "msg": "OK",
    "dataId": "videoId xxx",
    "taskId": "taskId xxx",
    "results": [
        {
            "label": "porn",
            "rate": 99.2,
            "scene": "porn",
            "suggestion": "block"
        }
    ]
}

返回数据

名称 类型 示例值 描述
taskId String taskId xxx 该检测任务的ID。
dataId String videoId xxx 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId

示例

请求示例
  • 视频截帧图片序列检测
    {
        "scenes": [
            "sface"
        ],
        "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": [
            "sface"
        ],
        "tasks": [
            {
                "dataId": "videoId xxx",
                "url": "http://www.foo.bak/a.mp4",
                "interval": 1,
                "maxFrames": 200
            }
        ]
    }
  • 视频直播流检测
    {
        "scenes": [
            "sface"
        ],
        "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个小时,否则结果将会消失。

说明 该接口为免费接口。

QPS限制

本接口的单用户QPS限制为50次/秒。超过限制,API调用会被限流,这可能会影响您的业务,请合理调用。

请求参数

名称 类型 是否必选 示例值 描述
body JSONArray ["taskId xxx"] 要查询的taskId列表。最大长度不超过100。

返回数据

名称 类型 示例值 描述
code Integer 200 错误码,和HTTP状态码一致。

更多信息,请参见公共错误码

msg String OK 请求信息的响应信息。
dataId String videoId xxx 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskId String taskId xxx 该检测任务的ID。
results Array 返回结果,调用成功时(code=200),返回结果中包含一个或多个元素。每个元素是个结构体。关于具体结构描述,请参见result
表 3. result
名称 类型 示例值 描述
scene String sface 视频检测场景,唯一取值:sface
label String sface 检测结果的分类,取值:
  • normal:正常视频,不包含敏感人脸
  • sface:包含敏感人脸的视频
suggestion String block 建议您执行的操作,取值:
  • pass:视频正常,无需进行其余操作
  • review:检测结果不确定,需要进行人工审核
  • block:视频违规,建议执行进一步操作(如直接删除或做限制处理)
rate Float 97.03 结果为该分类的概率,取值范围为0.00~100.00。值越高,表示越有可能属于该分类。
frames JSONArray 判断为该分类的一些截帧检测结果(FrameScanResult)。截帧检测结果表的具体结构描述,请参见frame
extras JSONObject {"hitCustomLibName":"customLib"} 附加信息。
sfaceData Array 识别出来的人脸信息。关于具体结构描述,请参见sfaceData
表 4. frame
名称 类型 示例值 描述
url String http://g1.ykimg.com/0B860000586C0A0300038A0460003 截帧地址。
offset Integer 50 该截帧距离片头的时间戳,单位为秒。
label String sface 该视频截帧的风险分类,取值范围:
  • normal:不包含敏感人脸
  • sface:包含敏感人脸
rate Float 99.1 该视频截帧结果为label所述分类的概率,取值范围为0.00~100.00。值越高,表示越有可能属于该分类。
表 5. sfaceData
名称 类型 示例值 描述
x Float 444 以图片左上角为坐标原点,人脸区域左上角到y轴距离。
y Float 174 以图片左上角为坐标原点,人脸区域左上角到x轴距离。
w Float 467 人脸区域宽度。
h Float 467 人脸区域高度。
smileRate Float 0 微笑的概率。
glasses Boolean false 是否戴眼镜。
faces Array 识别出的人脸信息。关于具体结构描述,请参见下表face。
表 6. face
名称 类型 示例值 描述
name String xxxx 相似人物的名称。
rate Float 97.03 相似概率。
id String AliFace_0018177 人脸Id。

示例

请求示例
[
    "taskId xxx"
]
返回示例
{
    "code": 200,
    "msg": "OK",
    "requestId": "requestID xxx",
    "data": [
        {
            "code": 200,
            "msg": "OK",
            "dataId": "videoId xxx",
            "taskId": "taskId xxx",
            "results": [
                {
                    "label": "sface",
                    "rate": 97.03,
                    "scene": "sface",
                    "sfaceData": [
                        {
                            "faces": [
                                {
                                    "detail": "基地首领",
                                    "id": "AliFace_0018177",
                                    "name": "xxxx",
                                    "rate": 97.03
                                }
                            ],
                            "glasses": false,
                            "h": 467,
                            "smileRate": 0,
                            "w": 467,
                            "x": 444,
                            "y": 174
                        },
                        "frames": [
                            {
                                "offset": 50,
                                "url": "http://g1.ykimg.com/0B860000586C0A0300038A0460003",
                                "label": "sface",
                                "rate": 99.1
                            }
                        ]
                    }
                ]
            }
        ]
    }