1.前言:

网上已经有很多关于ONVIF开发的资料,这里概括介绍一下ONVIF协议以及介绍一下我自己在开发ONVIF网络摄像头的一些流程和经验,做个开发记录和经验总结,以备将来查看,也可供他人参考。如有错误,欢迎你的留言纠正,让我们共同成长。系列博客包括:

《ONVIF网络摄像头(IPC)客户端开发—ONVIF介绍》
《ONVIF网络摄像头(IPC)客户端开发—最简RTSP客户端实现》
《ONVIF网络摄像头(IPC)客户端开发—RTSP RTCP RTP加载H264视频流》
《ONVIF网络摄像头(IPC)客户端开发—RTSP RTCP RTP加载AAC音频流》

未完...

2.ONVIF:

ONVIF(Open Network Video Interface Forum,开放型网络视频接口论坛)以公开、开放的原则共同制定开放性行业标准。更多信息可以参考官方网站: Home - ONVIF Mandarin 。ONVIF标准的厂商覆盖芯片、视频前端设备、存储设备、系统平台、智能分析设备、门禁、传感设备等各个安防相关领域,IPC摄像头只是ONVIF标准里的一个分支而已。

3.技术框架:

ONVIF规范中设备管理和控制部分所定义的接口均以Web Services的形式提供。每一个支持ONVIF规范的终端设备均须提供与功能相应的Web Service。ONVIF中的其他部分比如音视频流则通过RTP/RTSP进行。

在ONVIF网络摄像头开发中,也就是包括了Web Server 和RTSP这两大部分,这两大部分的依赖不是非常大,在嵌入式设备中,可能没有足够的硬件资源来运行第三方多媒体处理库,比如FFmpeg,这时需要自己来封装RTSP流媒体传输协议。可以先从Web Server 中获取到了RTSP的URL之后,然后再通过这个URL来开发RTSP,这样可以去除对Web Server的依赖,简化程序的开发。
Web Server:

  • 获取IPC的基本信息(厂家信息、版本信息等);
  • 修改IPC的系统日期、时间;
  • 修改IPC的网络配置(IP、子网掩码等);
  • 获取/修改IPC摄像头的各种参数(视频分辨率、码率、帧率、OSD,云台控制等);

RTSP:

  • RTSP启动、停止音视频流等
  • RTP接收音视频流数据等
  • RTCP汇报RTP传输情况等

3.1 Web Server

Web Services,它即是一种网络服务。当你的系统完成一个通用的功能以后,如果你想让别人使用你的功能的话,那么你就可以发布成为Web Services服务,别人就可以通过网络远程调用到你的服务接口。它能够让各个系统之间的对接变得:快捷、方便、廉价。
    实现Web Services常用的框架有:REST、SOAP、JavaScript、XML-PRC等,我们这里使用的SOAP框架。

3.1.1 SOAP

SOAP(Simple Object Access Protoco,简单对象访问协议),是TCP/IP协议体系中的一个应用层协议,它是在HTTP基础之上实现的。

   SOAP协议 = RPC机制 + HTTP传输协议 + XML数据格式

SOAP的两个主要设计目标是「简单性」和「可扩展性」,SOAP的设计正是围绕这两点展开的,这是它的优点:

  • SOAP使用RPC机制,体现了「简单性」。让客户端调用Web Service的接口看起来像本地调用一样,确实很简单。
  • SOAP 使用 HTTP 传送 XML,体现了「可扩展性」。尽管HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。但是XML 是一个开放、健全、有语义的讯息机制,而 HTTP 成熟、稳定、又能避免许多关于防火墙的问题,从而使SOAP得到了广泛的应用。

使用ONVIF的缺点有:

  • HTTP是短连接的,都是客户端请求,服务端应答,这种模式导致服务端无法实时推送数据给客户端,只有像Socket那样的长连接才能保证实时通讯。
  • HTTP有包头,而且XML全部用文本文件来传输数据,效率会比较低,如果你对流量、传输效率要求极高,那么你应该多考虑其它的方式,而不要用 SOAP。

3.2RTSP

RTSP(Real-Time Stream Protocol )是一种基于文本的应用层协议,在语法及一些消息参数等方面,RTSP协议与HTTP协议类似,它们同样属于应用层。

  1. RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。RTSP本身并不用于传送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。RTP和RTCP协议是基于TCP和UDP协议的基础上的一种协议,它们同样属于传输层的协议。
  2. RTP是实时传输协议(Real-Time Transport Protocol)的缩写。是针对多媒体数据流的实时传输协议。通常建立在UDP协议之上,也可以建立在TCP协议之上。有人将其归为应用层协议,也有人将其归为传输层协议,这都是可以的。
  3. RTCP是实时控制协议(Real-Time Control Protocol)的缩写。RTCP通常与RTP配合使用,用以管理传输质量在当前进程之间的交换信息。在RTP会话期间,各参与者周期性的传送RTCP包,RTCP包中包含已发送数据包的数量、丢失的数据包的数量等统计资料。服务器可以利用这些信息动态的改变传输速率,甚至改变有效载荷的类型。RTP和RTCP配合使用,可以有效且以最小的开销达到最佳传输效率,非常适合传送实时流。

