1、接口描述
用于判断视频中的人物动作与传入动作类型是否一致来识别视频中人物是否眨眼、左摇头、右摇头、上下点头或张嘴,以及是否活体人脸。
2、请求方法
POST
3、接口要求
- 目前仅支持检测视频的Base64编码,一次请求支持一个视频文件,不支持直接检测视频流。
- 视频Base64编码后大小不超过8MB
- 限制视频时长1~15秒
- 限制帧率10fps~30fps
- 视频封装格式:mp4、avi、mov
4、URI
/v1/aiop/api/3j8ogbxxpce8/action-fas/predict
5、请求参数
请求头header参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Content-Type | 是 | String | json格式 | application/json | |
appkey | 是 | String | 平台应用appkey | 562b89493b1a40e1b97ea05e50dd8170 | |
ctyun-eop-request-id | 是 | String | 用户请求 id,由用户构造,用户可以通过 uuid 等方法自行生成唯一字符串,用于日志请求追踪 详见文档:Python3调用示例 |
33dfa732-b27b-464f-b15a-21ed6845afd5 | |
eop-date | 是 | String | 请求时间,由用户构造,形如 yyyymmddTHHMMSSZ 详见文档:Python3调用示例 |
20211221T163014Z | |
host | 是 | String | 终端节点域名,固定字段 | ai-global.ctapi.ctyun.cn | |
Eop-Authorization | 是 | String | 由天翼云官网 accessKey 和 securityKey 经签名后生成,参与签名生成的字段包括天翼云官网 accessKey 、securityKey、平台应用的 appkey(非必须),用户请求id(非必须),请求时间,终端节点域名(非必须)以及请求体内容 签名逻辑详见文档:认证鉴权和Python3调用示例 |
请求体body参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
Action | 是 | String | 要执行的动作 | ActionFas | |
VideoBase64 | 是 | String | 视频数据,Base64编码,Base64编码后大小不超过8MB | AAAAFGZ0eXBxdCAgAAACAHF0ICAAAAAId2lkZQBHooJtZGF0AAACrgYF//+q3E......Wp4A== | |
ActionType | 是 | String | 动作类型的名称。"Blink"代表眨眼,"OpenMouth"代表张嘴,"FaceLeft"代表左摇头,"FaceRight"代表右摇头,"FaceUpdown"代表上下点头。 | Blink |
6、请求代码示例
Curl -X POST "https://ai-global.ctapi.ctyun.cn/v1/aiop/api/3j8ogbxxpce8/action-fas/predict"
-H "Content-Type: application/json"
-H "ctyun-eop-request-id:33dfa732-b27b-464f-b15a-21ed6845afd5"
-H "appkey:XXX"
-H "Eop-Authorization:XXX"
-H "eop-date:20211109T104641Z"
-H "host:ai-global.ctapi.ctyun.cn"
--data '{
"Action": "ActionFas",
"VideoBase64": "AAAAFGZ0eXBxdCAgAAACAHF0ICAAAAAId2lkZQBHooJtZGF0AAACrgYF//+q3E......Wp4A==",
"ActionType": "Blink",
}'
7、返回值说明
请求成功返回响应参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
statusCode | 是 | Int | 请求响应状态码,返回 0 表示成功,返回错误代码参考下面的错误代码列表 | 0 | |
message | 是 | String | 返回对应的可读消息 | success | |
returnObj | 是 | Object | 返回结果键值集合,键为是否检测到当前期望动作”action_detected”;值为动作检测结果bool值true/false,其中true表明检测到期望动作,false表示未检测到 | returnObj |
表result
参数 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|
eye | String | 是否检测到眨眼行为 True:检测到此行为 False:未检测到此行为 |
False | |
face_left | String | 是否检测到左摇头行为 True:检测到此行为 False:未检测到此行为 |
False | |
face_right | String | 是否检测到左摇头行为 True:检测到此行为 False:未检测到此行为 |
False | |
face_updown | String | 是否检测到上下点头行为 True:检测到此行为 False:未检测到此行为 |
False | |
mouth | String | 是否检测到上下点头行为 True:检测到此行为 False:未检测到此行为 |
True | |
valid | String | 是否为活体人脸 True:检测为活体人脸 False:检测为非活体人脸 |
True |
请求失败返回响应参数
参数 | 是否必填 | 参数类型 | 说明 | 示例 | 下级对象 |
---|---|---|---|---|---|
statusCode | 是 | String | 错误码,放置API对应的错误码 | 4213 | |
message | 是 | String | 请求失败时返回值固定为"error" | error | |
details | 是 | String | 返回对应的错误信息 | ||
error | 是 | String | 返回对应的错误码 | AI_OP_4213 |
8、返回值示例
请求成功返回值示例
{
"statuscode": 0,
"message": "success",
"result": {
"eye": "True",
"face_left": "False",
"face_right": "False",
"face_updown": "False",
"mouth": "False",
"valid": "True"
}
}
请求失败返回值示例
{
"statuscode": 500001,
"message": "服务接口异常,请联系管理员",
"details": "需要联系管理员处理",
"error":"AI_OP_4101"
}
9、状态码
http状态码 | 描述 |
---|---|
200 | 表示请求成功 |
10、错误码说明
6 位错误码。4 开头为业务错误码,5 开头为服务错误码。
错误码 | 错误信息 | 错误描述 |
---|---|---|
AI_OP_400001 | 请求路径错误 | 请求路径错误 |
AI_OP_400002 | 请求方法错误 | 请求方法错误,请使用 POST 请求 |
AI_OP_400003 | 请求体内容为空 | 请求体请求数据为空,没有包含内容 |
AI_OP_400004 | 请求体非 json 格式 | 请求体内容需要符合 json 要求 |
AI_OP_400005 | 请求体类型错误 | 请求体需为字典,不能为其他类型 |
AI_OP_400006 | 必传的参数未传 | 必须的参数(Action、ActionType 或 VideoBase64)未传 |
AI_OP_400008 | 请求体的参数字段类型错误 | Action 字段应该是 string 类型 VideoBase64 字段应该是 string 类型 ActionType 字段应该是 string 类型 |
AI_OP_400009 | 请求体的参数字段值为空 | Action、ActionType 或 VideoBase64 字段值为空字符 |
AI_OP_400010 | 请求体的参数字段值设置错误 | Action、ActionType 值设置错误 |
AI_OP_400011 | 视频时长不符合要求 | 视频时长不符合要求,限制为 1 ~ 15秒 |
AI_OP_400012 | 视频编码后大小不符合要求 | 视频编码后大小不符合要求,要求小于 8M |
AI_OP_400013 | 视频帧率不符合要求 | 视频帧率限制为 10fps ~ 30fps |
AI_OP_400015 | 视频封装格式不符合要求 | 视频封装格式请参考接口文档说明 |
AI_OP_400016 | 视频读取失败 | 视频文件损坏读取失败 |
AI_OP_400017 | 视频Base64数据处理异常 | 视频Base64字符串转换字节码异常 |
AI_OP_400018 | 视频未检测到人脸 | 视频未检测到人脸 |
AI_OP_500001 | 服务接口异常,请联系管理员 | 需要联系管理员处理 |
11、base64 编码规则:使用常规的 safe base64 编码方式
- python 中推荐使用
base64.urlsafe_b64encode()
函数进行编码 - java 中推荐使用
BASE64.getUrlEncoder().encodeToString()
函数进行编码