白季飞龙的个人主页

萤石云接口分析

萤石云拉流接口

萤石云拉流接口主要支持以下四种协议:

  1. 苹果公司的HLS协议 延迟较高 支持Web端
  2. Adobe公司的RTMP协议 延迟适中 Web端需要启用Flash插件 Java拉流端没有可靠的RTMP解析库
  3. 萤石自由的EZOPEN协议 延迟较低 支持回放 官方完全不支持Web端 名字带Open,不是指协议是开放的,指的是(萤石云)开放平台的协议。实际上除了对协议URL的定义外,找不到任何资料
  4. 萤石私有协议。看完文档后,估计这是一个不存在的协议,实际上指的应该是对EZOPEN的DLL的二次包装,即各平台的SDK

EZOPEN协议对各平台的支持情况

萤石云所用各协议对时间戳的支持情况

服务端获取指定时间段录像的几种方式:

  1. 提前录制视频,然后根据起止时间截取视频。但是录制的视频不带有原始录制的时间戳,会有数秒的误差。萤石云录制的视频右下角都有时间戳水印,如果可以使用OCR识别,可以将视频的时间误差减少到一秒以内。 缺点: 无法进行失败重试
  2. 使用EZOPEN的Linux版的DLL,在Linux服务器上向萤石云服务器拉取指定时间段的视频。但是此方案可能存在几个问题: 1. 只有Linux版的动态链接库,开发平台难以测试; 2. 这是用于客户端的动态链接库,稳定性与可靠性都不能保证; 3. 官方文档没有提到支持Linux,只是在下载区提供了Linux平台的Demo,不确定能否跑得起来,而且提取到的视频很可能已经被萤石云二次加密解不了码 缺点: 此方案必定费事费力,而且不一定能成功
  3. 萤石云的App提供了历史回放功能,所以摄像头录制的视频在萤石云上肯定有历史存档。如果萤石云能开放相关接口,就可以方便准确地获取某一时间段的历史回放。缺点: 需要萤石云的支持

萤石云的工单系统挺醉人的,我提交了两个工单,大意都是问EZOPEN协议支不支持Java,一个工单的回复是JavaScript马上就支持了,另一个工单的回复是C++支持。

萤石云HTTP接口

萤石云的HTTP接口主要用于摄像头的控制与帐号的管理

部分接口调用示例:

### 获取令牌

POST https://open.ys7.com/api/lapp/token/get
Content-Type: application/x-www-form-urlencoded

appKey=xxx&appSecret=yyy

> {%
client.assert(response.body["code"] === "200", "Failed");
client.global.set("token", response.body["data"]["accessToken"]);
 %}

### 获取直播列表

POST https://open.ys7.com/api/lapp/live/video/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 获取临时直播地址

POST https://open.ys7.com/api/lapp/live/address/limited
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1&expireTime=300

### 启用直播

POST https://open.ys7.com/api/lapp/live/video/open
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&source=C58828827:1

### 禁用直播

POST https://open.ys7.com/api/lapp/live/video/close
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&source=C58828827:1

### 获取直播地址

POST https://open.ys7.com/api/lapp/live/address/get
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&source=C58828827:1

### 获取直播地址(ws格式)

POST https://open.ys7.com/api/lapp/live/ws/address/get
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&source=C58828827:1

### 获取用户流量消耗

POST https://open.ys7.com/api/lapp/traffic/user/total
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 抓拍图片

POST https://open.ys7.com/api/lapp/device/capture
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1

### 获取设备列表

POST https://open.ys7.com/api/lapp/device/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 获取摄像头列表

POST https://open.ys7.com/api/lapp/camera/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 获取好友列表

POST https://open.ys7.com/api/lapp/friend/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 获取共享列表

POST https://open.ys7.com/api/lapp/share/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}

### 获取设备状态

POST https://open.ys7.com/api/lapp/device/status/get
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827

### 获取设备信息

POST https://open.ys7.com/api/lapp/device/info
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827

### 获取设备功能列表

POST https://open.ys7.com/api/lapp/device/capacity
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827

### 遮蔽镜头

POST https://open.ys7.com/api/lapp/device/scene/switch/set
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&enable=0

### 云台上移

POST https://open.ys7.com/api/lapp/device/ptz/start
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1&direction=0&speed=1

### 云台下移

POST https://open.ys7.com/api/lapp/device/ptz/start
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1&direction=1&speed=0

### 云台左移

POST https://open.ys7.com/api/lapp/device/ptz/start
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1&direction=2&speed=2

### 云台右移

POST https://open.ys7.com/api/lapp/device/ptz/start
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827&channelNo=1&direction=3&speed=2

### 获取设备报警信息列表

POST https://open.ys7.com/api/lapp/alarm/list
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827

### 获取云存储服务状态与信息

POST https://open.ys7.com/api/lapp/cloud/storage/device/info
Content-Type: application/x-www-form-urlencoded

accessToken={{token}}&deviceSerial=C58828827

文章首发: https://baijifeilong.github.io


漫漫路,莫论逍遥;潜心修,只为悟道