跳到主要内容

视频流异步识别

1. 请求

支持格式

  • 支持的协议:RTMP、HLS、HTTP-FLV、RTSP
  • 支持的容器格式:flv, mkv, mp4, rmvb, avi, wmv, 3gp, ts, mov
  • 支持的编码格式:H.264/AVC、H.263、 H.263+、MPEG-1、MPEG-2、MPEG-4、MJPEG、VP8、VP9

1.1 接口地址

区域请求地址
国内http://api.video.tuputech.com/v3/recognition/video/stream/<secretId>
国外http://api-us.open.tuputech.com/v3/recognition/video/stream/<secretId>
提示

<secretId> 需替换为您的 secretId,请联系我们为您开通 secretId

1.2 请求方法及请求头

请求方法: POST

请求头:

参数名称类型是否必需说明
Content-TypeStringapplication/json

1.3 请求参数

参数名称类型是否必需说明
videoString视频流地址。
customInfoObject自定义信息,用于给视频附加额外信息(比如:直播客户可能传房间号,或者主播 ID 信息)。
intervalNumber视频截图间隔,范围 [1, 10] 秒,默认 3 秒。
fragmentTimeNumber视频片段时长,范围 [10, 60] 秒,默认 60 秒。
callbackUrlString回调地址,用于通知返回结果,支持 HTTP(S)。
callbackRulesObject回调规则,用于返回指定类型的数据。
audioBoolean是否开启语音识别,使用该功能请联系我们,默认 false
taskArray指定本次调用要审核的任务。
timestampNumber当前的服务器的 Unix 时间戳。
nonceNumber随机数。
signatureString

RSA-SHA256 算法签名。签名步骤:

  1. 将参与签名的参数(secretIdtimestampnonce)用英文半角逗号 , 拼接,得到 SignString
  2. 使用您的私钥以 RSA-SHA256 算法对 SignString 签名,然后进行 Base64 编码,得到 signature 字符串。

1.4 请求示例

{
"video": "rtmp://tuputech.com/stream",
"customInfo": {
"id": 1
},
"interval": 1,
"callbackUrl": "http://customer.com/callback",
"callbackRules": {
"54bcfc6c329af61034f7c2fc": [
{
"label": 0,
"review": false
}
]
},
"audio": false,
"task": ["54bcfc6c329af61034f7c2fc"],
"timestamp": 1559554003759,
"nonce": 0.6157904536165131,
"signature": "p0fX2Vb5JMtN0wM7WkQRsyq/aH2zk3zYYRlBAydPmuWkofb06KdSPhq4URYHaAFU/dXodfJS9x2PbZBNz084RF0NIiJvBUcK8mFeA/YliRJnGqv2x3BiNffN61nWJirALvmjbfEWwTdINxFArAIvsV35ivuTBO/jDueWhoxEI9Y="
}

2. 同步响应

2.1 响应内容

参数名称类型说明
signatureString我们采用的数字证书签名算法是:RSA-SHA256,签名输出类型是:base64,首先 下载图普科技的公钥证书,然后按如下步骤认证:
1. 收到的 JSON 数据经过 JSON.parse(),得到 JSON 对象,记为 data
2. data 含两个字段:signaturejsonsignature 是数字签名,json 是真正的有效数据的字符串格式;
3. 用 signaturejson 进行签名认证,算法:RSA-SHA256,输出类型:base64,得到认证结果;
4。认证通过后,对 json 进行 JSON.parse(),得到 JSON 数据,详见 "json"字段说明
jsonStringjson 字段经过 JSON.parse(json) 后,得到具体的结果。
提示

接口返回带签名的 JSON 数据,业务数据需要用户解析 json 字段获得

json 参数

参数名称类型说明
videoIdString视频唯一标识。
codeInt返回码,参考服务公共状态码解析
messageString返回信息。
nonceNumber随机数。
timestampNumber当前的服务器的 Unix 时间戳。

2.2 响应示例

{
"json": "{\"code\":0,\"message\":\"success\",\"videoId\":\"617b99fb021942117f715ea7\",\"nonce\":0.132434424,\"timestamp\":1635490299132}",
"signature": "ii6/.../OwY6vL1aygo9IQuXNGI6XDXN8lNc="
}

3. 识别结果回调

3.1 回调说明

我们以片段的形式对视频流进行识别,每隔一段时间将片段结果通过回调通知用户,请求方式为 POST,请求体为带签名的 JSON 数据。

当用户回调接口返回 HTTP 状态码 200 响应时,即认为回调成功。如果 HTTP 状态码不为 200,会在 10 秒内重试最多 3 次。

3.2 回调请求参数

