收藏

稿件投诉

记笔记

  • 用手机看
c/c++高级音视频项目实战

5.8万

已完结 · 共121课时

长期有效

从零设计并开发可靠的高性能的音视频安防流媒体服务器。

发布者
关注
up

老曾还没秃

专注于音视频和视觉图像算法,参与过多个银行大型监控安防、智慧安防等流媒体服务器项目的设计与研发。

课程概述

评论(0)

课程介绍: 本课程是一门高级的实战项目课程,按照GB28181公共安全视频监控联网系统的技术要求开发,旨在为学员提供实践经验和技能,以开发可用于生产的系统。 课程涵盖了上下级的信令和流媒体两套服务器的开发。信令服务器负责处理设备之间的SIP信令交互和控制信息传输,而流媒体服务器则负责音视频实时流和回放流的传输以及视频编解码数据的处理。 各个技术模块的处理包括都是按照解耦合思想进行开发,可兼容学员以后从事相关项目不同模块的搭配开发。 你将学到: 从零开始使用CMake构建完整的c/c++项目。 在本项目中,你将学习到大量有用的技术和概念,包括数据结构与算法、内存管理、并发编程、面向对象编程、代码优化和性能分析,泛型编程和模板的使用,以及掌握linux操作系统中网络socket+多路IO复用技术。 这个项目将使你能够更加高效地开发和维护 C/C++ 项目,并为你的职业发展提供坚实的基础。 本项目是按照GB28181标准来完成监控设备之间的注册、保活、设备资源、 回放记录以及实时/回放流获取和推送的完整交互框架,使用pjsip作为SIP信令协议栈,需要深入了解和掌握 pjsip 库的各个模块,以及熟练掌握SIP协议。 项目中会深入到rtp/ps协议头的每一个字节每一位,对裸流进行ps和rtp的封装以及解封装,过程中涉及ps流的传输,rtp负载打包、完整帧组包、以及rtcp rr包的检测。 项目中会详解讲解h264编解码规则和深度解析H264中的PSP和PPS序列参数集并从码流中计算出分辨率和帧率。 最终实现的流媒体服务器将为整个项目提供了实时流和回放流的处理和传输能力,同时与信令服务器相互配合,构建了一个完整的监控设备间交互框架。 这将使你全面掌握在 C/C++ 项目中开发高性能流媒体服务器所需的技能和知识,对你未来在相关领域的职业发展将大有裨益。
常见问题
Q:课程在什么时间更新?
A:课程更新频次以页面前端展示为准。购买成功后,课程更新将通过账号动态提示,方便及时观看。
Q:课程购买后有收看时间限制吗?
A:购买后除不可抗力因素外,本课程长期有效,请您放心购买。
Q:原价购买课程后,如遇到优惠折扣,是否可以退还差价或重新购买?
A:虚拟商品付款后无法返还,请您随时留意各类课程折扣信息,按需购买。
Q:购买课程后是否可以加入老师的粉丝群或者用户群?
A:如老师设置用户群,我们将邀您加入,但我们无法承诺所有老师均提供用户群服务,感谢理解。

查看更多

购买须知

1. 本内容为付费内容,购买成功后方可观看。

2. 本内容为虚拟服务,已购买内容不支持退款,敬请谅解。

3. 实际购买价格以页面展示的价格及订单结算页显示价格为准。

568 元/121课时 立即购买
课程目录

第一章 项目开篇介绍和环境搭建

1

全集试看

开篇

视频课

21分43秒

2

全集试看

项目演示

视频课

5分27秒

3

全集试看

环境配置(上)-项目工程的构建

视频课

10分14秒

4

全集试看

环境搭建(中)-第三方库安装

视频课

16分59秒

5

环境搭建(下)-第三方库安装

视频课

21分10秒

第二章 服务器初始组件开发

6

服务器配置文件设计与读取

视频课

29分4秒

7

单例模型实现全局类并使用gdb调试问题

视频课

14分

8

封装线程

视频课

17分37秒

9

实现线程任务池

视频课

21分1秒

第三章 SIP信令服务器

10

