1. 接口说明

该接口用于对一段短视频进行静默活体检测,判断视频中人脸是否为活体。

2. 接口地址

POST http://api.xfyun.cn/v1/service/v1/image_identify/silent_detection HTTP/1.1
Content-Type:application/x-www-form-urlencoded; charset=utf-8

3. 请求参数

在 Http Request Header 中配置授权认证参数,见【接口描述-授权认证。 其中 X-Param 为各配置参数组成的 JSON 串经 BASE64 编码之后的字符串,原始 JSON 串各字段说明如下:

参数 类型 必须 说明 示例
get_image bool 是否返回base64视频图片。默认值为false,不返回;值为true时,返回 true

X-Param生成示例:

原始JSON串:
{
    "get_image": True,
}
BASE64编码(即X-Param):
eyJnZXRfaW1hZ2UiOiB0cnVlfQ==

在 Http Request Body 中配置以下参数:

参数 类型 必须 说明
file string 待检测视频,为了保证效果建议视频长度不小于3秒,需要base64编码后进行urlencode,格式包括且不限于.mp4,.avi,.flv,.wmv,.mov,.rm,要求编码后视频大小不超过10M,建议mp4

4. 返回值

返回值为 json 串,各字段如下:

参数 类型 说明
code string 结果码(具体见错误码)
data float 检测结果
desc string 描述
sid string 会话ID

其中 sid 字段主要用于追查问题,如果出现问题,可以提供 sid 给讯飞技术人员帮助确认问题。

data中结果字段解释说明:

参数 类型 说明
passed bool 是否通过活体检测
liveness_score float 静默活体检测得分
image_timestamp float 视频选帧时间戳
base64_image string base64编码后的图片文件流(可选,默认不返回)

注意

1、如果活体检测不通过,即'passed'为false,image_timestamp和base64_image字段将无意义;

2、活体检测通过情况下,base64_image是否返回由输入参数get_image控制;

3、liveness_score字段为保留字段,返回值不具备参考价值,实际活体检测结果以passed字段值为准。


结果示例如下:

失败结果:

{
    "code": "10106",
    "desc": "invalid parameter|invalid X-Appid",
    "data": 0,
    "sid": "wsr0000bb3f@ch3d5c059d83b3477200"
}

成功结果:

{
"data":{
    "passed":true,
    "liveness_score":0.96,
    "image_timestamp":1534747248,
    "base64_image":""
},
"code":"0",
"desc":"success",
"sid":"wsr00000001@ch36940e324c59000100"
}

5. 调用示例

python脚本示例(python版本号 3.6)

说明:将脚本中 PATH, api_key, x_appid, 换成相应的视频路径,讯飞开放平台提供的 apiKey,讯飞开放平台应用的 appid 即可,运行脚本可打印相应结果。

#!/usr/bin/python
# -*- coding: UTF-8 -*- #
import time
import json
import hashlib
import base64
import requests


def main():
    x_appid = "*****"
    api_key = '*********'
    PATH = r"*******"
    url = 'http://api.xfyun.cn/v1/service/v1/image_identify/silent_detection'

    with open(PATH, 'rb') as f:
        file_content = f.read()
        vedio_file_base64 = base64.b64encode(file_content)

    param = {"get_image": True}
    x_param = base64.b64encode(json.dumps(param).encode('utf-8'))
    tt = str(x_param, "utf-8")
    print(tt)
    x_time = str(int(time.time()))

    m2 = hashlib.md5()
    m2.update(str(api_key + x_time + tt).encode('utf-8'))
    x_checksum = m2.hexdigest()
    x_header = {'X-Appid': x_appid,
                'X-CurTime': x_time,
                'X-Param': x_param,
                'X-CheckSum': x_checksum}

    body = {
        "file": vedio_file_base64
    }

    req = requests.post(url, headers=x_header, data=body)
    result = json.loads(req.text)["data"]["base64_image"]
    content = base64.decodebytes(result.encode('utf-8'))
    with open('./result.jpg', 'wb') as f:
        f.write(content)
    print(content)
    return


if __name__ == '__main__':
    main()
Copyright © iflytek.com 2018 all right reserved,powered by Gitbook该文件修订时间: 2018-10-19 20:53:23

results matching ""

    No results matching ""