这是一个能跑通的“端到端”直播系统

市面上很多课程只讲视频处理,或者只讲推流协议,两者往往是割裂的。这门课的核心价值在于它把从**采集、处理、编码到网络推流**的整条链路全部打通,且运行在 C++ 环境下。你面临的不再是孤立的知识点,而是一个真实的生产级逻辑:如何让消费者端的摄像头画面,经过美颜算法处理后,以低延迟传输到服务器,并最终被观众看到。这套流程涵盖了音视频开发中最硬核的部分,对于想要进入底层多媒体开发、安防监控或互动直播领域的开发者来说,是一套完整的工程范本。

基础要求与学习路径建议

这门课并非面向纯小白,它预设读者已经熟悉 C++ 基础语法,并对 Qt 框架有一定了解,否则难以跟上代码层面的实现细节。同时,OpenCV 的基本接口使用(如 Mat 操作、图像滤波)也是前置知识。

建议的学习顺序如下:

首先,**从 OpenCV 视频采集与基础处理入手**。这部分是基石,你需要理解如何通过 Qt 调用摄像头,以及如何读取 RTSP 流。在此基础上,重点理解双边滤波算法的原理与实现,这是实现实时磨皮美颜的核心,务必亲手调试参数,观察效果与性能的平衡。

其次,**攻克音视频编码模块**。这是最难啃的部分,需要理清 H.264 视频编码和 AAC 音频编码的参数含义。你需要知道分辨率、帧率、码率、采样率、声道数等概念如何在代码中配置,以及为什么直播场景对延迟如此敏感。

再次,**掌握封装与推流协议**。理解如何将编码后的音视频数据打包成 FLV 格式,并基于 RTMP 协议进行推流。这部分建议结合 Nginx-rtmp 模块的实际搭建过程一起看,因为配置服务器是验证推流是否成功的必要环节。

最后,**梳理多线程架构**。直播系统涉及采集、处理、编码、推流等多个并发任务,课程会讲解如何使用设计模式将这些模块解耦并协同工作。建议在这一阶段重点关注线程间的数据传递与同步机制,这是系统稳定的关键。

学完能独立做什么

完成本课程后,你将具备独立开发一个简易但功能完整的实时美颜直播系统的能力。具体包括:

* **能够部署本地直播服务器**,使用 nginx-rtmp 或 crtmpserver 接收推流,并通过网页或本地播放器(如 ffplay)观看直播。
* **能够编写 C++ 程序**,利用 Qt 和 OpenCV 实现多路视频源的采集、实时美颜处理、音频录制以及音视频编码。
* **能够解决推流中的常见问题**,如音画不同步、卡顿、美颜效果不自然等,理解各参数对最终效果的影响。
* **能够基于设计模式重构代码**,使系统具备良好的扩展性,为后续接入云推流或二次开发打下基础。

资料包中的代码和配置文档应配合动手实践,不要只看不练。建议先跑通示例,再逐步修改功能,特别是美颜算法参数和推流地址的配置,只有在实际运行中遇到问题并解决,知识才能真正内化。

课程目录

4.png (180.

29 KB,  ) 2024-7-28 13:

02 上传 课程介绍: 1 基于c++编程,掌握录制视频(使用opencv支持rtsp和系统相机)录制音频(qt5)开发方法,掌握音视频各类参数含义,掌握音视频编码(h264+acc),磨皮双边滤波美颜(opencv),音视频封装(flv),基于rtmp协议推流。多线程处理技术各个模块交互。 2 掌握nginx-rtmp和crtmpserver的直播服务器配置。 3 课程讲解ffplay和html的flash插件播放直播 4 基于c++语言的一些设计模式完成直播美颜推流项目。 课程目录: 第一章:课程介绍和基础知识 1. 课程介绍,学员群1323236937:45 2. 直播推流流程分析讲解 6:39 3. 直播rtmp协议分析10:

08 第二章: 直播服务器讲解和配置 1. 直播服务器介绍crtmpserver编译运行(ubuntu) 12:57 2. 下载ffmpeg工具推流并使用功能vlc拉流播放测试 8:05 3. nginx-rtmp源码下载、编译运行(ubuntu) 9:09 4. nginx-rtmp直播和直播状态监听配置并使用ffplay播放直播流 11:

