本书系统讲解了基于FFmpeg二次开发视频监控系统,并结合ONVIF和GB/T28181的基础理论及应用,包括使用FFmpeg读取摄像头数据、使用Lib264/Libx265进行视频编码、结合Qt和SDL2进行视频渲染等功能;也包括ONVIF和GB/T28181协议的应用,以及SIP、SOAP等相关协议及开源库的具体应用。
全书共11章:系统讲解了FFmpeg二次开发视频监控系统的基础知识及项目应用、Lib264/Libx265编码流程及应用、ONVIF协议的原理及应用、GB/T28181协议的原理及应用及开源的国标GB/T28181视频平台等。
书中包含大量的示例,图文并茂,争取让音视频流媒体领域的读者真正入门,从此开启流媒体直播编程的大门。本书知识体系比较完整,侧重于使用FFmpeg二次开发视频监控系统,结合ONVIF和GB/T28181协议实现真实的项目应用。建议读者先学习FFmpeg音视频流媒体系列的前5部,然后来学习本书。本书的讲解过程由浅入深,让读者在不知不觉中学会了FFmpeg二次开发视频监控系统,并能动手实现各种编解码功能,结合ONVIF和GB/T28181协议实现视频对接等功能。
本书可作为FFmpeg二次开发、ONVIF协议及GB/T28181方向的入门书籍,也可作为高年级本科生和研究生的学习参考书籍。
本书源码
第1章流媒体与RTSP/RTP/RTCP简介
1.1流媒体简介
1.2RTSP简介
1.2.1RTSP支持
1.2.2RTSP特点
1.3RTSP交互流程
1.4RTSP重要概念
1.4.1集合控制
1.4.2实体
1.4.3容器文件
1.4.4RTSP会话
1.4.5RTSP参数
1.4.6RTSP信息
1.4.7RTSP连接
1.4.8RTSP扩展
1.4.9RTSP操作模式
1.5RTSP重要方法
1.6RTP简介
1.6.1RTP格式
1.6.2RTP的会话过程
1.7RTCP简介
1.7.1RTCP的5种分组类型
1.7.2RTCP包结构
第2章VLC及FFplay流媒体播放器
2.1VLC播放器简介
2.1.1VLC播放器
2.1.2VLC的功能列表
2.1.3VLC播放网络串流
2.1.4VLC作为流媒体服务器
2.1.5使用Wireshark抓包分析RTSP交互流程
2.2FFplay播放原理简介
2.2.1视频播放器简介
2.2.2FFmpeg播放架构与原理
第3章FFmpeg二次开发采集并预览本地摄像头
3.1FFmpeg的命令行方式处理摄像头
3.2FFmpeg的SDK方式读取本地摄像头
3.3FFmpeg+SDL2读取并显示本地摄像头
3.3.1SDL2简介
3.3.2VS 2015搭建SDL2开发环境
3.3.3Qt 5.9平台搭建SDL2开发环境
3.3.4Linux平台搭建SDL2开发环境
3.3.5SDL2播放YUV视频文件
3.3.6使用FFmpeg+SDL2读取本地摄像头并渲染
3.4FFmpeg+Qt读取并显示本地摄像头
3.4.1信号
3.4.2槽
3.4.3信号与槽的关联
3.4.4信号与槽的注意事项
3.4.5元对象工具
3.4.6案例:标准信号槽
3.4.7案例:自定义信号槽
3.4.8Qt显示图像
3.4.9Qt缩放图像
3.4.10Qt旋转图像
第4章H.264/H.265视频编码并存储
4.1FFmpeg命令行编码H.264
4.1.1YUV编码为H.264
4.1.2控制视频的码率及分辨率
4.1.3控制视频的GOP
4.2libx264的常用编码选项简介
4.2.1FFmpeg中libx264的选项
4.2.2x264.exe中的选项名与选项值
4.3libx265的常用编码选项简介
4.4编解码原理流程及API解析
4.4.1视频解码过程简介
4.4.2视频解码流程及主要API
4.4.3视频编码过程简介
4.4.4视频编码流程及主要API
4.5FFmpeg编程流程与案例实战
4.5.1案例:使用FFmpeg将YUV编码为H.264
4.5.2AVFrame及相关API
4.5.3案例:使用FFmpeg将YUV编码为H.264并封装为MP4
4.5.4案例:使用FFmpeg将H.264码流封装为MP4
4.6FFmpeg编解码与时间基详解
4.6.1GOP与PTS/DTS
4.6.2FFmpeg中的时间基与时间戳
4.6.3转封装过程中的时间基转换
4.6.4转码过程中的时间基转换
第5章FFmpeg二次开发IPC视频监控
5.1视频监控系统简介
5.1.1视频监控系统的功能及特点
5.1.2视频监控系统的工作原理及结构
5.1.3视频监控系统的总体结构设计
5.1.4视频监控系统的存储结构设计
5.2FFmpeg读取网络摄像头
5.3FFmpeg实现H.264/H.265编码的C++类封装
第6章SOAP及gSOAP实战
6.1SOAP简介
6.1.1RPC简介
6.1.2HTTP简介
6.1.3XML简介
6.1.4WSDL简介
6.1.5SOAP简介
6.1.6Web Service简介
6.2gSOAP简介
6.2.1soapcpp2的用法
6.2.2wsdl2h的用法
6.2.3CentOS编译并测试gSOAP
6.2.4Ubuntu编译gSOAP
6.2.5VS利用gSOAP开发Web Service客户端
第7章ONVIF协议原理解析
7.1ONVIF简介
7.1.1ONVIF背景简介
7.1.2ONVIF的技术框架
7.1.3ONVIF规范
7.1.4ONVIF Profile
7.1.5ONVIF应用
7.1.6ONVIF测试工具
7.1.7ONVIF开发IPC的流程
7.2ONVIF功能概述
7.2.1概念定义
7.2.2缩写
7.2.3Web服务
7.2.4设备发现
7.2.5设备类型
7.2.6设备管理
7.2.7设备输入/输出
7.2.8图像配置
7.2.9媒体配置
7.2.10实时流
7.2.11事件处理
7.2.12PTZ控制
7.2.13视频分析
7.2.14分析设备
7.2.15显示
7.2.16接收器
7.2.17存储
第8章ONVIF框架代码案例应用
8.1Windows系统下生成ONVIF框架代码
8.1.1下载WSDL文件
8.1.2新建工作空间
8.1.3修改typemap.dat
8.1.4生成onvif.h文件
8.1.5鉴权(认证)
8.1.6正式生成框架代码
8.1.7关联自己的命名空间
8.1.8提取需要的文件
8.2ONVIF设备搜索
8.2.1WSDiscovery原理