到公司的时候,我的第一个任务是:基于Linux操作系统(Ubuntu 16.04 LTS),以QT为开发平台做一个简单的视频监控系统(QT版本5.8),这个监控系统不使用摄像头厂家提供的sdk,而是使用onvif协议控制传输,解码器自选(比如ffmpeg),不使用NVR存储,也不用实现存到本地的功能(暂时不用)。
注:我是个初出茅庐的初级码农,所以对很多知识的理解或者描述可能不是很准确,以下的内容及接下来的博客是我对做这个任务的总结,如果您在阅读的过程中发现不正确的地方,希望能得到您的指正。如果我的文章对您有帮助,或者想了解更多也欢迎评论留言,邮箱:[email protected]
总结模式(只是总结一些关键字术语):硬件:外观构架(IPC,交换机,电脑)---->软件:中间层(QT接口)------>最底层(传输解码码流),该篇中没有有关中间层的内容。
硬件:一个简单的视频监控系统的外观框架(无NVR)
1、 图中camera为**IP Camera**或者**Web Camera**(即网络摄像头):网络摄像头是传统摄像机与网络视频技术相结合的新一代产品,除了具备一般传统摄像机所有的图像捕捉功能外,机内还内置了数字化压缩控制器和基于WEB的操作系统,使得视频数据经压缩加密后,通过局域网,internet或无线网络送至终端用户。
2、图中电脑控制端client:即远端用户,可在PC上使用标准的网络浏览器,根据网络摄像机的IP地址,对网络摄像机进行访问,实时监控目标现场的情况,并可对图像资料实时编辑和存储,同时还可以控制摄像机的云台和镜头,进行全方位地监控。
一个简单的基于onvif协议的监控系统的外观就是这样,很简单明了。但是拨开这层外衣,往里面看的时候,就越来越难了。也就是软件(程序实现)这个部分。
软件:从软件角度,监控系统的框架
ONVIF规范向视频监控这个行业引入了web Service技术,将设备抽象成一个一个的web service,视频控制端以Client的形式出现,通过web请求的方式完成控制操作。
什么是Web Service?
Web Service定义:是一种技术,是一种跨编程语言和操作系统平台的远程调用技术;Web Service也是一种部署在Web上的对象或者是应用程序组件,这个组件满足Web Service技术条件。结合起来就是:Web service是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的互操作的应用程序。Web Service数据的传输需要借助HTTP协议和soap协议。
该博客里面对web Service的描述以及解释比较容易理解:https://www.cnblogs.com/fnng/p/5524801.html
什么是soap协议?
soap协议:Simple Object Access Protocol,中文为简单对象访问协议,简称SOAP。
该博客里面对soap的解释比较形象:http://blog.sina.com.cn/s/blog_1304e81c10102x1gl.html
因为有Web Service的存在和它本身的特性,所以在监控视频行业里面,onvif规范才会出现;而因为Onvif规范,Web Service的利用价值与范围就得到了提升和扩展。
什么是ONVIF规范?
1、ONVIF规范定义: 首先解释下,什么是onvif。ONVIF是一个由安讯士,索尼博世等公司一起创建的一个开放型的开发网络视频通用接口的论坛(Open Network Video Interface Forum)。该论坛制定的行业标准就是onvif网络视频标准规定,简称onvif协议。因为整个视频监控系统中还有几个协议,所以,为了方便理解,以下内容中,我都称它为onvif规范。
2、ONVIF规范的作用(为什么它会出现):以前我们买回来一个摄像头,就需要按照厂家给定的sdk或者自己根据数据手册熟悉整个摄像头的内部结构来实现需要的功能。但是要是系统换了一个不同厂家的摄像头,那怎么办?所有的步骤都要重新来一遍,很耗时耗力。所以,onvif规范就出现了,它利用web Service这样的技术解决了不同厂商所生产的监控视频产品(包括摄录前端、录像设备等)不互通的问题。onvif规范的具体作用就是为网络视频设备之间的信息交换定义了通用协议,描述了网络视频的模型、接口、数据类型以及数据交互的模式,使不同厂商所提供的产品,均可以通过一个统一的“语言”(方式)来进行交流,终端用户和集成用户不需要被某些设备的固有解决方案所束缚。
3、onvif规范的内容:
a) 设备发现
b) 设备管理
c) 设备输入输出服务
d) 图像配置
e) 媒体配置
f) 实时流媒体
g) 接收端配置
h) 显示服务
i) 事件处理
j) PTZ控制
k) 其他
onvif不编解码任何视频,只是控制传输。解码是解码器的事儿。比如ffmpeg。
什么是ffmpeg?
1、Fmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
2、具体功能:视频采集,音视频格式转换,视屏截图,给视频加水印,支持RTP、RTSP等协议。
3、ffmpeg包含了非常先进的音频/视频编解码库libavcodec,所以它既可以对视频、音频进行编码以RTP方式发出去,也可以将从某个流地址接收来的音视频流解码,交给某平台(比如QT开发的界面)显示。
RTP协议,RTSP协议,soap并不是一起作用的,ONVIF规范也不是仅仅将IPC抽象成了web service,也将decoder(解码器)抽象成了web service(具体为什么我还没有理解),下面两张图可以帮助理解:
感谢以下博客的博主,文章很简单易懂,而且条理清晰。
http://blog.sina.com.cn/s/blog_659ba74c0102woy6.html