LiveNVR Onvif/RTSP流媒体服务
功能模块
设备接入
支持RTSP/RTMP/HTTP-FLV/HLS等直播流接入
支持Onvif协议接入设备;
支持Onvif协议的发现以及探测;
实时直播
支持通道定时快照;
根据不同客户端平台进行全平台直播(Web、Android、iOS、H5);
支持对接第三方CDN直播;
支持推流第三方RTSP服务;
摄像机控制
支持对摄像机进行Onvif PTZ控制;
支持对摄像机进行Onvif焦距缩放控制;
配置管理
支持Web管理;
支持Web配置通道,预览等;
支持GB28181国标级联;
二次开发接口说明
API采用Restful风格的Http协议,全部请求都使用Get方式,字符不区分大小写。基本结构如下:
http://<IP>:<Port>/api/<Version>/<Action>?<Param1>=<value>&<Param2>=<Value>&.....
参数
参数名称 | 定义 | 说明 |
IP | Platform Address | IP地址 |
Port | Platform Port | 通讯端口 |
Version | API Version | API版本 |
Action | Action | 执行的操作 |
Param | Action Parameter | 操作所使用的参数,可以有多个参数,每个参数对应一个Value。 |
Value | Parameter Value | 参数值,如果Value的字符串中出现&等特殊字符,则必须用””包住Value。 |
返回值
调用API会返回Json字符串,代表操作返回的结果
{
"LiveQing" : {
"Body" : {
……
},
"Header" : {
"CSeq" : "1",
"ErrorNum" : "200",
"ErrorString" : "Success OK",
"MessageType" : "MSG_SC_API_ACK",
"Version" : "1.0"
}
}
}
接口列表
登录LiveNVR
接口: /api/v1/login?username=xxx&password=xxx
参数
名称 解释 含义 Username 登陆用户名 - Password 登陆密码 经过MD5加密的32位字符 返回: 200 OK or 401 Unauthorized
{ "LiveQing" : { "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”
注销登陆
接口: /api/v1/logout
返回: 200 OK 401 Unauthorized
{ "LiveQing" : { "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_LOGOUT_ACK", "Version" : "1.0" } } }
操作: 再次请求接口需要重新登陆
修改密码
接口: /api/v1/modifypassword?oldpassword=xxx&newpassword=xxx
参数
名称 含义 备注 Oldpassword 旧密码 经过MD5加密的字符 Newpassword 新密码 经过MD5加密的字符 返回: 200 OK or 401
{ "LiveQing" : { "Body" : { "Token" : "8b65982a99664d19bcccc35ff8d2acaf" }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_MODIFY_PASSWORD_ACK", "Version" : "1.0" } } }
操作: 修改密码成功会返回新的token
获取LiveNVR服务信息
接口:/api/v1/getserverinfo
返回
名称 含义 备注 Server 服务器软件版本信息 - RunningTime 服务器累计运行时长信息 - Hardware 服务器硬件版本信息 - InterfaceVersion 接口服务版本信息 - 报文
{ "LiveQing" : { "Body" : { "Hardware" : "x86", "InterfaceVersion" : "v1", "RunningTime" : "30 Days 0 Hours 1 Mins 40 Secs", "Server" : "LiveNVR/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" } } }
操作: 显示
【视频广场】所有启用通道预览
接口:/api/v1/getchannels[?channel=1]
参数
名称 含义 备注 channel 查询指定通道号的信息 可选参数。不带channel参数或者channel小于0查看全部通道信息 online 通道在线状态(true、false) 可选参数。 start 分页开始,从零开始 可选参数。 limit 分页大小 可选参数。 q 查询参数 可选参数。 返回:
- 所有设备列表信息,在线&不在线 通道(包含快照信息)
- 通道名称、通道号、通道快照、通道是否在线
名称 含义 备注 Channel 通道号 通道号 Name 通道名称 通道名称 Online 是否在线 1在线/0离线 SnapURL 快照地址 返回为快照的相对网络地址
报文
{ "LiveQing" : { "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列表显示
播放单个通道直播
接口:/api/v1/getchannelstream?channel=1&protocol=FLV
参数
名称 含义 备注 Channel 通道号 - Protocol 获取直播的协议 FLV/HLS/WS_FLV/RTMP/RTSP 返回: 直播流地址URL
{ "LiveQing" : { "Body" : { "ChannelName" : "通道名" "URL" : "rtmp://{host}:10035/hls/stream_1" }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_GET_CHANNEL_STREAM_ACK", "Version" : "1.0" } } }
注:返回的URL中带有{host}占位符,{host}即为api接口请求中的IP字段,如果返回的URL为hls地址,那么直接为/hls/stream_1.m3u8地址,需要前端自动拼接成LiveNVR HTTP播放地址,比如LiveNVR的web访问地址为:http://192.168.66.189:10800/,那么返回的hls应该拼接为http://192.168.66.189:10800/hls/stream_1.m3u8,rtmp地址应该拼接为:rtmp://192.168.66.189:10035/hls/stream_1;
- 操作:调用播放器进行播放
获取LiveNVR基本配置信息
接口: /api/v1/getbaseconfig
返回: 基础配置信息表
名称 解释 备注 ServiceLanPort LiveNVR服务监听端口 ReadOnly ServiceLanIP LiveNVR服务本地地址 ReadOnly ServiceWanIP LiveNVR服务公网端口 暂时不启作用 ServiceWanPort LiveNVR服务公网地址 暂时不启作用 ChannelSnapInterval 通道快照间隔 单位为分钟 RTMPPort LiveNVR配套的rtmp服务器端口 默认10035 RTSPPort LiveNVR配套的rtsp服务器端口 默认0,表示没有开启rtsp服务 报文
{ "LiveQing" : { "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" } } }
操作:显示
发现Onvif设备
接口: /api/v1/discoverdevices
返回: 200 OK
{ "LiveQing" : { "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" } } }
探测设备信息
接口: /api/v1/probedevice?ip=192.168.66.222&username=admin&password=admin
参数:
名称 含义 备注 Username 登陆用户名 设备用户名 Password 登陆密码 设备密码(明文) 返回:200 OK
{ "LiveQing" : { "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" } } }
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、apertureoutspeed 动作速度 例如:5 protocol 摄像机接入的协议 暂时仅支持ONVIF接入的摄像机 reserve 保留 暂未使用
只有Onvif类型接入的设备才能支持云台控制功能,同时,设备必须有云台,他才会转动;
单个通道配置
接口: /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不启用 返回: 200 OK
{ "LiveQing" : { "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_SET_CHANNEL_CONFIG_ACK", "Version" : "1.0" } } }
操作:显示配置成功,即时生效!
获取LiveNVR所有通道信息
接口: /api/v1/getchannelsconfig
返回: 通道列表数组信息
{ "LiveQing" : { "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" } } }
操作:显示,单个通道可禁用/启用/修改配置
抓取图片
接口:/api/v1/getsnap?channel=1
参数:
名称 含义 备注 channel 通道号 - 返回:image/jpeg格式,http body为图片数据
开始录像
接口:/api/v1/startrecord?channel=1&duration=3600
参数:
名称 含义 备注 channel 通道号 - duration 录像时长,单位秒 缺省或者为0时,一直录像,直到执行stoprecord接口 返回:200 OK
{ "LiveQing" : { "Header" : { "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_START_RECORD_ACK", "Version" : "1.0" } } }
停止录像
接口:/api/v1/stoprecord?channel=1
参数:
名称 含义 备注 channel 通道号 - 返回:200 OK
{ "LiveQing" : { "Header" : { "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_STOP_RECORD_ACK", "Version" : "1.0" } } }
获取国标GB28181级联配置
接口:/api/v1/getgbconfig
返回:
平台地址和端口
平台验证信息,例如:SIP ID, SIP 域, 接入密码 等
{ "LiveQing" : { "Body" : { "IP" : "127.0.0.1", "Port" : "15060", "Serial" : "34020000002000000001", "Realm" : "3402000000", "User" : "34020000001180000187", "Password" : "12345678", "LocalPort": 0, "CommandTransport" : "UDP", "Online": true, "RegisterInterval": 300, "KeepaliveInterval": 60, "Status": "OK", "Enable": true, "AllowControl": true, "RTCPKeepalive": true, "Log": true }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_GET_GB_ACK", "Version" : "1.0" } } }
操作:显示成功
设置国标GB28181级联配置
接口: /api/v1/setgbconfig?Serial=34020000002000000001&Realm=3402000000&IP=127.0.0.1&Port=15060&LocalPort=0&User=34020000001180000187&Password=12345678&CommandTransport=UDP&RegisterInterval=300&KeepaliveInterval=60&RTCPKeepalive=true&AllowControl=true&Enable=true&Log=true
返回: 200 OK
{ "LiveQing" : { "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_SET_GB_ACK", "Version" : "1.0" } } }
操作:显示配置成功
获取LiveNVS级联配置
接口:/api/v1/getnvsconfig
返回:
平台地址和端口
平台验证信息,例如:设备序列号, 设备名称, 接入密码 等
{ "LiveQing" : { "Body" : { "IP" : "127.0.0.1", "Port" : "10812", "UID" : "LiveNVR001", "UName" : "LiveNVR001", "Token" : "12345678", "Status": "Running", "Enable": true }, "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_GET_NVS_ACK", "Version" : "1.0" } } }
操作:显示成功
设置LiveNVS级联配置
接口: /api/v1/setnvsconfig?UID=LiveNVR001&UName=LiveNVR001&IP=127.0.0.1&Port=10812&Token=12345678&Enable=true
返回: 200 OK
{ "LiveQing" : { "Header" : { "CSeq" : "1", "ErrorNum" : "200", "ErrorString" : "Success OK", "MessageType" : "MSG_SC_SERVER_SET_NVS_ACK", "Version" : "1.0" } } }
操作:显示配置成功
重启接口
接口: /api/v1/restart
返回: 200 OK
操作: 显示成功