pjsip库讲解

视频课

13分4秒

11

初始化sip信令协议栈并设置信令服务端口

视频课

29分14秒

12

实现自定义模块注册及完成SIP事件轮询机制

视频课

24分52秒

13

创建下级信令服务器

视频课

4分51秒

14

下级注册1-鉴权注册与非鉴权注册流程讲解

视频课

14分32秒

15

下级注册2-对照抓包示例,组织注册字段等内容

视频课

29分24秒

16

下级注册3-讲解pjsip源码,实现下级非鉴权注册功能

视频课

26分59秒

17

下级注册4-调试pjsip源码排查下级非鉴权注册程序异常

视频课

13分2秒

18

下级注册5-sip消息包字段组织功能封装

视频课

19分38秒

19

下级注册6-实现定时器功能完成下级定时发起注册机制

视频课

23分44秒

20

解决pjlib线程安全问题

视频课

4分38秒

21

互斥锁的运用和实现智能锁

视频课

9分35秒

22

上级注册1-实现上级接收下级的注册请求事件

视频课

22分14秒

23

上级注册2-使用多态搭建任务事件处理框架

视频课

28分49秒

24

上级注册3-上级实现对非鉴权注册请求的具体业务处理和响应

视频课

39分31秒

25

上级注册4-实现上下级注销交互

视频课

10分17秒

26

上级注册5-应用层实现注册有效期定时检查机制

视频课

14分55秒

27

上级注册6-上下级鉴权注册的实现步骤

视频课

13分8秒

28

使用随机数生成器实现生成指定位数的随机串

视频课

7分28秒

29

上级注册7-上级组织鉴权方式及认证参数等字段值

视频课

11分15秒

30

上级注册8-解决鉴权参数nonce和opaque值重复问题

视频课

3分20秒

31

下级注册7-下级完成鉴权配置及鉴权信息的设定

视频课

17分50秒

32

下级注册8-调试pjsip源码解决下级鉴权响应异常问题

视频课

4分8秒

33

上级注册9-上级完成MD5鉴权认证,并验证密码错误的情况

视频课

24分57秒

34

详细讲解保活信令在上下级之间的用途,制定下级保活的策略并实现

视频课

16分1秒

35

下级组织保活信令中的xml数据,并根据响应码实现不同的逻辑

视频课

15分39秒

36

上级解析xml元素,根据根节点元素区分业务

视频课

13分9秒

37

封装xml解析功能

视频课

4分46秒

38

上级按照策略实现下级保活请求的处理,并与下级服务联调成功

视频课

17分11秒

39

设计并封装实现xml元素组织功能的类

视频课

20分40秒

40

使用封装的xml类替换实现组织保活信令的xml数据

视频课

6分8秒

41

详解国标目录信令交互过程,和二十位国标id组成以及目录树结构

视频课

14分43秒

42

上级服务实现catalog信令包的组织和请求

视频课

20分54秒

43

下级对设备目录请求的处理思路,并解决推送包网络分片的问题

视频课

18分28秒

44

下级解析xml数据获取sn号以及响应

视频课

10分32秒

45

实现封装json数据序列化和反序列化的功能

视频课

8分1秒

46

设计算法实现按照指定的数量来组织推送的目录节点数量

视频课

13分27秒

47

按照国标字段组织设备目录树item节点

视频课

17分29秒

48

下级完成catalog信令包的整合和推送动作

视频课

7分38秒

49

下级整合SIP事件分发机制,并成功向上级推送catalog包

视频课

12分9秒

50

上级接收下级推送的catalog包并解析item节点并响应

视频课

24分57秒

第四章 流媒体服务器

51

深度解析网络层的分片以及传输层端口不可达产生的原因

视频课

7分39秒

52

深度解析rtp和ps头

视频课

12分45秒

53

h264协议运用讲解(NAL,VCL,I,B,P,GOP)

视频课

9分29秒

54

深度解析h264编码数据并计算出分辨率

视频课

9分12秒

55

媒体交互流程讲解以及sdp协商协议中各字段讲解

视频课

15分45秒

56

