EasyNVR互联网直播解决方案
一、前言
1.1 方案背景
传统监控行业里面,前端监控摄像机、流媒体视频服务器、视频监控客户端,都在一个内网里面,配一台电脑开个监控终端,再配多个NVR网络硬盘录像机做一些摄像机的录像存储、上电视墙,而且现在的大部分监控设备和监控现场还保留着目前的格局,小到一个商铺、一个公司范围内的监控,再到一个园区监控、一个仓库监控、一个农业园林监控、一个养殖场监控、一个大型小区的监控,再大到一个城市级别的公安监控网、电力监控网、交通路网监控的大局域网监控,在这些监控场景下,客户终端出不了监控的内网,无法做到互联网的实时监控与录像回放,虽然现在也有一些个别大的监控项目,会搞一个网关机器,将视频服务映射到公网,但始终都是小规模使用,上不了量,成不了监控云平台。
尤其是在传统行业监控与互联网行业直播的衔接上面,缺少成熟的解决方案,能够利用现有的监控基础设施,对接到互联网,视频监控也能够像电视、直播那样,将校园课堂直播、校庆活动直播、企业年会直播、线下活动直播、旅游景区直播等功能做的很完美,不需要太多的硬件成本,利用现有的安防摄像机、NVR资源,就能建立一个自己的互联网视频直播平台,能在网页、手机、微信上看视频。
1.2 方案目标
EasyNVR建立了一套完整的互联网直播解决方案,支持基本的用户和权限管理,能够通过简单的摄像机通道配置、云平台对接配置、CDN配置等,将统监控行业里面的高清网络摄像机IP Camera、NVR设备接入到EasyNVR,EasyNVR能够将这些视频源的音视频数据采集到EasyNVR服务端,进行全平台终端直播。并且EasyNVR能够将视频源的直播数据对接到第三方视频平台、CDN网络,实现互联网直播分发,可广泛应用于景区直播、明厨亮灶、幼儿园监控、平安工地等各种项目。
二、方案概述
2.1 解决方案概述
EasyNVR通过标准的Onvif、RTSP协议将网络中各种厂家的IP摄像机、NVR、编码器等数据源设备接入到EasyNVR服务通道中,EasyNVR可以对通道进行数据源设备配置的查看、修改和删除,对有效配置的通道可以进行视频源的直播。同时,EasyNVR还支持将通道视频推送到第三方流媒体服务、CDN等标准RTMP服务器中,进行直播分发。EasyNVR可以对接第三方平台,例如:EasyDSS视频云平台等云视频平台,实现互联网级的视频平台服务。
2.2 架构设计
内网直连、公网自建服务器、公网CDN
2.3 二次开发
我们通常在架构一套视频应用时,将整个架构设计为3层:硬件设备层、视频能力层、视频应用层:
硬件设备层:包括各种IPCamera、NVR视频设备,主要的规格需求就是RTSP/Onvif协议支持;
视频能力层:将视频硬件设备接入,再进行流媒体直播、流媒体录像、流媒体回放、设备控制等各种与设备对接的功能,承上启下,对应用层提供各种功能调用的HTTP接口输出;
视频应用层:应用层调用能力层的各种HTTP接口,开发多种多样的视频应用业务,再也不用再烦心各种各样型号的设备接入调用了;
注:许多接触到EasyNVR的开发者都会提出关于EasyNVR设备分组和账户设备关系映射的问题,我们参考目前大部分的视频能力输出平台的做法,EasyNVR只做了唯一的用户/密码(类比appkey/secretkey)管理,应用层调用EasyNVR的登录接口,获取到本次EasyNVR视频能力平台操作的token,后续只要在操作的接口中携带token,就可以调用EasyNVR的各种能力输出了!至于具体的设备、用户、权限等各种关系管理,都留在各个客户的应用系统中,自行灵活开发!
三、功能模块
3.1 设备接入
- 支持RTSP协议接入设备;
- 支持Onvif协议接入设备;
- 支持Onvif协议的发现以及探测;
3.2 实时直播
- 支持通道定时快照;
- 根据不同客户端平台进行全平台直播(Web、Android、iOS、H5);
- 支持对接第三方CDN直播(尚未开放);
- 支持对接第三方云平台直播;
3.3 摄像机控制
- 支持对摄像机进行Onvif PTZ控制;
- 支持对摄像机进行Onvif焦距缩放控制;
3.4 配置管理
- 支持Web管理;
- 支持Web配置通道,预览等;
四、云平台接入
4.1 EasyDSS视频云平台接入
EasyNVR支持接入EasyDarwin视频云平台,能够将EasyNVR通道中的摄像机以公网摄像机的形式对接到云端,云端可以对EasyNVR通道中的摄像机进行云配置、云直播、云控制、云存储、云转码、云回放。
也可以根据自己的需求部署私有的EasyDarwin视频云平台,将传统的网络摄像机设备用EasyNVR对接到私有的EasyDarwin云平台,进行统一接入管理。
4.1 其他视频云平台接入
同时EasyNVR支持对接到第三方视频云平台,例如萤石云、阿里云、腾讯云等平台。由于萤石云、阿里云、腾讯云等较大的用户基数,EasyNVR支持对于常见流媒体云平台的对接,丰富接入的应用场景,解决了硬件接入限制以及传统的硬件及软件限制。
五、方案技术要点
5.1 NVR技术特点
通过RTSP协议接入传统网络摄像机、NVR、编码器等,使用RTSP协议接入能兼容市面上绝大多数网络摄像机等源设备,最大程度的提高EasyNVR的硬件兼容性;
EasyNVR还可通过Onvif发现,扫描到局域网内接入的支持Onvif协议的摄像机,主要用来简化摄像机配置,以及最大程度的兼容世面上的摄像机云台控制,避免采用SDK定制的繁琐以及不通用性;
EasyNVR在传统NVR只支持通道预览的基础上增加了直播特性,支持RTSP、RTMP、HLS直播,并支持将直播流推送至指定的CDN,丰富了直播选项,更大程度上开放了用户的使用方式;
EasyNVR更加入了平台接入的功能,支持市面上主流的流媒体云平台,包括EasyDarwin云平台、阿里云、腾讯云等第三方流媒体云平台;
5.2 性能指标
- 16/64/128/512/1000通道可选;
- 每个通道支持同时进行RTMP、HLS、CDN推送直播;
- 由高性能服务器nginx负责音视频流的分发;
- 采用统一的RESTful API对外提供接口服务,H5标准支持;
5.3 二次开发
通常情况下,我们将一套视频的应用平台划分为3个部分:硬件设备层、视频能力平台层(PaaS层)、视频应用平台层(SaaS层),EasyNVR的定位就是能力平台PaaS层,将各种硬件厂家的摄像机接入进来,再做能力发布,提供给应用SaaS层调用,本文档中的”第六章”中提供了EasyNVR的API接口文档,用户只需要根据API接入,就可以将各种摄像机接入到应用平台进行直播了!同时,我们的EasyNVR提供了一套完善的前端网页调用示例,您自己的视频应用前端可以参考此套前端框架来实现自己的业务展示,非常方便!
EasyNVR在被外部应用系统调用时,EasyNVR提供了一套总的权限控制,也就是用户自己的应用系统需要隐式调用EasyNVR的登录接口,登录之后,获取到EasyNVR返回的token字段,再在后续的EasyNVR接口调用中cookies携带token信息,才能成功调用到EasyNVR的接口,如果调用EasyNVR的接口出现401错误返回,说明登录密码错误或者token已过期,那么我们需要再次隐式调用登录接口获取新的token,再继续下面的调用流程。注意:这个过程对于应用层的用户来说,是看不到的,属于应用层与视频层两个系统后台之间的对接,与用户的登录无关!
六、API接口
概述
API采用Restful风格的Http协议,全部请求都使用Get/Post方式,字符不区分大小写。基本结构如下:
http://<IP>:<Port>/api/<Version>/<Action>?<Param1>=<value>&<Param2>=<Value>&.....
参数
参数名称 | 定义 | 说明 |
---|---|---|
IP | Platform Address | IP地址 |
Port | Platform Address | 通讯端口 |
Version | API Version | API版本 |
Action | Action | 执行的操作 |
Param | Action Parameter | 操作所使用的参数,可以有多个参数,每个参数对应一个Value。 |
Value | Parameter Value | 参数值,如果Value的字符串中出现&等特殊字符,则必须用””包住Value。 |
返回值
调用API会返回Json字符串,代表操作返回的结果
|
接口列表
1. 登录EasyNVR
- 接口: /api/v1/login?username=xxx&password=xxx
- 参数
名称 | 解释 | 含义 |
---|---|---|
Username | 登陆用户名 | |
Password | 登陆密码 | 经过MD5加密的32位字符 |
- 返回: 200 OK or 401 Unauthorized
|
- 操作: 登录,登陆后会返回token,以后调用接口需要在cookie中携带token信息“token=a19cb5f6e7d2449d8d24c8a0fc554ca7”
2.注销登陆
- 接口: /api/v1/logout
- 返回: 200 OK 401 Unauthorized
|
- 操作: 再次请求接口需要重新登陆
3.修改密码
接口: /api/v1/modifypassword?oldpassword=xxx&newpassword=xxx
参数
名称 | 含义 | 备注 |
---|---|---|
Oldpassword | 旧密码 | 经过MD5加密的字符 |
Newpassword | 新密码 | 经过MD5加密的字符 |
- 返回: 200 OK or 401
|
- 操作: 修改密码成功会返回新的token
4.获取EasyNVR服务信息
接口:/api/v1/getserverinfo
返回
名称 | 含义 | 备注 |
---|---|---|
Server | 服务器软件版本信息 | - |
RunningTime | 服务器累计运行时长信息 | - |
Hardware | 服务器硬件版本信息 | - |
InterfaceVersion | 接口服务版本信息 | - |
- 报文
|
- 操作: 显示
5.【视频广场】显示所有在线通道预览
- 接口:/api/v1/getchannels[?channel=1]
- 参数
名称 | 含义 | 备注 |
---|---|---|
channel | 查询指定通道号的信息 | 可选参数。不带channel参数或者channel小于0查看全部通道信息 |
- 返回:
- 所有设备列表信息,在线&不在线 通道(包含快照信息)
- 通道名称、通道号、通道快照、通道是否在线
名称 | 含义 | 备注 |
---|---|---|
Channel | 通道号 | 通道号 |
Name | 通道名称 | 通道名称 |
Online | 是否在线 | 1在线/0离线 |
SnapURL | 快照地址 | 返回为快照的相对网络地址 |
- 报文
|
- 操作: H5列表显示
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;
- 操作:调用播放器进行播放
7.视频播放心跳
- 接口: /api/v1/touchchannelstream?channel=1&line=local&protocol=rtmp
- 参数: 同接口6
- 返回: 直播流地址
|
- 操作:显示
9.设置EasyNVR基本配置信息
接口: /api/v1/setbaseconfig?ChannelSnapInterval=120&NginxRTMPPort=10035&ServiceLanPort=10010&ServiceWanIP=”none-config”&ServiceWanPort=10010
参数:
返回: 200 OK
|
- 操作:显示配置成功,重启后生效
10. 发现Onvif设备
- 接口: /api/v1/discoverdevices
- 返回: 200 OK
|
11. 探测设备信息
接口: /api/v1/probedevice?ip=192.168.66.222&username=admin&password=admin
参数:
名称 | 含义 | 备注 |
---|---|---|
Username | 登陆用户名 | 设备用户名 |
Password | 登陆密码 | 设备密码(明文) |
- 返回:200 OK
|
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类型接入的设备才能支持云台控制功能,同时,设备必须有云台,他才会转动;
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 |
Cdn | 推送的CDN地址 | rtmp://rtmp.aliyun.com/live/209?sign=faefabe&tm=20161005190329 |
OnDemand | 是否按需直播 | 1启用、0不启用 |
Audio | 是否启用音频输入 | 1启用、0不启用 |
Reserve2 | 保留参数2 | 1启用、0不启用 |
- 返回: 200 OK
|
- 操作:显示配置成功,即时生效!
14. 获取EasyNVR所有通道信息
- 接口: /api/v1/getchannelsconfig
- 返回: 通道列表数组信息
|
- 操作:显示,单个通道可禁用/启用/修改配置
15. 开始录像
接口:/api/v1/startrecord?channel=1&duration=3600
参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 通道号 | - |
duration | 录像时长,单位秒 | 缺省或者为0时,一直录像,直到执行stoprecord接口 |
- 返回:200 OK
|
16. 停止录像
接口:/api/v1/stoprecord?channel=1
参数:
名称 | 含义 | 备注 |
---|---|---|
channel | 通道号 | - |
- 返回:200 OK
|
17. 获取第三方平台配置
接口:/api/v1/getthirdplatformconfig
返回:
第三方平台类型枚举,例如:EasyDSS视频云平台(EasyDSS),QQ互联云平台(QQConnect),海康萤石云平台(EZVIZ)
平台地址和端口
平台验证信息,例如:用户名、密码、AppKey、SecretKey
|
- 操作:显示
18. 设置第三方平台配置
- 接口: /api/v1/setthirdplatformconfig?ThridPlatform=EasyDarwin&ThridPlatformIP=www.easydss.com&ThridPlatformPort=10000&ThridPlatformUID=NVR00000002&ThridPlatformAliveInterval=90&ThridPlatformCustomize=dev
- 返回: 200 OK
|
- 操作:显示配置成功,重启后生效!
19. 重启接口
- 接口: /api/v1/restart
- 返回: 200 OK
- 操作: 显示成功
获取更多信息
技术方案与商业授权咨询
Copyright © EasyDarwin.org 2012-2017