24 第三章:FFMpegSDK解封和推流 1. ffmpegSDK开发环境准备,第一个ffmpeg项目创建 20:46 2. 初始化封装和网络库、打开音视频流并打印调试信息 18:29 3. 完成输出音视频流配置信息,使用ffmpeg新版本属性 19:32 4. 打开rtmp推流输出并从文件读取音视频帧 17:35 5. AVPacket的pts运算并完成帧推送使用vlc测试 10:49 6. 根据pts和系统记时控制推流速度_浏览器flash播放直播流 15:25 7. 推流基于rtsp协议的大华海康相机 24:

58 第四章:OpencvSDK基础 1. opencv源码在windows下载编译安装7:53 2. windows 上创建opencv示例项目 12:03 3. 遍历修改连续的Mat图像空间 5:31 4. VideoCapture打开摄像头接口讲解和源码分析10:49 5. 读取一帧视频接口讲解和源码分析,分析读取解码和颜色转换过程9:

20 第五章:视频采集编码推流和类封装 01. opencv播放rtsp海康摄像头和播放系统摄像头 16:17 02. 基于opencv采集rtsp流并使用异常处理失败流程 19:07 03. 像素格式转换(RGBToYUV)上下文创建配置和清理 20:34 04. rgb转yuv空间分配和转换函数调用23:50 05. 查找编码器并创建编码器上下文12:33 06. 编码器参数配置(包括打开多线程编码)并打开编码器17:06 07. 视频帧编码并根据设置AVFrame的输入pts13:36 08. 创建封装器添加视频AVStream并设置参数12:40 09. 打开推流IO,发送封装头,计算pts完成帧推流 15:14 10. XMediaEndcode工厂生产方法创建11:15 11. 完成InitScale初始化像素格式转换接口10:18 12. 完成RGBToYUV接口封装并重构代码13:18 13. 完成视频编码器初始化InitVideoCodec接口封装9:53 14. 完成了视频编码接口并重构rtsp_to_rtmp代码11:54 15. 创建XRtmp接口类完成封装器接口 25:

25 第六章:音频录制编码推流和类封装 01. QT5开发环境准备11:56 02. 音频基础知识音频参数分析12:38 03. QT音频录制接口讲解并编写录制音频程序 13:31 04. 音频重采样上下文创建和配置12:27 05. 音频重采样空间分配并完成重采样14:10 06. 音频编码器创建和参数设置12:13 07. 音频的pts运算音频数据编码测试7:38 08. 完成音频推流并测试 12:52 09. 音频重采样XMediaEncode重采样接口封装代码重构20:20 10. 封装音频编码器设置接口重构视频编码器接口9:30 11. 完成音频编码接口封装和代码重构8:28 12. 完成音频推流接口XRtmp封装重构音频推流 13:

13 第七章:音视频同步编码推流处理 01. 封装音频XAudioRecord初始化和关闭接口14:23 02. 完成音频录制接口,录制缓冲队列处理 22:26 03. 封装视频录制接口完成初始化和关闭接口13:33 04. XDataThread数据处理线程类创建并实现13:19 05. XAudioRecord集成数据基类重构12:51 06. 加入视频编码器和流11:05 07. 完成音视频推流封装处理未同步 16:36 08. 音频推流同步策略分析8:36 09. 音视频同步时间计算代码分析第一部分28:57 10. 音视频同步二解决音频有相同pts情况9:36 11. 音视频同步三完成同步 7:

25 第八章:XRtmpStreamer项目完成(界面和美颜) 01. 磨皮双边滤波算法参数说明9:55 02. 双边滤波磨皮算法调用并测试性能 14:52 03. 直播框架添加图像过滤XFilter接口并实现双边滤波磨皮类18:55 04. 直播框架添加美颜磨皮9:26 05. XRtmpStreamer项目框架架构(类图)讲解 6:30 06. 完成了XController音视频录制模块初始化16:13 07. 完成XController中的编码封装推流模块初始化17:24 08. XController推流数据线程完成 16:31 09. QT直播推流项目完成界面设计14:18 10. 完成了qt项目直播推流 18:36