初始化媒体回调事件以及媒体模块的注册

视频课

13分45秒

57

完成上级INVITE请求的条件

视频课

15分48秒

58

组织上级INVITE请求的请求行和请求头部分

视频课

12分44秒

59

组织上级INVITE请求的sdp数据

视频课

20分56秒

60

上级完成INVITE预览开流请求动作

视频课

8分18秒

61

处理开流程序异常问题,根据抓包内容修改sdp内容

视频课

3分30秒

62

整合下级的INVITE和BYE事件接收分发处理

视频课

12分46秒

63

下级完成对上级开流请求携带的sdp解析

视频课

10分56秒

64

下级组织响应需要负载的sdp数据

视频课

13分40秒

65

下级成功响应,并抓包确认上下级开流交互流程

视频课

7分38秒

66

上级完成对下级响应携带的sdp数据解析

视频课

11分11秒

67

讲解rtp和rtcp的配合机制

视频课

4分49秒

68

完成rtp会话源的添加删除和BYE事件处理功能

视频课

9分15秒

69

上级完成rtp会话的创建启动与会话句柄透传

视频课

13分7秒

70

下级完成ps封装器的初始化,并梳理h264流层层打包的流程

视频课

10分47秒

71

下级完成rtp会话的创建并将上级rtp会话添加到会话源表中

视频课

12分40秒

72

下级模拟从媒体模块接收自定义协议的h264数据

视频课

12分49秒

73

下级完成音视频数据的ps流封装功能

视频课

17分49秒

74

解决ps流封装异常问题,和内部取流业务时间消耗的估算

视频课

3分21秒

75

下级完成ps音视频流的rtp封装和推送

视频课

13分59秒

76

上级从会话源表中找到第一个具有可用数据的源,并获取rtp数据包

视频课

8分10秒

77

完成rtp丢包检测和组织完整帧的先驱条件

视频课

10分47秒

78

上级实现完整帧的组包和复现丢包场景并播放保存的ps文件出现卡帧情

视频课

13分53秒

79

分析rtp丢包原因并最终解决问题

视频课

8分9秒

80

讲解ps包解复用流程

视频课

10分53秒

81

将ps解封装后的分片数据按照音视频类型再分别组织为完整的音视频流

视频课

13分15秒

82

排查ps解封装失败问题,并从下级rtp打包模块着手解决问题

视频课

8分23秒

83

制定自定义协议头,从h264码流中优先解出sps类型帧数据

视频课

13分32秒

84

讲解h264编解码的三种数据类型u(1),ue(v),se(v)

视频课

14分38秒

85

上级实现从IDR帧的编码数据中获取帧率和分辨率的值

视频课

20分17秒

86

上级解决实现重复开流的场景处理

视频课

19分46秒

87

上级实现检测下级推流异常的机制,并修改下级代码进行场景复现和测试

视频课

14分43秒

88

上级完成关流BYE信令功能

视频课

9分57秒

89

下级处理上级的BYE请求

视频课

19分1秒

90

上下级联调测试正常和异常的BYE关流处理机制

视频课

7分1秒

91

解决异常情况:抓包显示上级一直在发送INVITE请求

视频课

9分8秒

92

完善上下级rtp端口的动态分配和回收

视频课

19分16秒

93

上级开启定时线程重复开流关流,测试上下级rtp端口的分配和回收

视频课

11分23秒

94

下级完成rtcp-rr包检测机制,并联调测试rtcp异常的场景

视频课

13分52秒

95

上级服务实现前端和中心存储回放记录获取

视频课

12分49秒

96

下级完成对于recordinfo请求的响应和回放记录的推送

视频课

17分18秒

97

上级解析下级推送的回放记录负载的item内容

视频课

12分28秒

98

上下级实现和验证回放流的请求和推送

视频课

12分16秒

99

解决下级推送的回放流出现pts为负值并且不连续的异常情况

视频课

5分14秒

100

讲解多路IO复用select,poll和epoll

视频课

10分3秒

101

将select和epoll的共性进行抽象,并封装select功能

视频课

16分8秒

102

完成epoll功能的封装实现

