目? ? ? ? ? ?录
目前客户有一台华为视频监控平台IVS9000,接入了9K路视频图像。如下为网络拓扑图:
但是,在实际使用中存在如下问题:
1,在web客户端和手机上显示视频的时候,不方便
2,访问华为的ivs9000的视频,码流比较高,大多都是4M码流,对于手机查看的时候,不太适合。
????????与华为IVS平台进行对接,获取华为平台的9K多路的视频信息,包括:所有视频的目录组织结构(1万多路视频如何组织和检索)、设备名称、设备编号、通道名称、通道编号、状态、经纬度、有无云台(用于云台和镜头控制)。
????????华为平台将新增加5K路视频,也能够及时接入到本系统。
系统接收到应用程序调用某路视频信号的命令后,转码服务器码流后,按照如下规则处理:
转码后的流媒体需要封装成RTMP、WebRtc、HLS等可被BS架构或者H5直接调用的格式。
????????提供配置页面,在配置页面可以选择几路摄像头,然后选择开始录制时间和结束录制时间,平台可以按照要求在指定时间段获取华为的视频流进行录像,并后续提供这部分录像的回看功能。录像也需要转码转格式后提供给应用平台。
????????提供web访问页面,主要显示录像回看地址。除了功能(3)提到的自身录像外,也把其他平台录像通过地址列表(包括用户名和密码),可以方便跳转查阅。
????????能够给各种应用程序提供API接口,方便多个应用程序调看视频。
根据系统需求,本系统设计如下几个系统:接入服务器,转码服务器,web服务器,录像服务器等,如下图。
????????其中接入服务器,(1)负责接入华为IVS9000平台上的视频监控设备和视频,包括目录组织结构(1万多路视频如何组织和检索)、设备名称、设备编号、通道名称、通道编号、状态、经纬度、云台和镜头的控制许可等。(2)负责接入新的视频监控资源,建立新设备的目录资源、设备名称、通道名称、状态、经纬度、云台和镜头的控制许可等。同时把视频码流通过网络转发给转码服务器。
????????转码服务器负责把接收到的华为转发过来的码流进行转码,分别转成720P(暂定)和1080P(暂定)两种不同码率,提供给应用系统调用。同时封装成RTMP、webRtc、HLS等可被BS架构或者H5直接调用的格式。
????????录像服务器负责把封装好的web码流进行录像,同时提供索引,方便web浏览器和手机浏览器进行访问。
??? ??? Web服务器负责建立设备的录像列表,可以链接到原有系统中NVR、DVR的录像文件,以及录像服务器的录像文件;以便浏览器客户端可以通过web方式访问。
????????通过国标对接华为IVS平台,对接联网系统遵循《安全防范视频监控联网系统信息传输、交换、控制技术要求》 及GB/T 28181-2011标准,平台对接结构图如下:
????????联网系统内部进行视频、音频、数据等信息传输、交换、控制时,完全遵循标准的通信协议,协议的结构见下图:
通信协议结构图
如下图,华为平台为GB28181平台,可以接入IPC、NVR等设备,获取视频流;
接入服务器通过GB28181协议接入视频后,将PS流解复用成ES流,然后通过转发服务器完成转码处理,转码处理模式见 ?“二(二)转码功能“ 。转码后输出RTMP、FLV、HLS和WebRTC,如下图所示。
对于通过接入服务器接入进来的视频,通过录像服务器和磁盘阵列,实现视频录像,包括如下功能:
按照30路高清图像,录像30天计算,需要38.9T的硬盘存储空间,考虑到一定的存储空间消耗,建议配置48T的磁盘存储容量。需要采用专业的磁盘阵列服务器,配置raid5机制,保证系统的稳定可靠。
系统支持多种回放方式,包括快放、慢放、单帧播放等。支持多通道同步回放、单通道分段并行回放功能,以提升回放效率。具体包括:
1)回放显示:录像回放时支持1、4、9、16画面的回放显示方式;支持自适应显示、16:9、4:3和充满窗口显示四种图像显示模式;支持回放画面中屏显示和全屏显示两种显示风格;支持多画面同步或异步回放。
2)回放控制:支持暂停、拖动播放、快放(2、4、8倍数)、慢放(1/2、1/4、1/8倍数)、单帧播放。
3)事件回放:支持根据事件进行录像检索和回放的功能,事件类型包括监控点移动侦测,视频遮挡,视频丢失的报警事件,这些报警发生时,会有相应的报警录像产生,事后,可以根据报警的类型和时间去快速定位录像。
4)分段回放:支持录像的分段回放功能,可对同一路通道的录像资料,分为几个不同的时间片段来同时进行回放(最大支持16个分片段播放),方便快速的查找所要的录像。
提供web页面,其他NVR、DVR上的录像通过地址列表(包括用户名和密码)进行显示,可以方便跳转查阅。
提供支持H5的SDK和API接口,方便多个上层应用可以调用经过转码的视频。接口考虑一定的兼容性和扩展性,能够支持的系统环境包括:
能够提供标准和详细的http访问接口和对应的Demo示例程序,可以支持上层各种基于web的应用开发,API接口示例如下:
请求方式:GET
请求地址:http://192.168.0.35:26000/ivms/login?UsrName=xxx&Passwd=xxx
请求参数说明:
参数 | 选择 | 类型 | 说明 |
UsrName | 必选 | string | 登录的用户名 |
Passwd | 必选 | string | 登录的密码(MD5加密) |
返回参数:
{
"errcode":0,
“errdesc”:"OK",
“UsrName”:”admin”,
“Name”,”fullsee”
“UsrPubid”:”64000000004000000022”,
“Address”:”BeiJing”,
“Mobile”:”010-666666”,
“E-mail”:”666666@fullsee.cn”,
“Alive”:1,
“KeepliveTime”:3600,
”AuthorizationId”:”1234”
}
返回参数说明:
参数 | 类型 | 说明 |
errcode | int | 错误码,0:成功,其他数字:失败 |
errdesc | string | 错误消息 |
UsrName | string | 登录的用户名 |
Name | string | 姓名 |
KeepliveTime | string | 登录保活时间,单位秒 |
UsrPubid | string | 用户国标ID |
Address | string | 升级描述信息,用于填写升级日志 |
Mobile | string | 电话 |
| string | 邮箱 |
Alive | int | 有效状态:1-在线;0-不在线 |
AuthorizationId | string | 服务器返回的授权ID |
请求方式:GET
请求地址:http://192.168.0.23:26000/ivms/logout?AuthorizationId=xxxxxx
请求参数说明:
参数 | 选择 | 类型 | 说明 |
AuthorizationId | 必选 | string | 服务器返回的授权ID |
?返回参数:
{
"errcode":0,
“errdesc”:"OK"
}
返回参数说明:
参数 | 类型 | 说明 |
errcode | int | 错误码,0:成功,其他数字:失败 |
errdesc | string | 错误描述 |
请求方式:GET
请求地址:http://192.168.0.20:26000/ivms/getusrallresource?AuthorizationId=xxxxxx&start=0&limit=100
请求参数说明:
参数 | 选择 | 类型 | 说明 |
AuthorizationId | 必选 | string | 服务器返回的授权ID |
start | 可选 | int | 第几条数据开始 默认是0 |
limit | 可选 | int | 每页个数 ?默认是100 |
返回参数:
{“errcode”:0,
“errdesc”:”OK”,
“ResourceCount”:1,
“TotalResourceCount”:50,
“Resource”:
[
{
“ChanPubId”:”64000000001310000059”,
“NickName”:”hikes_jiama-1”,
“ChanType”:131,
“ChanNum”:1,
“DevPubId”:”640000000015K00029”,
“DevNickName”:”hikes_jiama”,
“DevModel”:”HikEs”,
“DevType”:130,
“DevIP”:”192.168.12.179”,
“DevPort”:8000,
“BindGroupPubId”:”64000000002160000031”,
“BindGroupName”:”环境设备组”,
“PtzType”:0,
“ChanIP”:”192.168.12.179”,
“ChanPort”:8000,
“RtspAddr”:”rtsp://admin:12345@192.168.11.108”,
“SerialNumber”:”231231”,
“SerialNumber2”:”12312321”,
“IsBitStream”:0,
“Longitude”:116.2819361687,
“Latitude”:39.8227186553,
“Alive”:1,
“Parent”:,
“VideoFormat”:2,
“AudioFormat”:0,
“DirectionType”:0,
“CameraType”:0
}
]
}
返回参数说明:
参数 | 类型 | 说明 |
errcode | int | 错误码,0:成功,其他数字:失败 |
errdesc | string | 错误消息 |
ResourceCount | int | 此用户下的资源组统计 |
TotalResourceCount | int | 此资源组下的资源统计 |
Resource | 数据集合,为数组 | |
DevPubId | string | 通道所属设备的国标ID |
DevNickName | string | 设备名称 |
DevModel | int | 设备型号 |
DevIP | string | 设备IP |
DevPort | int | 设备端口 |
ChanPubId | string | 通道国标ID |
NickName | string | 通道名 |
ChanType | int | 通道类型 |
ChanNum | int | 通道号 |
PtzType | int | PTZ控制类型
|
ChanIP | string | 通道IP |
ChanPort | int | 通道端口 |
RtspAddr | string | rtsp地址 |
SerialNumber | string | 通道序列号 |
SerialNumber2 | string | 通道序列号2 |
IsBitStream | int | 主子码流(0-主码流;1-子码流) |
Longitude | double | 经度 |
Latitude | double | 纬度 |
Alive | int | 在线状态(1-在线;0-不在线) |
VideoFormat | int | 视频格式
|
AudioFormat | int | 音频格式
|
DirectionType | int | 位置方向 |
CameraType | int | 摄像机类型
|
Manufacturer | int | 设备厂商 |
????????WebRTC,即Web Real-Time Communication,web实时通信技术。简单地说就是在web浏览器里面引入实时通信,包括音视频通话等。
????????WebRTC实现了基于网页的语音对话或视频通话,目的是无插件实现web端的实时通信的能力。
????????对于用户来说,在WebRTC出现之前想要进行实时通信就需要安装插件和客户端,但是对于很多用户来说,插件的下载、软件的安装和更新这些操作是复杂而且容易出现问题的,现在WebRTC技术内置于浏览器中,用户不需要使用任何插件或者软件就能通过浏览器来实现实时通信。对于开发者来说,在Google将WebRTC开源之前,浏览器之间实现通信的技术是掌握在大企业手中,这项技术的开发是一个很困难的任务,现在开发者使用简单的HTML标签和JavaScript API就能够实现Web音/视频通信的功能。
????????虽然WebRTC技术已经较为成熟,其集成了最佳的音/视频引擎,十分先进的codec,但是Google对于这些技术不收取任何费用。
????????WebRTC技术包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿透技术,并支持代理。