参数名称类型说明
signatureString我们采用的数字证书签名算法是:RSA-SHA256,签名输出类型是:base64,首先 下载图普科技的公钥证书,然后按如下步骤认证:
1. 收到的 JSON 数据经过 JSON.parse(),得到 JSON 对象,记为 data
2. data 含两个字段:signaturejsonsignature 是数字签名,json 是真正的有效数据的字符串格式;
3. 用 signaturejson 进行签名认证,算法:RSA-SHA256,输出类型:base64,得到认证结果;
4。认证通过后,对 json 进行 JSON.parse(),得到 JSON 数据,详见 "json"字段说明
jsonStringjson 字段需经过 JSON.parse(json) 后,得到具体的结果。

json 参数

参数名称类型说明
codeInt返回码,参考 服务公共状态码解析
messageString返回信息。
videoInfoObject视频信息。详见 videoInfo 参数
fragmentInfoObject视频片段信息。详见 fragmentInfo 参数
customInfoObject自定义信息,请求参数中的 customInfo
[taskId]Object识别任务的结果。详见 taskId 参数
nonceNumber随机数。
timestampNumber当前的服务器的 Unix 时间戳。

videoInfo 参数

参数名称类型说明
idString视频唯一标识。
captureStartString视频截帧开始时间,ISO 时间。

fragmentInfo 参数

参数名称类型说明
idString视频片段唯一标识。
offsetStartNumber视频片段截帧开始位置,单位:秒。
offsetEndNumber视频片段截帧结束位置,单位:秒。
capturedImagesNumber片段截帧数量。

taskId 参数

每个识别任务会有 全局固定不变taskId 和对应数据结构,详见各识别任务回调参数

参数名称类型说明
fileListArray每张图片的识别结果。

3.3 各识别任务回调参数

图像类任务:

语音类任务:

3.4 片段结果回调示例

{
"json": "{\"code\":0,\"message\":\"success\"...}",
"signature": "ii6/.../OwY6vL1aygo9IQuXNGI6XDXN8lNc="
}

json 字段经过解析后内容如下:

{
"videoInfo": {
"id": "5cef85b518e5bc327d102e42",
"captureStart": "2019-06-01T00:00:00.000Z"
},
"fragmentInfo": {
"id": "5cef85b518e5bc327d102e42-1",
"offsetStart": 0,
"offsetEnd": 60,
"capturedImages": 20
},
"customInfo": {
"id": 1
},
// 图片分类
"54bcfc6c329af61034f7c2fc": {
"fileList": [
{
"url": "https://static.tuputech.com/api/image/original/cloud-api/storage-0831/2019-06-20/15-7/5c8760515a82342809627fea/15610140357610.8919706822430384.jpg",
"rate": 0.7911882400512695,
"label": 2,
"review": false
}
]
},
// 图片搜索
"5b7be1f59b0c77a8c2afb351": {
"fileList": [
{
"url": "https://static.tuputech.com/api/image/original/cloud-api/storage-0831/2019-06-20/15-7/5c8760515a82342809627fea/15610140357660.906444779265335.jpg",
"similarity": 0.32518404722213745,
"label": 2,
"review": false,
"facePosition": [
[
0.19140625,
0.25
],
[
0.3125,
0.25
],
[
0.3125,
0.4652777777777778
],
[
0.19140625,
0.4652777777777778
]
],
"typeName": "外国政治人物",
"faceId": "非政治人物"
}
]
},
// 自定义图库
"5c8f44ca25ade48455a63bad": {
"fileList": [
{
"url": "https://static.tuputech.com/api/image/original/cloud-api/storage-0831/2019-06-20/15-7/5c8760515a82342809627fea/15610140357660.906444779265335.jpg",
"label": 2,
"similarity": 0.6458022594451904,
"relatives": [
{
"path": "https://static.tuputech.com/lts/image/original/lts-52/LTS-Bucket-UserDefineImages/2019-03-29/cloud-api/storage-0831/2019-03-29/10/0.9202317260827633/15538277415580.7420568768203986.jpg",
"score": 0.6458022594451904
}
]
}
]
},
// 语音转译结果
"5caee6b2a76925c55a09a6d2": {
"violations": [
{
"startTime": 12,
"endTime": 15,
"content": "毛泽东",
"action": "block",
"label": "Politics",
"review": false,
"rate": 0.896484,
"details": [
{
"keyword": "毛泽东",
"hint": "毛泽东",
"mainLabel": "Politics",
"subLabel": "National_Leader"
}
]
}
],
"text": "毛泽东你好"
},
"code": 0,
"message": "success",
"nonce": 0.13782089185808521,
"timestamp": 1559554942044
}