视频课

9分2秒

103

实现多路IO复用高层次抽象API的封装

视频课

21分54秒

104

结合封装的多路IO机制实现高并发性能的tcp服务器

视频课

21分11秒

105

结合封装的多路IO机制实现高并发性能的tcp客户端

视频课

11分4秒

106

上级指定rtp的传输层为tcp,并启动tcp客户端

视频课

12分43秒

107

下级rtp的传输层协议由开流sdp协商指定,并启动tcp服务

视频课

13分4秒

108

上下级联调测试并修改多路IO复用机制

视频课

17分25秒

109

解决select就绪事件异常问题,多路IO复用机制交叉测试接发流

视频课

11分59秒

第五章 客户端展示数据和拉流播放(完结)

110

全集试看

windows下开发环境配置

视频课

14分41秒

111

全集试看

client界面布局

视频课

10分24秒

112

windows下完成客户端的tcpClient功能

视频课

14分10秒

113

上级服务完成tcpserver功能

视频课

18分8秒

114

tcpserver完成tcp连接事件及关闭事件回调

视频课

12分16秒

115

服务端使用线程任务池机制完成客户端的获取注册平台信息命令请求

视频课

22分35秒

116

客户端成功展示上级服务返回的已成功注册的下级平台信息

视频课

18分40秒

117

上级服务端成功返回客户端请求的目录资源

视频课

31分44秒

118

客户端界面展示接收的目录资源

视频课

22分34秒

119

上级服务完成客户端的预览请求并向下级服务触发开流命令

视频课

18分44秒

120

客户端将接收的码流保存到本地h264文件中并成功播放

视频课

14分56秒

121

客户端完成接收码流线程和解码渲染线程并最终成功取流播放

视频课

1小时3分

相关推荐
课程封面

Java从入门到实战

一学就会的Java课,专为新手打造!

318.6万播放/共67课时

课程封面

Linux云计算 系统权限管理 工作必备玩转权限

大量实战训练权限一套实战课程 学会直接使用到工作中

2217播放/共12课时

课程封面

Java快速入门实战(专为入门粉丝量身定制)

专为小白量身定制从入门到提升的Java核心技术教程!一共分为11个章节,82小节,细致全面、深入浅出、通俗易懂、源码剖析的讲解方式,手把手带你入门到提升,掌握这些技术,即可达到P7程序员要求的基本功!

20.9万播放/共83课时

课程封面

STM32核心板设计实战

STM32/GD32核心板项目设计全流程手把手教学

4541播放/共54课时

课程封面

WPF框架系列课程(小白进阶选择)重庆教主完结

从零基础开始学习WPF控件、数据绑定、模板样式、命令绑定。

3112播放/共140课时

课程封面

Go语言开发REST API接口

使用Go语言开发REST API接口并使用进行测试

1972播放/共24课时

课程封面

Python & C/C++联合编程实战

快速入门python,学习编译查看Python的源码

3.1万播放/共140课时

课程封面

王道【C/C++】体验课

从零基础开始学习C++,让C++不再难学

4717播放/共21课时

课程封面

UltraFLEX机台与IGXL软件实操

本课程内容为UltraFLEX机台实操课。

2617播放/共24课时

课程封面

信奥赛c++普及组csp-j复赛真题题解

信奥赛 C++普及组csp-j复赛真题题解

1.2万播放/共38课时

课程封面

零基础入门Python进阶编程:解锁编程技巧

包含常见的并发原语与对应的使用场景

2325播放/共59课时

课程封面

【Unity与C#实战】从零开发类皇室战争游戏

从0开发一个完整的商业案例,学会后可以自行开发其他3D案例。

35.9万播放/共62课时

课程封面

数据库小白速通MySQL&JDBC

用最少的时间学最有用的MySQL数据库知识

18.8万播放/共72课时

课程封面

Java从入门到实战强化班(社群+直播)

【全新升级】一学就会的Java课,专为新手打造!

29.3万播放/共79课时

课程封面

硬件电路基础知识大全

硬件电路基础知识大全

8.4万播放/共705课时