[TOC]

# 视频服务

# 1 获取视频设备扩展信息

  • 请求url: /common/video/getExtend
  • 请求方式: get
  • 接口描述: 查询摄像机等音视频设备的扩展信息
  • 请求参数:
字段名称 字段类型 是否必须 字段描述
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
sub_id String 子摄像头id,统一设置为0
  • 请求示例:
 /common/video/getExtend?
token=*******************************************************
&din=******************
&iotim_ticket=*******************************************************
1
2
3
4
  • 返回参数:
返回参数 参数类型 参数说明
code String 错误码,0表示成功,其他见错误码说明
message String 执行结果消息
data JSON 查询结果
din String 设备的唯一标识
sub_vid String 传统子摄像头id
is_live Boolean 是否直播
is_recording Boolean 是否录像
is_face Boolean 是否是人脸识别设备
save_type String 存储方式
save_day Integer 存储天数
is_web_push Boolean 是否网页推流
web_resolution Integer 网页推流分辨率,0:原画,360、720、1080 分别对应 360P、720P、1080P
shell String 摄像机外壳
rom_version String 摄像机固件版本
sdk_version String 摄像机SDK版本
mac String 摄像机mac地址
code String 摄像机编码
password String 摄像机登录密码
lens String 摄像机镜头
c_id String 摄像机云id
record_data String 摄像机录像规则
advance_record Integer 预录帧数,最大值 1000
event_config JsonArray 智能算法配置
  • 返回示例:
{
  "code": 0,
  "message": "OK",
  "data": {
    "din": "***************",
    "is_live": false,
    "is_recording": true,
    "is_face": false,
    "save_type": "hadoop1",
    "save_day": 60,
    "is_web_push": false,
    "web_resolution": 0,
    "shell": "",
    "rom_version": "",
    "sdk_version": "",
    "mac": "**:**:**:**:**:**",
    "code": "",
    "password": "",
    "lens": "4mm",
    "c_id": "2427423",
    "record_data": "",
    "advance_record": 60
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# 2 设置视频设备扩展信息

  • 接口url: /common/video/setExtend
  • 接口描述: 设置视频设配的扩展信息
  • 请求方法:POST
  • 请求参数:
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
sub_id String 子摄像头id,统一设置为0
is_live Boolean 是否直播
is_recording Boolean 是否录像
is_face Boolean 是否是人脸识别设备
save_type String 存储方式:cloud
save_day Integer 存储天数
is_web_push Boolean 是否网页推流
web_resolution Integer 网页推流分辨率,0:原画,360、720、1080 分别对应 360P、720P、1080P
shell String 摄像机外壳
rom_version String 摄像机固件版本
sdk_version String 摄像机SDK版本
mac String 摄像机mac地址
code String 摄像机编码
password String 摄像机登录密码
lens String 摄像机镜头
c_id String 摄像机云id
record_data String 摄像机录像规则
advance_record Integer 预录帧数,最大值 1000
event_config JsonArray 智能算法配置
  • 请求示例:
 /common/video/setExtend?
token=*******************************************************
&iotim_ticket=*******************************************************
1
2
3
  • a.请求头:Content-Type:application/json
  • b.请求包体:
{
  "shell": "shell",
  "recording": 1,
  "rom_version": "1.0.0",
  "face_recognition": 1,
  "sdk_version": "1.4.203",
  "web_resolution": 360,
  "mac": "00:44:0f:9a:00:26",
  "code": "",
  "lens": "4mm",
  "password": "1234",
  "save_day": 30,
  "din": "144115194519080010",
  "save_type": "hadoop2",
  "c_id": "2427423",
  "record_data": "[{\"record_cron\":\"0 * * * * ?\", \"record_long\":60},{\"record_cron\":\"0 * * * * ?\", \"record_long\":240}]",
  "live": 1,
  "web_push": 1
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  • 返回参数:
返回参数 参数类型 参数说明
code String 错误码,0表示成功,其他见错误码说明
message String 执行结果消息
  • 返回示例:
{
  "code": 0,
  "message": "OK",
}
1
2
3
4

# 3 获取设备存储类型及天数

  • 接口url: /common/video/getDeviceSaveTypeAndDays

  • 请求方法: GET

  • 请求参数:

    请求参数 参数类型 参数说明
    *token String 动态密码,登录时获得
    *iotim_ticket String QQ 物联票据
    *din String 设备 din
    sub_din String 子摄像头din
  • 请求示例:

    /common/video/getDeviceSaveTypeAndDays?
    token==*************************
    &iotim_ticket==*************************
    &din==*************************
    &sub_din==*************************
    
    1
    2
    3
    4
    5
  • 返回参数:

    返回参数 参数类型 参数说明
    code Integer 错误码
    message String 执行结果消息
    data json 返回数据
    save_type String 保存类型:cosmtav(云端),nvr(本地)
    save_day int 录像保存天数
    din String 设备id
  • 返回示例:

    {
      "code": 0,
      "data": {
        "save_type": "nvr",
        "save_day": 65,
        "din": "din"
      },
      "message": "OK"
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9

# 4 查询设备某段时间缺失录像片段

  • 接口url: /common/video/getVideoLostRecord

  • 请求方法: GET

  • 请求参数:

    请求参数 参数类型 参数说明
    *token String 动态密码,登录时获得
    *iotim_ticket String QQ 物联票据
    *din String 设备 din
    subDin String 子摄像头影像流 id
    *start_time long 开始时间,毫秒
    *end_time long 结束时间,毫秒
  • 请求示例:

    /common/video/getVideoLostRecord?token=
    &iotim_ticket===*************************
    &din===*************************
    &subDin===*************************
    &start_time===*************************
    &end_time===*************************
    
    1
    2
    3
    4
    5
    6
  • 返回参数:

    返回参数 参数类型 参数说明
    code Integer 错误码
    message String 执行结果消息
    data json 返回数据
    handler String 消息唯一id
  • 返回示例:

    {
      "code": 0,
      "message": "OK",
      "data": {
        "handler": "fdsafasfds"
      }
    }
    
    1
    2
    3
    4
    5
    6
    7

# 5 查询sharp协议视频推流服务器

  • 接口url: /common/video/getStreamServer
  • 描述: 查询sharp协议视频推流服务器信息,低延时获取视频方式,1秒钟之内,需要自行开发播放器。
  • 请求方法: GET
  • 请求参数:
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
sub_vid String 子摄像头id
streamId String 主码流传0,子码流传1
env Integer 云端传0
  • 请求示例:
 /common/video/getStreamServer?
token=****************
&din=****************
&iotim_ticket=****************
1
2
3
4
  • 返回参数:
返回参数 参数类型 参数说明
code Integer 错误码,为 0 表示成功,其他见错误码表
message String 执行结果消息
data Json 查询结果
ip String 设备 din 推流服务器 ip
innerip String 设备 din 推流服务器内网ip
stream_token String sharp 协议握手所需 token
以下两个字段决定了握手包使用的版本号,版本3会有以下两个字段,否则为版本2
port int sharp 服务端口号,如果无该返回值端口号默认为30001
stream_en_key String 视频流加密key,目前为AES128加密KEY,如无该值说明当前环境暂时不支持加密
  • 返回示例:
 {
      "message": "OK",
      "data": {
          "ip": "127.0.0.1",
          "innerip": "127.0.0.1",
          "stream_token":"2C3A8F42",
          "port":30001,
          "stream_en_key":"AE4128AES128AES1",
		  "sm4_vector":"AES128A4S128AES1"
      },
      "code": 0
  }
1
2
3
4
5
6
7
8
9
10
11
12

推流协议连接 (opens new window)

# 6 获取web流播放地址(rtmp、flv、hls)

  • 接口url: /common/video/getWebUrl
  • 描述: 查询web流的播放地址。HLS高延时方案,10至20秒,Web端播放, RTMP需要支持flash播放器的组件端播放
  • 请求方法:GET
  • 请求参数:
参数名称 参数说明 是否必须 数据类型
din 设备的唯一标识 true string
env 公有云和私有化统一传0,混合云传项目id,默认为0 false int
streamId 主码流0,子码流1,默认主码流 false string
token 鉴权参数:登录获取的动态密钥 true string
iotim_ticket 鉴权参数:登录获取的物联票据 true string
  • 请求示例:
 /common/video/getWebUrl?
token=*******************************************************
&iotim_ticket=*******************************************************
&din=***************
&env=*****
&streamId=****
1
2
3
4
5
6
  • 返回参数:
返回参数 参数类型 参数说明
code String 错误码,0表示成功,其他见错误码说明
message String 执行结果消息
data JSON 查询结果 ,json格式,数据如下:
rtmp String rtmp播放地址,一次有效,断开后重新获取
flv String flv播放地址
url String Hls播放地址
  • 返回示例(链接带鉴权,有效期2小时):
{
  "code": 0,
  "data": {
    "rtmp": "rtmp://****?ticket=*****",
    "flv": "http://***.flv?ticket=*****",
    "url": "https://****.m3u8?ticket=*****"
  },
  "message": "OK"
}
1
2
3
4
5
6
7
8
9

# 7 获取本地录像

注:非NVR摄像头不可用

  • 接口url: /common/video/getLocalStream

  • 请求方式 : GET

  • 请求参数

    请求参数 参数类型 参数说明
    *token String 鉴权参数:登录获取的动态密钥
    *iotim_ticket String 鉴权参数:登录获取的物联票据
    *din String 设备 din
    *stream_id String 码流id,传13
    *timeBegin long 开始时间(精确到毫秒)
    *length long 视频长度,秒,最长获取30s
    *subDin String 子摄像头影像流 id,一般传0
    *lastRecordHandler String 上一个片段标识,首次请求可以不传
    *playBackRate String 倍速 1,2,3,8,16,默认1

| env | int | 公有云和私有化统一传0,混合云传项目id,默认为0 |

  • 请求示例
/common/video/getLocalStream?
token=*******************************
&iotim_ticket=*******************************
&din=200200000000000339
&subDin=0
&stream_id=13
&timeBegin=1564020498128
&length=20
&lastRecordHandler=****
&env=0
&playBackRate=1
1
2
3
4
5
6
7
8
9
10
11

curl -H "x-welink-app-id:100247" "http://10.55.130.116:8810/video/getLocalStream?din=200200000000000339&subDin=0&stream_id=13&timeBegin=1564020232917&length=20"

  • 返回参数

    返回参数 参数类型 参数说明
    code Integer 错误码
    message String 执行结果消息
    data json 返回数据
    sm4_vector String 加密向量
    recordHandler String 本次录像的唯一标示
    timeBegin long 开始时间,毫秒时间戳
    length long 秒数,最多获取30s的历史视频
    stream_token String 流token
    stream_id String 子码流
    stream_en_key String 流加密key
    server_ip String 外网地址
    server_port int 服务器端口号
    cmd String 命令字
    server_innerip String 内网ip
  • 返回示例

{
  "code": 0,
  "data": {
    "sm4_vector": "2019076905",
    "recordHandler": "0108572e-4881-4644-a3b5-3e2c50286aeb",
    "timeBegin": 2342432,
    "stream_token": "RKzwpUGM",
    "stream_id": 13,
    "stream_en_key": "kO3Ahp6wkuLw6OfP",
    "length": 20,
    "server_ip": "61.241.44.161",
    "server_port": 31001,
    "cmd": "LocalRecordStream",
    "server_innerip": "10.55.130.116"
  },
  "message": "OK"
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

获取本地录像协议 (opens new window)

# 8 查询录像列表

  • 接口url: /common/video/getVideoList
  • 描述: 根据条件查询录像信息,可以跟据月来查询当前月有录像的日期,也可以根据日期和起始以及终止时间来查询录像信息。两种查询条件不能同时为空。
  • 请求方法:GET
  • 请求参数:
  • 注意事项:该接口返回mtav录像文件列表
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
sub_id String 子摄像头id,统一设置为0
month String 按月查询必填 年月(YYYYMM格式)
date String 日期查询必填 日期(YYYYMMDD格式)
start String 日期查询必填 开始时间(HHmmss格式)
end String 日期查询必填 结束时间(HHmmss格式)
  • 返回参数:
返回参数 参数类型 参数说明
rec_date String 日期
rec_count Integer 有无录像,0:无录像,1:有录像
[] String 文件名
s String 起始时间
d Integer 录像文件时长,单位:毫秒
t Integer 文件属性(从低位到高位, 第 0 位表示定时录像; 第 1 位表示手动录像; 第 2 位表示移动侦测录像; 第 3 位表示输入报警; 后面定义的类型以此类推. 0 表示否, 1 表示是)
p String 文件存储路径
  • 请求示例(有两种请求方式,示例如下):
  • a.请求示例(按月查询):
/common/video/getVideoList?
token=*******************************************************
&din=***************
&month=201705
&iotim_ticket=*******************************************************
1
2
3
4
5
  • a.返回示例(按月查询):
[
  {
    "rec_date": "2017-05-01",
    "rec_count": 1
  },
  {
    "rec_date": "2017-05-02",
    "rec_count": 1
  }
]
1
2
3
4
5
6
7
8
9
10
  • b.请求示例(按日查询):
/common/video/getVideoList?
token=*******************************************************
&din=***************
&date=20170510
&start=122200
&end=122500
&iotim_ticket=****************************************************
1
2
3
4
5
6
7
  • b.返回示例(按日查询):
[300000000000073DS44_20200903_164020.mtav]
s=16:40:20.474
d=5992
t=10000000
p=/76af9bb96199723D47c239SDFf93e044aD3/20D20-08-03/30000FD0D000002343423_20200S83F243_1432DAFD02S0.mtav
[300000000000324181_2020012303_16DFS4026.mtav]
s=16:40:26.473
d=5986
t=10000000
p=/76af9bb9619972347c2dsf36f93e044a3/2020-08-03/30000000043240000743231_20204324F0803_164FD026.mtav
1
2
3
4
5
6
7
8
9
10

# 9 获取录像文件 (旧接口,建议使用新接口10,getVideoFileDownloadUrl)

不推荐使用,推荐使用获取视频文件下载链接

  • 接口url: /common/video/getVideoStream

  • 描述: 获取录像文件,返回文件流。

  • 请求方法:GET

  • 注意事项:该接口直接返回视频流,性能较低,建议使用新接口10(getVideoFileDownloadUrl)

  • 请求参数:

请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
id String 录像列表中返回的参数
sub_id String 子摄像头id,统一设置为0

注:默认视频6秒一个,id为getVideoList返回的p

  • 请求示例:
 /common/video/getVideoStream?
token=*******************************************************
&din=***************
&id=hdfs://192.168.1.1:8020/bucket/144115194519265640/2017-05-10/144115194519265640_20170510_122205.mtav
&iotim_ticket=*******************************************************
1
2
3
4
5
  • 返回参数:
返回参数 参数类型 参数说明
fileStream fileStream 录像文件流
  • 返回示例:
Content-Type:application/octet-stream
  fileStream……
1
2

# 10. 获取视频文件下载链接(新)

  • 接口url: /common/video/getVideoFileDownloadUrl
  • 描述: 用于获取加签名后的视频文件下载链接,根据下载链接获取视频文件,可以是cos下载链接,也可以是ceph,具体要看项目配置
  • 请求方法:GET
  • 请求参数
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
id String 录像列表中返回的参数
  • 使用方式:
1.在接口8拿到文件列表的回参的p值(文件id)
2.使用id列表循环调用接口接口10,生成文件下载链接
3.根据下载链接下载mtav文件片段
1
2
3
  • 请求示例
/common/video/getVideoFileDownloadUrl?
token=*******************************************************
&id=********.mtav
&iotim_ticket=*******************************************************
1
2
3
4
  • 返回参数

    返回参数 参数类型 参数说明
    code Integer 错误码
    message String 执行结果消息
    data String 返回数据,下载链接
  • 返回示例

{
  "code": 0,
  "data": "https://testmtavtest-30035.sz.gfp.tencent-cloud.com/30dedd20c1b59f0fdfbb10a091398e34/2020-06-22/144115192371935718_20200622_095956.mtav?sign=q-sign-algorithm%3Dsha1%26q-ak%3DJwxbdHXcgrqZyWxNOcqdDnN0%26q-sign-time%3D1592806631%3B1592807231%26q-key-time%3D1592806631%3B1592807231%26q-header-list%3Dhost%3Bx-cos-content-sha1%26q-signature%3D5fd2e4c415badd2d05b7a7d7d25e2eef84d033aa",
  "message": "OK"
}
1
2
3
4
5

# 11 sharp 音视频流推送协议

•  通讯协议:TCP
•  描述:低延时获取视频方式,1秒钟之内,需要自行开发播放器
•  IP:通过平台接口获取
•  端口:port或30001
•  流程 1.腾讯微瓴-> 业务第三方 (握手)2.如果 1 握手成功后面就正常推数据块流,遇到音视频结束 type,推送结束; 3.字节序(大端)
•  握手
------------------------------------------------------------------
|  0   |  1   |  2   |   3   |   4   |   5   |   6   |     7     |
------------------------------------------------------------------
| 0x7f | 0x7f | 0x7f |   V   |        sub_vid        | stream_id |
------------------------------------------------------------------
|                         Device din                             |
------------------------------------------------------------------
|                        stream_token                            |
------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0~2 字节固定为 0x7f
• 第 3 字节节为版本号, 0-2(非加密模式),3: AES-128(AES-128 cbc为版本3,其中加密key为查询视频推流服务器时返回的stream_en_key值) 4: sm4 ecb (其中加密key为查询视频推流服务器时返回的stream_en_key值,加密向量为sm4_vector)
• 第 4~6 字节为子视频流 ID,非网关设备字段填 0。/common/video/getStreamServer接口返回的
• 第 7 字节为码流 ID,0 为主码流。(当前版本仅支持主码流)
• 8~15 字节为所请求视频的摄像头 din。
• 16~23 字节为 stream_token。
1
2
3
4
5
6
  • 响应包
---------------------------------------------------------------------
|    0  --  7    |    8  --  15   |    16 -- 23    |    24 -- 31    |
---------------------------------------------------------------------
|                              length                               |
---------------------------------------------------------------------
|     result     |       Ver      |   A   |   V    |        E       |
---------------------------------------------------------------------
|                      start timestamp high                         |
---------------------------------------------------------------------
|                      start timestamp low                          |
---------------------------------------------------------------------
|                            error info                             |
---------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
12
13
  • 说明:
• length:握手响应包数据总长度(4 字节)
• result: 响应码(1 字节,非 0 表示失败 if result =0 then errorinfo length=0)
• Ver: 版本号(1 字节 当前版本:1)
• A: 音频数据包编码( 4bit 1: AMR 2: AAC 6:G711)
• V:视频数据包编码( 4bit 1: H.264 2: H.265)
• E:加密方式(1 字节 0-2:表示不加密 3: AES-128(AES-128 cbc为版本3所使用的加密算法) 4: sm4 ecb (其中加密key为查询视频推流服务器时返回的stream_en_key值,加密向量为sm4_vector)
• start timestamp: 视频起始时间戳(8 字节)
• error info :失败错误提示字符串(length - 16 字节),result 为 0 时无此节。
1
2
3
4
5
6
7
8
  • 数据块(版本3)
---------------------------------------------------------------------
|    0  --  7    |    8  --  15   |    16 -- 23    |    24 -- 31    |
---------------------------------------------------------------------
|                      length                      |  type  | frame |
---------------------------------------------------------------------
|         encryptedLength         | 保留                            |
---------------------------------------------------------------------
|                             timestamp                             |
---------------------------------------------------------------------
|                          sequence number                          |
---------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
10
11
• length:每一帧视频数据和包头总长(长度由前 3 个字节表示)
• type:(4 bit 1:视频 2: 音频 0xF:结束帧,表示音视频结束,连接可以断开)
• frame: 帧类型 (4bit:1:表示是关键 I 帧)
• encryptedLength: 加密数据字节长度(16bit:0表示该帧无加密数据,即为原始数据;如果加密数据长度大于零时,密钥为获取服务器IP地址时返回的stream_en_key,还原原始帧数据方法为:加密数据解密后的数据,加上除去加密数据后的数据,如:收到帧数据为data[encryptedLength]+data[length-16- encryptedLength] 则解密后的数据为:decrypt(data[encryptedLength])+  data[length-16- encryptedLength])
• timestamp:时间戳(4 字节) -- 这里指的是偏移量
• sequence number: 序列号(4 字节),后跟视频裸帧数据,长度为:length-16
1
2
3
4
5
6
  • 数据块(版本2)
---------------------------------------------------------------------
|    0  --  7    |    8  --  15   |    16 -- 23    |    24 -- 31    |
---------------------------------------------------------------------
|                      length                      |  type  | frame |
---------------------------------------------------------------------
|                             timestamp                             |
---------------------------------------------------------------------
|                          sequence number                          |
---------------------------------------------------------------------
1
2
3
4
5
6
7
8
9
  • 说明:
• length:每一帧视频数据和包头总长(长度由前 3 个字节表示)
• type:(4 bit 1:视频 2: 音频 0xF:结束帧,表示音视频结束,连接可以断开)
• frame: 帧类型 (4bit:1:表示是关键 I 帧)
• timestamp:时间戳(4 字节) -- 这里指的是偏移量
• sequence number: 序列号(4 字节),后跟视频裸帧数据,长度为:length-12
1
2
3
4
5

# 12 获取本地历史录像协议

注:非NVR摄像头不可用

使用说明:

1.获取摄像头配置:IP , stream_token , recordHandler,参数均在getLocalStream (opens new window)接口获取

2.使用以下TCP握手协议

package com.tencent.weling.proto;

//请求包、响应包格式
//STX + headLen + bodyLen + headData + bodyData + ETX
//STX = 注意区分,-0x6c,为本地录像网关请求头 -0x6b为本地录像客户端请求
//ETX = 0x5D,0x5D,0x5D,0x5D, 4字节
//headLen: headData长度, 4字节,网络字节序
//bodyLen: bodyData长度, 4字节,网络字节序
//headData: head pb序列化数据
//bodyData: 音视频数据 或 握手回包序列化数据,握手请求包没有bodyData(bodyLen填0)

message MvsHead
{
    optional uint64 uint64_din          = 1;    //摄像头din
    optional uint32 uint32_sub_id       = 2;    //子设备ID
    optional uint32 uint32_version      = 3;    //协议版本号:0至2,表示不加密,3、表示AES128 ecb加密,4表示SM4 cbc加密data
    optional uint32 uint32_stream_id    = 4;    //通道类型:0-主码流,1~0x0e-辅码流(其中0x0e固定为抽帧流),0x0f-录像音视频 0x0d-本地录像,0x0c-事件流
    optional uint32 uint32_pkg_type     = 5;    //报文类型:0-数据包,1-握手请求包,2-握手回包
    optional uint32 uint32_video_type   = 6;    //视频编码类型:1-H264,2-H265, 0xffff-其他
    optional uint32 uint32_audio_type   = 7;    //音频编码类型:1-AMR,2-AAC,6-G711, 0xffff-其他
    optional uint32 uint32_seq          = 8;    //序列号,请求和响应相同
    optional uint64 uint64_timestamp    = 9;    //时间戳(对于网关数据包,该字段为视频帧时间,非当前系统时间)
    optional uint32 uint32_data_type    = 10;   //数据类型:1-视频,2-音频,0xF-(结束包,表示音视频结束,连接可以断开),0x1f-空包数据类型(用于补充数据,维持心跳连接—),0x10-人脸数据
    optional uint32 uint32_frame_type   = 11;   //数据编码格式类型:1-关键帧,2-非关键帧
	optional bytes token                =12;    //token用于验证接入权限,只限握手包使用
	optional uint32 uint32_encrypted_len = 13;  //加密数据长度
	optional uint32 uint32_encrypted_type = 14; //该参数忽略
	//以下专为本地录像所加
	optional bytes recordHandler     = 15;    //recordHandler unique id for video record
	optional uint64 timeBegin        = 16;    //代表哪一时间段内拉流开始
	optional uint64 timeEnd          = 17;    //代表哪一时间段内拉流结束
    optional uint32 frameRate        = 18;    //帧率
	optional uint32 width            = 19;    //视频宽
    optional uint32 height           = 20;   //视频高
	optional bytes md5               = 21;   //bodyData字段MD5值
}

message HandShakeRsp
{
    optional uint32 uint32_err_no       = 1;    //响应码:0-握手成功,0xfe-不支持的音视频编码,0xff-未绑定的din
    optional bytes  bytes_err_info      = 2;    //失败错误提示字符串
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

# 13 获取本地录像-硬件端

  • datapoint:20229

  • 设备收到到参数:

    {
      "din":"din",
    	"sub_din":"0",
    	"handler":"uuid",
      "start_time":324324324,
    	"end_time":3243243243234
    } 
    
    1
    2
    3
    4
    5
    6
    7
  • 设备针对seq返回消息格式:

    {
    	code: 0,
    	msg: "success",
    	data: {
    		"handler": "收到值",
    		losts: [{
    				begin_time: XXXX,
    				end_time: XXXX
    			},
    			{
    				begin_time: XXXX,
    				end_time: XXXX
    			}
    		]
    	}
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

# 14 主动断流

  • 接口url: /common/video/closeVideo
  • 描述: 主动结束视频推流,回收链路
  • 请求方法:GET
  • 请求参数:
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
din String 设备的唯一标识
subDin String 子摄像头id,统一设置为0
streamId String 0-主码流;1-子码流;默认为0
env String 0-云端推流;不为0-本地推流,此时填项目ID;默认为0
streamToken String 历史流唯一标识(这里使用token做唯一标识)
videoType String 实时流:alive,历史流:history
  • 请求示例:
 /common/video/closeVideo?
token=*******************************************************
&din=***************
&iotim_ticket=*******************************************************
1
2
3
4
  • 返回参数:
返回参数 参数类型 参数说明
code String 错误码,0表示成功,其他见错误码说明
message String 执行结果消息
  • 返回示例:
{
  "message": "OK",
  "code": 0
}
1
2
3
4

# 15 获取web历史流播放链接

  • 接口url: /common/video/getHistoryUrl
  • 描述: 查询web流的播放地址。HLS高延时方案建议hls.js对接,10至20秒,RTMP需要支持flash播放器的组件端播放
  • 请求方法:GET
  • 请求参数:
请求参数 参数类型 是否必填 参数说明
token String 鉴权参数:登录获取的动态密钥
iotim_ticket String 鉴权参数:登录获取的物联票据
wId String 设备的唯一标识,和din不能同时为空(历史原因这里有两个设备主键都能唯一标识设备)
timeBegin Long 启始时间
length Integer 播放时长(单位秒),不建议一次请求过长时间,历史流建议观看15分钟换一个链接
playBackRate Integer 倍速标志,默认1
din String 设备的唯一标识,和wId不能同时为空
  • 返回参数:
返回参数 参数类型 参数说明
code String 错误码,0表示成功,其他见错误码说明
message String 结果消息
data JSON 查询结果
rtmp String rtmp推流地址,两小时内有效,过期后重新获取
url String hls推流地址,两小时内有效,过期后重新获取
flv String flv推流地址,两小时内有效,过期后重新获取

返回示例:

{
  "code": 0,
  "data": {
    "rtmp": "rtmp://ip:port/hls1935/300000000000****_token?ticket=******",
    "flv": "http://ip:port/hls1935/300000000000****_toke.flv?ticket=******",
    "url": "http://address/hls/300000000000****_toke.m3u8?ticket=*****"
  },
  "message": "OK"
}
1
2
3
4
5
6
7
8
9