ONVIF网络摄像头(IPC)客户端开发—ONVIF介绍
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.1Web Server
Web Services,它即是一种网络服务。当你的系统完成一个通用的功能以后,如果你想让别人使用你的功能的话,那么你就可以发布成为Web Services服务,别人就可以通过网络远程调用到你的服务接口。它能够让各个系统之间的对接变得:快捷、方便、廉价。
实现Web Services常用的框架有:REST、SOAP、JavaScript、XML-PRC等,我们这里使用的SOAP框架。

3.1.1SOAP
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协议类似,它们同样属于应用层。

- RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。RTSP本身并不用于传送媒体流数据。媒体数据的传送可通过RTP/RTCP等协议来完成。RTP和RTCP协议是基于TCP和UDP协议的基础上的一种协议,它们同样属于传输层的协议。
RTP是实时传输协议(Real-Time Transport Protocol)的缩写。是针对多媒体数据流的实时传输协议。通常建立在UDP协议之上,也可以建立在TCP协议之上。有人将其归为应用层协议,也有人将其归为传输层协议,这都是可以的。 - RTCP是实时控制协议(Real-Time Control Protocol)的缩写。RTCP通常与RTP配合使用,用以管理传输质量在当前进程之间的交换信息。在RTP会话期间,各参与者周期性的传送RTCP包,RTCP包中包含已发送数据包的数量、丢失的数据包的数量等统计资料。服务器可以利用这些信息动态的改变传输速率,甚至改变有效载荷的类型。RTP和RTCP配合使用,可以有效且以最小的开销达到最佳传输效率,非常适合传送实时流。
- 用一句简单的话总结:RTSP发起/终结流媒体、RTP传输流媒体数据 、RTCP对RTP进行控制,同步。
致谢:
- 许振坪 对ONVIF中Web Server端的开发有非常详细的介绍 [https://blog.csdn.net/benkaoya/article/details/72424335]
---------------------------End---------------------------
长按识别二维码
关注 liwen01 公众号
ONVIF网络摄像头(IPC)客户端开发—ONVIF介绍的更多相关文章
- onvif获取摄像头的流媒体地址完整流程
linux设备上的Onvif 实现6:获取摄像头的流媒体地址完整流程 整体流程: Probe: 发现网络摄像头,获取webserver地址 http://192.168.15.240/onvif/de ...
- Android IOS WebRTC 音视频开发总结(八十五)-- 使用WebRTC广播网络摄像头视频(下)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- Android IOS WebRTC 音视频开发总结(八十三)-- 使用WebRTC广播网络摄像头视频(上)
本文主要介绍WebRTC (我们翻译和整理的,译者:weizhenwei,校验:blacker),最早发表在[编风网] 支持原创,转载必须注明出处,欢迎关注我的微信公众号blacker(微信ID:bl ...
- 用Jersey为Android客户端开发Restful Web Service
平时在做Android客户端的时候经常要与服务器之间通信,客户端通过服务端提供的接口获取数据,然后再展示在客户端的界面上,作为Android开发者,我们平时更多的是关注客户端的开发,而对服务端开发的关 ...
- 抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析
PDF 版本下载:抓住“新代码”的影子 —— 基于GoAhead系列网络摄像头多个漏洞分析 Author:知道创宇404实验室 Date:2017/03/19 一.漏洞背景 GoAhead作为世界上最 ...
- Hyperledger fabric-SDK-GO客户端开发篇(六)
Hyperledger fabric-SDK-GO客户端开发篇(六) Fabric-SDK-GO是提供的Go语言开发包,应用程序可以利用Fabric-SDK-GO与fabric网络进行交互并访问链码. ...
- Socket网络编程--FTP客户端
Socket网络编程--FTP客户端(1)(Windows) 已经好久没有写过博客进行分享了.具体原因,在以后说. 这几天在了解FTP协议,准备任务是写一个FTP客户端程序.直接上干货了. 0.了解F ...
- 在线教学、视频会议 Webus Fox(3) 客户端开发手册
本文主要介绍webus fox 客户端的配置及接口说明. 1. 文件列表和配置 1.1 文件列表 1.2 common.xml 配置 根据服务器端的部署, 替换[ServerUrl] , [RtmpP ...
- [原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推)
[原创]上海好买基金招高级Java技术经理/运维主管/高级无线客户端开发等职位(内推) 内部推荐职位 高级JAVA技术经理: 岗位职责: 负责项目管理(技术方向),按照产品开发流 ,带领研发团队,制定 ...
- BI之SSAS完整实战教程2 -- 开发环境介绍及多维数据集数据源准备
上一篇我们已经完成所有的准备工作,现在我们就开始动手,通过接下来的三篇文章创建第一个多维数据集. 传统的维度和多维数据集设计方法主要是基于现有的单源数据集. 在现实世界中,当开发商业智能应用程序时,很 ...
随机推荐
- ubuntu设置系统字符集为中文
第一步:查看自己系统的字符集 先查看系统的默认字符集格式:locale 或者cat /etc/default/locale root@JumpServer-APP-T02:~# locale LANG ...
- BFS(二)转动转盘锁
对应 LeetCode 752.转动转盘锁 ### 问题定义 你有一个带有四个圆形拨轮的转盘锁.每个拨轮都有10个数字: '0', '1', '2', '3', '4', '5', '6', '7', ...
- Java异常处理之数字溢出问题
在进行 Java 开发时,经常会遇到数字溢出的问题.这个问题在很多程序中都非常常见,尤其是在进行数值计算的时候.Java 中提供了一种异常机制来处理这种情况,我们可以在代码中使用 try-catch ...
- 关于Triple DES(3DES)对称加密算法
一.引言 在网络安全领域,对称加密算法作为一种常见的加密手段,被广泛应用于保障数据传输的保密性和完整性.其中,DES(Data Encryption Standard)算法作为一种经典的对称加密算法, ...
- $router.push跳转页面传参
$router.push传参与收参 //传参 <el-button type="text" @click="$router.push('/games/Match?i ...
- 古有诸葛亮八卦阵阻敌,今有 iptables 护网安
摘要:保障网络环境的安全,我们得"武装"起来,守住各个入口.怎么"武装"呢? 网络世界就和现实世界一样,总是会有些不怀好意的"人"出现,扫扫 ...
- 网络知识一箩筐:IP地址划分的那些知识点
摘要:IP地址是怎么划分的呢?划分的依据是什么呢?本节小课将带你一起学习IP地址划分.子网划分.子网掩码.CIDR等网络基础概念,了解IP地址划分背后的那些故事. 首先,回忆一下,前面小课中我们有提到 ...
- JPEG/Exif/TIFF格式解读(1):JEPG图片压缩与存储原理分析
JPEG文件简介 JPEG的全称是JointPhotographicExpertsGroup(联合图像专家小组),它是一种常用的图像存储格式, jpg/jpeg是24位的图像文件格式,也是一种高效率的 ...
- 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...
- DamiBus v0.51 发布
DamiBus,专为本地多模块之间通讯解耦而设计(尤其是未知模块.隔离模块.领域模块).零依赖,特适合 DDD. 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作响应订阅. 支 ...