用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。

致谢:

许振坪

对ONVIF中Web Server端的开发有非常详细的介绍

----------------------------------------------------------------2022.08.28----------------------------------------------------------------

 新的文章内容和附件工程文件

已更新在博客首页和:

 -·号-·众-·公· :liwen01

ONVIF网络摄像头(IPC)客户端开发—ONVIF介绍相关推荐

  1. ONVIF网络摄像头(IPC)客户端开发—RTSP RTCP RTP加载H264视频流

    写得很详细 https://caibiao-lee.blog.csdn.net/article/details/102131820?utm_medium=distribute.wap_relevant ...

  2. Onvif协议:IPC客户端开发之获取设备能力

    原理简介 ONVIF协议接口由多个模块组成,每个模块分别对应着不同的WSDL文档,在ONVIF官网中能查看到这些模块,以及每个模块中的接口函数,这里列举几个模块: DeviceMgmt(设备管理) 使 ...

  3. Onvif协议:IPC客户端开发之PTZ控制

    介绍 在安防摄像头中,不仅仅涉及到固定摄像头的枪击,同样还包含可以360°转动的球机.因此对球机的云台方向控制是Onvif协议开发过程中必不可少的过程 球机的云台控制主要包含:八个方向(上.下.左.右 ...

  4. ONVIF协议网络摄像机(IPC)客户端程序开发使用gSOAP生成ONVIF框架代码(C++)03-->Windows

    其它的不多说,直接开始步骤. 我的版本是2.8.109,目前最新版本. 实际上,onvif的源码是兼容Linux.Windows版本的,例如如果你已经在这篇文章ONVIF协议网络摄像机(IPC)客户端 ...

  5. 安防监控系统流媒体服务器,搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务有哪些核心要素?...

    原标题:搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务有哪些核心要素? 在现代信息社会,人民的生活水准不断提高,因而对安全的需求也越来越迫切.特别自"9·11"与 ...

  6. 基于QT的海康威视网络摄像头二次开发

    资源下载链接 第一次使用海康威视的网络摄像头并进行二次开发,海康威视网络摄像头的二次开发的资料已经比较详细,网上关于这方面的介绍也不少.此处基于我的需求做了一些工作,特此记录. 目标: 1.实时预览 ...

  7. 基于QT的华为网络摄像头二次开发

    资源下载链接 第一次使用华为的网络摄像头并进行二次开发,网上关于QT对华为网络摄像头的二次开发的文章很少,基于项目的需求做了一些工作,特此记录. 目标: 1.实时预览 2.手动控制录制视频 3.监听告 ...

  8. 海康网络摄像头二次开发

    项目中用到了海康的一款网络摄像头,基于项目自身需求编写软件需要用到海康提供的sdk,通过查看海康提供的示例,决定在第一个分功能示例的基础上进行程序编写.由于我们并没有使用云台,因此将其中的云台控制相关 ...

  9. 搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务器需要哪些核心要素?

    在现代信息社会,人民的生活水准不断提高,因而对安全的需求也越来越迫切.特别自"9·11"与伦敦爆炸案事件后,国内外安防市场就迫切需要智能安防监控体系产品. 近年来,国内外先后涌现出 ...

最新文章

  1. GIT:本地有更改,但强制作远程仓库里作更新
  2. 11、集合--Set接口
  3. 企业网络推广——企业网络推广专员讲述网站友链交换如何做
  4. 在windows 10下安装python
  5. VLC播放器web插件接口(Part1)
  6. vertrigoserv mysql 密码_VertrigoServ
  7. 我想做一个课程表系统利用PHP+MYSQL+HTML实现课表的展示,但是不知道如何实现
  8. Java中文字符所占的字节数
  9. 一个程序员的简洁职业生涯规划
  10. csv java 科学计数法_Java入门笔记1/0(输入与输出)
  11. Flutter进阶—布局方法演示
  12. NLP基础—3.文本表示
  13. java-jdk8下载及安装
  14. Linux系统安装三菱编程软件,如何安装三菱plc编程软件gx developer
  15. (一)SLAM拓扑地图(地图的生成和显示)
  16. debian 修改桌面背景
  17. 多少人,一边疯狂跳槽,一边疯狂后悔
  18. c语言如何宏定义枚举型结构体,C语言学习笔记--枚举结构体
  19. 什么是模型?开发软件为什么要建模?
  20. nao机器人学习笔记3

热门文章

  1. 怎么让网站快速生成手机App?
  2. 新的JAX Mag问题:探索物联网世界
  3. 适合户外旅游休闲的手表有哪些
  4. 寒假到了,神兽归笼?程序员整治“熊孩子”有妙招
  5. Boilsoft Video Splitter(无损视频分割器)官方正式版V8.2.0 | 无损视频分割软件下载 | 视频分割软件哪个好用?
  6. 03 装饰着设计模式
  7. x265-1.7版本-encoder/motion.h注释
  8. 装修时千万别忽略媳妇的审美,这三款装修风格给她二次心动的感觉
  9. docker常用命令-docker history
  10. from gensim.models import Word2Vec