本文介绍了调用异步检测接口(/green/video/asyncscan)进行自定义人脸检索的方法。自定义人脸检索服务帮助您从视频中匹配与人脸图片库中目标人脸最相似的N个人脸(默认5个)。

说明 使用该接口前,您必须先调用新建个体接口,创建目标人脸信息。

使用说明(视频异步检测)

业务接口:/green/video/asyncscan

异步检测视频文件中是否包含自定义人脸信息。关于如何构造HTTP请求,请参见请求结构;您也可以直接选用已构造好的HTTP请求,更多信息,请参见SDK概览

  • 计费信息

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

  • 返回结果

    异步检测任务不会实时返回检测结果,您需要通过callback或者轮询的方式获取检测结果。检测结果最长保留一小时。

    • 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-n"] 指定视频检测的应用场景,唯一取值:sface-n
live Boolean false 是否开启直播模式,取值:
  • false(默认):点播视频检测。
  • true:直播视频检测。
offline Boolean false 是否开启近线检测模式,取值:
  • false(默认):实时检测模式,对于超过了并发路数限制的检测请求会直接拒绝。
  • true:近线检测模式,提交的任务不保证实时处理,但是可以排队处理,在24小时内开始检测。
callback String http://example.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接口的状态。
audioScenes StringArray ["antispam"] 该接口可以同时检测视频中的语音内容,支持语音反垃圾场景。如果您需要对语音进行反垃圾,可以通过该参数设置语音检测场景。唯一取值:antispam
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
名称 类型 是否必选 示例值 描述
dataId String videoId xxx 数据ID。用于标识检测的内容,建议保持全局唯一,方便查询。
url String http://example.com/xxx.mp4 视频地址。
说明frames二选一,且不能与frames同时为空。
interval Integer 1 视频截帧间隔,单位为秒,取值范围:1~600。默认值为1秒。
maxFrames Integer 200 系统对本次检测的视频进行截帧的张数上限,取值范围:5~3600,默认为200张。如需调整到更大,请提交工单联系我们。
说明
  • 该字段仅在视频文件检测中生效(live=false)。如果是视频流检测(live=true),则该参数无效,视频流检测没有截帧数量上限。
  • 当使用OSS地址(以oss://开头)作为视频源地址,并且授权内容安全服务访问阿里云MTS服务后,最大可截取20,000张,该方式不会产生额外费用。关于授权内容安全访问阿里云MTS服务的方法,请参见授权访问MTS服务
extras JSONObject {"groupId":"groupxxx"} 额外请求参数。传入与待检测视频进行比对的个体组ID(groupId)。关于groupId的获取方式,请参见getPersonList

返回数据

所有请求均返回JSON格式的数据。关于返回数据中的公共字段,请参见公共返回参数。返回数据中的data字段表示与业务相关的数据,一般是一个JSON结构体或数组。
说明 响应出错的情况下,data字段可能为空。

该接口返回的data字段包含以下参数。

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

示例

请求示例
  • 点播视频自定义人脸检索
    {
        "scenes": [
            "sface-n"
        ],
        "tasks": [{
            "dataId": "videoId xxx",
            "url": "http://example.com/xxx.mp4",
            "interval": 1,
            "maxFrames": 200,
            "extras": {
                "groupId": "groupxxx"
            }
        }]
    }
  • 直播视频自定义人脸检索
    {
        "scenes": [
            "sface-n"
        ],
        "live": true,
        "tasks": [{
            "dataId": "videoId xxx",
            "url": "http://example.com/xxx.mp4",
            "interval": 1,
            "extras": {
                "groupId": "groupxxx"
            }
        }]
    }
正常返回示例
{
    "code": 200,
    "msg": "OK",
    "requestId": "requestID xxx",
    "data": [{
        "dataId": "videoId xxx",
        "taskId": "taskId xxx",
        "url": "http://example.com/xxx.mp4"
    }]
}

使用说明(视频异步检测结果查询)

业务接口:/green/video/results

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

说明 该接口为免费接口。

QPS限制

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

请求参数

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

返回数据

所有请求均返回JSON格式的数据。关于返回数据中的公共字段,请参见公共返回参数。返回数据中的data字段表示与业务相关的数据,一般是一个JSON结构体或数组。
说明 响应出错的情况下,data字段可能为空。

该接口返回的data字段包含以下参数。

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

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

msg String OK 请求信息的响应信息。
dataId String videoId xxx 检测对象对应的数据ID。
说明 如果在检测请求参数中传入了dataId,则此处返回对应的dataId
taskId String taskId xxx 该检测任务的ID。
url String http://example.com/xxx.mp4 对应的请求中的URL,当请求中没有URL时,该字段为空。
results Array 返回结果,调用成功时(code=200),返回结果中包含一个或多个元素,每个元素是个结构体。关于结构的具体描述,请参见result
表 2. result
名称 类型 示例值 描述
scene String sface-n 视频检测场景。
label String sface-n 检测结果的分类,取值:
  • normal:未检索到自定义人脸。
  • sface-n:检索到自定义人脸。
suggestion String block 检测结果的分类,取值:
  • pass:未检测到自定义人脸。
  • block:检测到自定义人脸。
rate Float 0.97987264 置信度分数,取值范围:0~1,置信度越高表示检测结果的可信度越高。建议您不要在业务中使用该分数。
frames JSONArray 判断为该分类的一些截帧检测结果。具体结构描述,请参见frame
表 3. frame
名称 类型 示例值 描述
label String sface-n 视频截帧的人脸检索结果,取值:
  • normal:未检索到自定义人脸。
  • sface-n:检索到自定义人脸。
rate Float 0.97914016 置信度分数,取值范围:0~1,置信度越高表示检测结果的可信度越高。
url String http://example.com/xxx.jpg 视频截帧的URL。
offset Integer 13 视频截帧距离片头的时间戳,单位:秒。
topPersonData JSONObject 视频截帧中与个体库的目标人脸图片最相似的N个(默认5个)人脸信息。关于结构的具体描述,请参见topPersonData
表 4. topPersonData
名称 类型 示例值 描述
persons JSONArray 检测视频中匹配出的Top N(默认5个)人脸信息。具体结构描述,请参见persons
faceItem JSONObject 检测视频中的人脸属性。具体结构描述,请参见faceItem
表 5. person
名称 类型 示例值 描述
personId String xxx 匹配个体的ID。
faceId String 19345583351299xxxx 匹配个体的人脸图片ID。
rate Float 0.97914016 个体的匹配概率。匹配概率越高,对应的误识率越低,具体如下:
  • 取值0.50,误识率0.05。
  • 取值0.60,误识率0.01。
  • 取值0.70,误识率0.005。
  • 取值0.80,误识率0.001。
  • 取值0.90,误识率0.0001。
  • 取值0.92,误识率0.00001。
  • 取值0.94,误识率0.000001。
  • 取值0.96,误识率0.0000001。

推荐您使用匹配概率取值在0.9以上的结果。

表 6. faceItem
名称 类型 示例值 描述
x Float 55 以图片左上角为坐标原点,人脸区域左上角到y轴距离,单位:像素。
y Float 231 以图片左上角为坐标原点,人脸区域左上角到x轴距离,单位:像素。
width Float 441 人脸区域宽度,单位:像素。
height Float 441 人脸区域高度,单位:像素。

示例

请求示例
[
    "taskId xxx"
]
返回示例
{
    "msg": "OK",
    "code": 200,
    "data": [{
        "msg": "OK",
        "code": 200,
        "dataId": "videoId xxx",
        "results": [{
            "frames": [{
                "label": "sface-n",
                "offset": 13,
                "rate": 0.97914016,
                "topPersonData": [{
                    "faceItem": {
                        "height": 441,
                        "width": 441,
                        "x": 55,
                        "y": 231
                    },
                    "persons": [{
                        "faceId": "19345583351299xxxx",
                        "personId": "xxx",
                        "rate": 0.97914016
                    }]
                }],
                "url": "http://xxx/xxx.jpg"
            }],
            "label": "sface-n",
            "rate": 0.97987264,
            "scene": "sface-n",
            "suggestion": "block"
        }],
        "taskId": "taskId xxx",
        "url": "http://example.com/xxx.mp4"
    }],
    "requestId": "6C83CF18-4537-48C1-A4AE-0119F53305B0"
}