# 视频活体检测
视频活体检测产品:主要用于在H5场景下,通过用户新录制并上传一个视频,来进行活体的判断
# 一、请求说明
请求地址:http://api.spiderid.cn/api/router/rest,https://api.spiderid.cn/api/router/rest
服务接口名称(即公共参数method的值): realid.liveness.videoCheck
请求方式:POST
# 二、请求参数
- 请求参数以表单形式提交,Content-Type值为: application/x-www-form-urlencoded;charset=utf-8
名称 | 类型 | 是否必须 | 描述 |
---|---|---|---|
videoData | String | 是 | 视频数据,以base64:开头 (视频base64数据), 以fs: 开头(文件云文件) |
请求示例:
http或https://api.spiderid.cn/api/router/rest?
<[公共请求参数]>
videoData=XXX
# 三、响应参数
data 结果信息 | 类型 | 描述 |
---|---|---|
incorrect | Integer | 返回码 |
message | String | 描述(100:成功 其他为失败信息) |
score | Double | 活体分数 |
pictures | List | 解析出的图片地址,有效期24小时,过期后下载不了 |
- 分数阀值介绍
阀值 | 拒绝率 | 误拒率 | 通过率 |
---|---|---|---|
0.022403 | 0.90325733 | 0.1% | 99.9% |
0.393241(推荐) | 0.96254072 | 0.5% | 99.5% |
0.649192 | 0.97557003 | 1% | 99% |
0.933801 | 0.98990228 | 2% | 98% |
0.973637 | 0.99446254 | 3% | 97% |
0.988479 | 0.99641694 | 4% | 96% |
0.994058 | 0.99739414 | 5% | 95% |
关于以上数值的概念介绍:
- 拒绝率(TRR):如99%,代表100次作弊假体攻击,会有99次被拒绝。
- 误拒率(FRR):如0.5%,指1000次真人请求,会有5次因为活体分数低于阈值被错误拒绝。
- 通过率(TAR):如99%,指100次真人请求,会有99次因为活体分数高于阈值而通过。
- 阈值(Threshold):高于此数值,则可判断为活体。
# 四、成功示例
JSON示例
{
"code": 0,
"requestId":"dsd24...",
"message": "success",
"data": {
"message": "检测成功",
"incorrect":100,
"score":0.9457,
"pictures":[".....",
"....."
]
}
}
# 五、失败示例
JSON示例
{
"code": 0,
"requestId":"dsd24...",
"message": "success",
"data": {
"message": "视频活体检测失败",
"incorrect":124
}
}
# 六、返回码说明(incorrect)
返回码 | 描述 | 是否收费 |
---|---|---|
100 | 检测成功 | 是 |
110 | 不支持该视频文件 | 否 |
121 | 视频未检测到人脸 | 否 |
122 | 视频检测到多张人脸 | 是 |
123 | 视频检测人脸质量较差:[光线有问题, 人脸模糊等] | 是 |
124 | 视频活体检测失败 | 否 |
# SDK 请求示例
//提供的url
String url = "http://api.spiderid.cn/api/router/rest";
//您的appKey
String appkey = "XXX";
//您的appSecret
String secretKey = "XXX";
try {
//1.默认客户端
ApiClient apiClient = new DefaultApiClient(url, appkey, secretKey);
//2.调用出错自动重试客户端
//AutoRetryApiClient apiClient = new AutoRetryApiClient(url, appkey, secretKey);
VideoLivenessCheckRequest req = new VideoLivenessCheckRequest();
// //1.以base64:开头,图片转换成base64位字符串
// String video = Base64.encodeBase64String(FileUtils.readFileToByteArray(new ClassPathResource("/data/qq.mp4").getFile()));
// req.setVideoDataBase64(video);
//2.fs:开头,需要调用我们提供的上传接口,获取bucket,和objectKey,格式为:fs:+bucket:+objectKey
String bucket = "XXX";
String objectKey = "XXX";
String videoData = bucket + ":" + objectKey;
req.setVideoDataFs(videoData);
VideoLivenessCheckResponse rsp = apiClient.execute(req);
//后续业务处理
} catch (Exception e) {
e.printStackTrace();
}