接口协议适用平台:(Windows&Linux)
1. 接口示列
API采用Restful风格的Http协议,全部请求都使用Get方式,字符不区分大小写。基本结构如下:
http://
- 参数
参数名称 | 定义 | 说明 |
---|---|---|
IP | Platform Address | IP地址 |
Port | Platform Port | 通讯端口 |
Version | API Version | API版本 |
Action | Action | 执行的操作 |
Param | Action Parameter | 操作所使用的参数,可以有多个参数,每个参数对应一个Value。 |
Value | Parameter Value | 参数值,如果Value的字符串中出现&等特殊字符,则必须用””包住Value。 |
- 返回值
调用API会返回Json字符串,代表操作返回的结果
|
2. 接口列表
2.1. 登录EasyNVR
- 接口: /api/v1/login?username=xxx&password=xxx
- 参数
名称 | 解释 | 含义 |
---|---|---|
Username | 登陆用户名 | - |
Password | 登陆密码 | 经过MD5加密的32位字符 |
返回: 200 OK or 401 Unauthorized
{"EasyDarwin" : {"Body" : {"Token" : "a19cb5f6e7d2449d8d24c8a0fc554ca7"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_LOGIN_ACK","Version" : "1.0"}}}操作: 登录,登陆后会返回token,以后调用接口需要在cookie中携带token信息“token=a19cb5f6e7d2449d8d24c8a0fc554ca7”
2.2. 注销登陆
- 接口: /api/v1/logout
返回: 200 OK 401 Unauthorized
{"EasyDarwin" : {"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_LOGOUT_ACK","Version" : "1.0"}}}操作: 再次请求接口需要重新登陆
2.3. 修改密码
接口: /api/v1/modifypassword?oldpassword=xxx&newpassword=xxx
参数
名称 | 含义 | 备注 |
---|---|---|
Oldpassword | 旧密码 | 经过MD5加密的字符 |
Newpassword | 新密码 | 经过MD5加密的32位字符 |
返回: 200 OK or 401
{"EasyDarwin" : {"Body" : {"Token" : "8b65982a99664d19bcccc35ff8d2acaf"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_MODIFY_PASSWORD_ACK","Version" : "1.0"}}}操作: 修改密码成功会返回新的token
2.4. 获取EasyNVR服务信息
- 接口:/api/v1/getserverinfo
- 返回
名称 | 含义 | 备注 |
---|---|---|
Server | 服务器软件版本信息 | - |
RunningTime | 服务器累计运行时长信息 | - |
Hardware | 服务器硬件版本信息 | - |
InterfaceVersion | 接口服务版本信息 | - |
报文
{"EasyDarwin" : {"Body" : {"Hardware" : "x86","InterfaceVersion" : "v1","RunningTime" : "30 Days 0 Hours 1 Mins 40 Secs","Server" : "EasyNVR/1.1 (Build/16.1020; Platform/Win32; State/Development; )"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_INFO_ACK","Version" : "1.0"}}}操作: 显示
2.5. 【视频广场】显示所有在线通道预览
- 接口:/api/v1/getchannels[?channel=1]
- 参数
名称 | 含义 | 备注 |
---|---|---|
channel | 查询指定通道号的信息 | 可选参数。不带channel参数或者channel小于0查看全部通道信息 |
- 返回:
- 所有设备列表信息,在线&不在线 通道(包含快照信息)
- 通道名称、通道号、通道快照、通道是否在线
名称 | 含义 | 备注 |
---|---|---|
Channel | 通道号 | 通道号 |
Name | 通道名称 | 通道名称 |
Online | 是否在线 | 1在线/0离线 |
SnapURL | 快照地址 | 返回为快照的相对网络地址 |
报文
{"EasyDarwin" : {"Body" : {"ChannelCount" : "2","Channels" : [{"Channel" : 1,"Name" : "channel1","Online" : 1,"SnapURL" : "/snap/1/2016-10-24/20161024125212.jpg"},{"Channel" : 2,"Name" : "channel2","Online" : 0,"SnapURL" : ""}]},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_GET_CHANNELS_ACK","Version" : "1.0"}}}操作: H5列表显示
2.6. 播放单个通道直播
- 接口:/api/v1/getchannelstream?channel=1&protocol=RTMP
- 参数
名称 | 含义 | 备注 |
---|---|---|
Channel | 通道号 | - |
Protocol | 获取直播的协议 | RTMP/HLS |
- 返回: 直播流地址URL
|
注:返回的URL中带有{host}占位符,{host}即为api接口请求中的IP字段,如果返回的URL为hls地址,那么直接为/hls/stream_1.m3u8地址,需要前端自动拼接成EasyNVR HTTP播放地址,比如EasyNVR的web访问地址为:http://192.168.66.189:10080/,那么返回的hls应该拼接为http://192.168.66.189:10080/hls/stream_1.m3u8,rtmp地址应该拼接为:rtmp://192.168.66.189:10035/hls/stream_1;
- 操作:调用播放器进行播放
2.7. 视频播放心跳
- 接口: /api/v1/touchchannelstream?channel=1&line=local&protocol=rtmp
- 参数: 同接口6
返回: 直播流地址
{"EasyDarwin" : {"Body" : {"ChannelName" : "通道名""URL" : "rtmp://{host}:10035/hls/stream_1"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_TOUCH_CHANNEL_STREAM_ACK","Version" : "1.0"}}}操作:播放视频心跳,60秒内发送一次,否则自动停止推流
2.8. 获取EasyNVR基本配置信息
- 接口: /api/v1/getbaseconfig
- 返回: 基础配置信息表
名称 | 含义 | 备注 |
---|---|---|
ServiceLanPort | EasyNVR服务监听端口 | ReadOnly |
ServiceLanIP | EasyNVR服务本地地址 | ReadOnly |
ServiceWanIP | EasyNVR服务公网端口 | 暂时不启作用 |
ServiceWanPort | EasyNVR服务公网地址 | 暂时不启作用 |
ChannelSnapInterval | 通道快照间隔 | 单位为分钟 |
NginxRTMPPort | EasyNVR配套的rtmp服务器端口 | 默认10935 |
报文
{"EasyDarwin" : {"Body" : {"ChannelSnapInterval" : "120","NginxRTMPPort" : "10035","ServiceLanIP" : "192.168.66.222; 127.0.0.1; ","ServiceLanPort" : "10010","ServiceWanIP" : "none-config","ServiceWanPort" : "10010"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_BASE_CONFIG_ACK","Version" : "v1"}}}操作:显示
2.9. 设置EasyNVR基本配置信息
接口: /api/v1/setbaseconfig?ChannelSnapInterval=120&NginxRTMPPort=10035&ServiceLanPort=10010&ServiceWanIP=”none-config”&ServiceWanPort=10010
参数:
返回: 200 OK
{"EasyDarwin" : {"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_SET_BASE_CONFIG_ACK","Version" : "1.0"}}}操作:显示配置成功,重启后生效
2.10. 发现Onvif设备
- 接口: /api/v1/discoverdevices
- 返回: 200 OK{"EasyDarwin" : {"Body" : {"ChannelCount" : "1","Channels" : [{"IP" : "192.168.66.222","Onvif" : "/onvif/devices","Port" : 8080}]},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_DISCOVER_DEVICES_ACK","Version" : "1.0"}}}
2.11. 探测设备信息
接口: /api/v1/probedevice?ip=192.168.66.222&username=admin&password=admin
参数:
名称 | 含义 | 备注 |
---|---|---|
Username | 登陆用户名 | 设备用户名 |
Password | 登陆密码 | 设备密码(明文) |
- 返回:200 OK{"EasyDarwin" : {"Body" : {"IP" : "192.168.66.222","Onvif" : "/onvif/devices","Password" : "admin","Port" : "8080","Rtsp" : "rtsp://192.168.66.222:554/11","UserName" : "admin"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_PROBE_DEVICE_ACK","Version" : "1.0"}}}
2.12. Onvif云台控制
- 接口:/api/v1/ptzcontrol?channel=1&actiontype=continuous&command=down&speed=5&protocol=onvif
- 参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 通道ID | 例:1 |
actiontype | 动作类型 | continuous或者single |
command | 动作命令 | stop停止、up向上移动、down向下移动、left向左移动、right向右移动、zoomin、zoomout、focusin、focusout、aperturein、apertureout |
speed | 动作速度 | 例如:5 |
protocol | 摄像机接入的协议 | 暂时仅支持ONVIF接入的摄像机 |
reserve | 保留 | 暂未使用 |
只有Onvif类型接入的设备才能支持云台控制功能,同时,设备必须有云台,他才会转动;
2.13. 单个通道配置
接口: /api/v1/setchannelconfig?Cdn=&Channel=2&Enable=0&IP=192.168.66.22&Name=channel2&Onvif=”/device/service”&Password=admin&Port=8080&Protocol=RTSP&Rtsp=”rtsp//192.168.66.22/22”&UserName=admin&OnDemand=1&Audio=1&Reserve2=0
参数
名称 | 含义 | 备注 |
---|---|---|
channel | 设置的通道号 | 例:1 |
Enable | 通道是否启用 | 1启用、0禁用 |
IP | 摄像机IP地址 | 例如:192.168.66.222 |
Name | 摄像机名称 | 例如:测试通道 |
Port | 摄像端口 | 例如:554、8080 |
Protocol | 摄像机接入的协议 | ONVIF、RTSP |
Username | 摄像机登陆用户名 | 例如:admin |
Password | 摄像机登陆密码 | 例如:admin |
RTSP | 摄像机的RTSP地址 | 例如:rtsp://192.168.66.222/11 |
ONVIF | 摄像机的Onvif地址 | /onvif/devices |
TransProtocol | 传输协议 | 选项:TCP、UDP |
Cdn | 推送的CDN地址 | rtmp://rtmp.aliyun.com/live/209?sign=faefabe&tm=20161005190329 |
OnDemand | 是否按需直播 | 1启用、0不启用 |
Audio | 是否启用音频输入 | 1启用、0不启用 |
Reserve2 | 保留参数2 | 1启用、0不启用 |
Reserve3 | 开启录像 | 1启用、0不启用(仅限录像版) |
返回: 200 OK
{"EasyDarwin" : {"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_SET_CHANNEL_CONFIG_ACK","Version" : "1.0"}}}操作:显示配置成功,即时生效!
2.14. 获取EasyNVR所有通道信息
- 接口: /api/v1/getchannelsconfig
返回: 通道列表数组信息
{"EasyDarwin" : {"Body" : {"ChannelCount" : "16","Channels" : [{"Cdn" : "","Channel" : 1,"Enable" : 1,"IP" : "192.168.66.222","Name" : "channel1","OnDemand" : 1,"Online" : 1,"Onvif" : "/onvif/devices","Password" : "admin","Port" : 8080,"Protocol" : "RTSP","Rtsp" : "rtsp://192.168.66.222/11","UserName" : "admin","Audio" : 0"Reserve2" : 0},{"Cdn" : "","Channel" : 2,"Enable" : 0,"IP" : "192.168.66.22","Name" : "channel2","OnDemand" : 1,"Online" : 0,"Onvif" : "/onvif/devices","Password" : "admin","Port" : 8080,"Protocol" : "RTSP","Rtsp" : "rtsp://192.168.66.22/22","UserName" : "admin","Audio" : 1},……]},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_GET_CHANNELS_CONFIG_ACK","Version" : "1.0"}}}操作:显示,单个通道可禁用/启用/修改配置
2.15. 抓取图片
接口:/api/v1/getsnap?channel=1
参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 设置的通道号 | - |
- 返回:image/jpeg格式,http body为图片数据
2.16. 开始录像(仅限录像版)
接口:/api/v1/startrecord?channel=1&duration=3600
参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 设置的通道号 | - |
duration | 录像时长,单位秒 | 缺省或者为0时,一直录像,直到执行stoprecord接口 |
- 返回:200 OK{"EasyDarwin" : {"Header" : {"ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_START_RECORD_ACK","Version" : "1.0"}}}
2.17. 停止录像(仅限录像版)
接口:/api/v1/stoprecord?channel=1
参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 设置的通道号 | - |
- 返回:200 OK{"EasyDarwin" : {"Header" : {"ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_STOP_RECORD_ACK","Version" : "1.0"}}}
2.18. 请求回看通道设备列表(仅限录像版)
GET /query_devices
返回结果示例:
|
字段 | 说明 |
---|---|
devices | 设备 ID 数组,每个id为’stream_’拼接上通道号,如通道1为stream_1 |
2.19. 按月检索录像接口(仅限录像版)
GET /query_record_monthly?id=xxx&period=yyyyMM
参数 | 类型 | 说明 |
---|---|---|
id | string | 指明设备id,每个id为’stream_’拼接上通道号,如通道1为stream_1 |
period | string | 格式yyyyMM, 指明查询哪个月的录像记录 |
返回结果示例:
|
字段 | 类型 | 说明 |
---|---|---|
flags | string | 固定长度31,每一位只能是”1”或”0”, 分别表示当日有没有录像 |
2.20. 按日检索录像接口(仅限录像版)
GET /query_record_daily?id=xxx&period=yyyyMMdd
参数 | 类型 | 说明 |
---|---|---|
id | string | 指明设备id, 每个id为’stream_’拼接上通道号,如通道1为stream_1 |
period | string | 格式yyyyMMdd, 指明查询哪一天的录像记录 |
返回结果示例:
|
字段 | 类型 | 说明 |
---|---|---|
start_time | string | 录像开始时间, 格式: yyyyMMddHHmmss |
duration | integer | 录像历时,单位:秒 |
hls | string | 录像文件地址 |
snap | string | 录像快照地址 |
2.21. 下载录像视频(仅限录像版)
GET /download_video?id=xxx&time=yyyyMMddHHmmss
参数 | 类型 | 说明 |
---|---|---|
id | string | 指明设备id, 每个id为’stream_’拼接上通道号,如通道1为stream_1 |
time | string | 格式yyyyMMddHHmmss, 所要下载录像视频的起始录制时间 |
2.22. 获取第三方平台配置
接口:/api/v1/getthirdplatformconfig
返回:
- 第三方平台类型枚举,例如:EasyDSS视频云平台(EasyDSS),QQ互联云平台(QQConnect),海康萤石云平台(EZVIZ)
- 平台地址和端口
- 平台验证信息,例如:用户名、密码、AppKey、SecretKey{"EasyDarwin" : {"Body" : {"ThridPlatform" : "EasyDSS","ThridPlatformAliveInterval" : "90","ThridPlatformCustomize" : "dev","ThridPlatformIP" : "www.easydss.com","ThridPlatformPort" : "10000","ThridPlatformToken" : "123456","ThridPlatformUID" : "NVR00000002"},"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_GET_THRID_PART_PLATFORM_ACK","Version" : "1.0"}}}
操作:显示
2.23. 设置第三方平台配置
- 接口: /api/v1/setthirdplatformconfig?ThridPlatform=EasyDarwin&ThridPlatformIP=www.easydss.com&ThridPlatformPort=10000&ThridPlatformUID=NVR00000002&ThridPlatformAliveInterval=90&ThridPlatformCustomize=dev
返回: 200 OK
{"EasyDarwin" : {"Header" : {"CSeq" : "1","ErrorNum" : "200","ErrorString" : "Success OK","MessageType" : "MSG_SC_SERVER_SET_THRID_PART_PLATFORM_ACK","Version" : "1.0"}}}操作:显示配置成功,重启后生效!
2.24. 重启接口
- 接口: /api/v1/restart
- 返回: 200 OK
- 操作: 显示成功