1.扫盲
1.1 IPC和NVR的区别
IPC是IP Camera,即网络摄像头。
拉流客户端。就是NVR是Network Video Record,即网络视频录像机,就是支持保存回放监控录像的服务器。更通用一点,就
传统数据流:
IPC(拍摄) → 网络传输 → NVR(存储/管理) → 用户(查看/回放)
随着家用摄像头的兴起,云存储逐渐流行,家用一般不会单独弄一个存储服务器,而是由厂家提供租用式的云服务:
IPC + SD卡 + 云服务
随着AI的兴起,AI也逐渐加入到摄像头的基本功能中:
IPC + SD卡 + 云服务+AI
1.2 IPC基础
- 国内主流IPC厂家:海康,大华,宇视等。
- IPC对外的数据流有主流和子流之分。主流画质高,用于保存。子流画质低,用于预览。
1.3 音视频系统应用架构
有两种:
- C/S架构:传统架构,需要安装特定的客户端软件。
- B/S架构:更轻便和流行的架构,在网页中完成一切视频处理,技术更新。
围绕应用架构展开设计的,应用为王。就是所有音视频技术都
2. 协议
2.1 ONVIF协议
ONVIF协议就是网络摄像头控制协议。
2.1.1 架构
架构图:
先学习一下什么是Web Service:
- Web Service:根据我的理解,Web Service和它的名字一样,是一套网络服务标准规范,通过这个协议,网络上的节点可以发现服务,调用服务,就是这么简单。SOAP是调用协议(SOAP=XML+HTTP/STMP+RPC),WSDL是接口头文件。和互联网的微服务架构基本上是一个东西。每个技术都各司其职,都只负责消除一个层级的挑战。
- Onvif协议:理解什么是Web Services
可能有的人会问了,为什么用Web Service,为什么不用RESTful API,直接用Get/Post+Json也好啊,为什么搞这么复杂?我也有这个疑问,看看AI怎么说:
总的来说,就是Web Service更专业,优点大于缺点。特定场景下,不是RESTful API不行,而是Web Service更好。
2.1.2 协议规范:一手资料
学习协议最好要有一手资料,二手资料水平层次不齐,就像是犹抱琵琶半遮面一样,学得云里雾里。
下面是官方的图:
html文件。就是实际上就这么多接口而已。接口定义文件,官方也给写好了,直接拿来生成代码,就可以用了,很简单吧?有人说不对啊,怎么wsdl在浏览器里看起来是一个页面?其实这是浏览器渲染的效果,右键查看网页源代码,就可以看到,其实网页是一个wsdl文件,而不
2.1.3 实操
大致架构已经清楚,但没有动手实操过,等于是半懂不懂。下面是实操的教程:
- Onvif协议:运用gSOAP创建SOAP调用实例
- Onvif协议:实现Probe命令来进行设备发现(discover)
强调两点:
- gsoap生成代码过程分两步:用wsdlh,先根据wsdl生成头文件;再用soapcpp2,将头文件生成cpp记录。
- 总体编程逻辑:ws服务发现->获取服务地址->获取能力->获取子服务地址->调用->结束
2.2. GB28181
2.2.1 最新版本
GB/T 28181-2016已被废止,新的标准GB/T 28181-2022于2023年7月1日正式实施。新国标全文下载地址:
- 标准号:GB/T 28181-2022
既是标准又是教程,建议全文阅读。
2.3 RTSP/RTCP/RTP协议簇
2.4 SIP协议
2.5 协议串讲
3. 流媒体格式
4.开发框架和工具
4.1 WebRTC
4.2 FFmpeg
4.3 流媒体服务器
4.3.1 ZLMediaKit
基于C++的开源流媒体服务器,国产。
4.3.2 SRS
基于C++的开源流媒体服务器,国产。
4.3.3 EasyDarwin
基于Go的RTSP 流媒体服务器,能力稍弱,适合学习和测试,国产。
4.3.4 Monibuca
基于Go的开源流媒体服务器,国产。
4.3.5 RED5
基于Java的老牌流媒体服务器,技巧比较老,性能一般,非国产。