如果你已经能用 C++ 写点东西,但一碰到「把摄像头画面送到服务器」就卡住,这门课针对的就是这段空白。它不讲 C++ 语法,也不讲 Qt 控件怎么摆,而是盯着一条具体的链路:采集 → 解码/转换 → 美颜 → 编码 → 推流。四五个环节里任何一环出问题,画面要么黑、要么花、要么延迟高得没法看。课程把这条链路拆开讲,每一段都能单独验证。
先确认自己缺的是哪一块
这门课的定位是补缺,不是扫盲。你可以先对照下面几条判断:
- 用过 FFmpeg 命令行做转码,但没写过
avcodec、avformat这一层的调用代码; - 知道 YUV 和 RGB 不一样,但说不清为什么解码出来的帧要先做颜色空间转换才能给 OpenCV 处理;
- Qt5 界面能写,但不知道怎么让采集线程和渲染、推流线程不互相拖死;
- 美颜只知道「磨皮」两个字,没想过它是在哪一步、对哪种格式的数据做运算。
如果这几条里中了两条以上,说明你缺的正是这门课覆盖的部分。反过来,如果你连 C++ 的类、指针、回调都不熟,先补语言本身,再来跟这条链路会更顺。
时间戳和帧格式,是两个绕不开的坎
整条推流链路里,最容易让人卡住的不是算法,而是两个看起来不起眼的东西。
第一是 pts。视频帧编码时要把时间戳填进 AVFrame,填错或漏填,本地看没问题,推出去就是播放器卡顿、音画不同步。课程里专门有一段讲视频帧编码时怎么按设置写入 pts,这类细节平时查文档容易看漏,但出问题时又极难定位。
第二是像素格式。摄像头出来的数据、解码器吐出来的数据、OpenCV 能吃的数据、编码器要求的数据,格式往往不一致。中间少了转换这一步,或者转换时把宽高、步长搞错,画面就会斜着裂开。课程会带着看一遍读取一帧视频的接口调用和源码走向,把解码到颜色转换这一段走通,而不是只给一个能跑的封装函数。
美颜放在管线的哪一步
很多人以为美颜是「加个滤镜」,实际在这条链路里,它是对特定格式的图像数据做像素级运算,做完还得转回编码器要的格式。放在解码前还是解码后、在 CPU 上做还是交给 GPU,直接决定帧率和 CPU 占用。课程把美颜嵌进完整的推流流程里讲,你能看到它为上下游让出了哪些约束——比如为什么某些处理必须在转换之后、编码之前完成。这部分理解了,换别的美颜方案也能自己接进去。
学完之后应该能回答的问题
- 一帧画面从摄像头到推流服务器,中间经过了哪几次格式转换,每次转换的目的是什么?
- 如果推流出去画面正常但播放端卡顿,你按什么顺序排查?
- 采集、处理、编码三段如果放在同一个线程里,瓶颈会出现在哪?拆线程后共享数据要注意什么?
- 美颜处理让帧率掉了一半,你会从哪几个方向去优化?
这些问题能答上来,说明你不是照着代码敲了一遍,而是真的把这条管线装进脑子里了。带着其中任意一个疑问去翻对应章节,比从头顺序看效率高得多。建议动手时准备两个摄像头或一段本地视频文件作为输入源,方便在采集环节出问题时快速排除是设备还是代码的原因。
【夏曹俊】C++编程FFMpegSDK美颜直播推流实战- 基于qt5,opencv视频课
Qt5+Opencv实现美颜直播推流
编辑点评
实战性强,深入讲解美颜直播推流技术,适合有C++基础并希望学习移动端直播开发的技术人员。
⭐ 编辑推荐
本课程由夏曹俊老师主讲,通过Qt5和Opencv技术,深入讲解美颜直播推流的全过程,从环境搭建到代码实现,实战性强。
课程亮点
课程目录
【夏曹俊】C++编程FFMpegSDK美颜直播推流实战-基于qt5,opencv视频课资料.png [493.5 KB] 5-07、视频帧编码并根据设置AVFrame的输入pts_ev.mp4 [28.5 MB] 4-05、读取一帧视频接口讲解和源码分析,分析读取解码和颜色转换过程_ev.mp4 [17.7 MB] 4-04、VideoCapture打开摄像头接口讲解和源码分析_ev.mp4 [12.8 MB] 1-03、直播rtmp协议分析_ev.mp4 [17.1 MB] 4-03、遍历修改连续的Mat图像空间_ev.mp4 [19.2 MB] 5-05、查找编码器并创建编码器上下文_ev.mp4 [24.4 MB] 5-02、基于opencv采集rtsp流并使用异常处理失败流程_ev.mp4 [35.2 MB] 4-01、opencv源码在windows下载编译安装_ev.mp4 [14.4 MB] 5-01、opencv播放rtsp海康摄像头和播放系统摄像头_ev.mp4 [30.4 MB] 7-05、XAudioRecord集成数据基类重构_ev_ev.mp4 [25.1 MB] 8-09、QT直播推流项目完成界面设计_ev_ev.mp4 [33.9 MB] 5-14、完成了视频编码接口并重构rtsp_to_rtmp代码_ev.mp4 [28.5 MB] 7-04、XDataThread数据处理线程类创建并实现_ev_ev.mp4 [29.9 MB] 7-07、完成音视频推流封装处理未同步_ev_ev.mp4 [39.4 MB] 6-10、封装音频编码器设置接口重构视频编码器接口_ev.mp4 [25.0 MB] 6-05、音频重采样空间分配并完成重采样_ev_ev.mp4 [25.5 MB] 8-02、双边滤波磨皮算法调用并测试性能_ev_ev.mp4 [32.3 MB] 7-03、封装视频录制接口完成初始化和关闭接口_ev_ev.mp4 [29.8 MB] 3-04、打开rtmp推流输出并从文件读取音视频帧_ev.mp4 [41.9 MB] 2-04、nginx-rtmp直播和直播状态监听配置ffplay播放_ev.mp4 [25.7 MB] 1-02、直播推流流程分析讲解_ev_ev.mp4 [11.2 MB] 5-15、创建XRtmp接口类完成封装器接口_ev.mp4 [59.4 MB] 4-02、windows 上创建opencv示例项目_ev.mp4 [21.0 MB] 8-03、直播框架添加图像过滤XFilter接口并实现双边滤波磨皮类_ev_ev.mp4 [39.9 MB] 3-07、推流基于rtsp协议的大华海康相机_ev.mp4 [61.6 MB] 8-06、完成了XController音视频录制模块初始化_ev_ev.mp4 [37.0 MB] 7-01、封装音频XAudioRecord初始化和关闭接口_ev_ev.mp4 [29.1 MB] 6-12、完成音频推流接口XRtmp封装重构音频推流_ev_ev.mp4 [34.6 MB] 5-08、创建封装器添加视频AVStream并设置参数_ev.mp4 [28.8 MB] 8-01、磨皮双边滤波算法参数说明_ev_ev.mp4 [18.1 MB] 2-01、直播服务器介绍crtmpserver编译运行(ubuntu)_ev.mp4 [31.1 MB] 5-13、完成视频编码器初始化InitVideoCodec接口封装_ev.mp4 [23.1 MB] 8-04、直播框架添加美颜磨皮_ev_ev.mp4 [21.3 MB] 6-01、QT5开发环境准备_ev.mp4 [25.0 MB] 6-03、QT音频录制接口讲解并编写录制音频程序_ev.mp4 [24.8 MB] 5-06、编码器参数配置(包括打开多线程编码)并打开编码器_ev.mp4 [36.5 MB] 5-03、像素格式转换(RGBToYUV)上下文创建配置和清理_ev.mp4 [41.5 MB] 1-01、课程介绍_ev_ev.mp4 [20.0 MB] 6-09、音频重采样XMediaEncode重采样接口封装代码重构_ev.mp4 [51.0 MB] 7-10、音视频同步二解决音频有相同pts情况_ev_ev.mp4 [24.5 MB] 5-11、完成InitScale初始化像素格式转换接口_ev.mp4 [20.3 MB] 7-09、音视频同步时间计算代码分析第一部分_ev_ev.mp4 [68.9 MB] 6-02、音频基础知识音频参数分析_ev.mp4 [25.2 MB] 3-02、初始化封装和网络库打开音视频流并打印调试信息_ev.mp4 [41.6 MB] 3-01、ffmpegSDK开发环境准备,第一个ffmpeg项目创建_ev.mp4 [41.2 MB] 6-07、音频的pts运算音频数据编码测试_ev_ev.mp4 [17.5 MB] 6-06、音频编码器创建和参数设置_ev_ev.mp4 [23.3 MB] 2-03、nginx-rtmp源码下载、编译运行(ubuntu)_ev.mp4 [25.3 MB] 5-10、XMediaEndcode工厂生产方法创建_ev.mp4 [21.0 MB] 7-06、加入视频编码器和流_ev_ev.mp4 [27.7 MB] 6-04、音频重采样上下文创建和配置_ev.mp4 [27.0 MB] 3-05、AVPacket的pts运算并完成帧推送使用vlc测试_ev.mp4 [29.5 MB] 5-12、完成RGBToYUV接口封装并重构代码_ev.mp4 [30.4 MB] 7-02、完成音频录制接口,录制缓冲队列处理_ev_ev.mp4 [50.4 MB] 5-09、打开推流IO,发送封装头,计算pts完成帧推流_ev.mp4 [34.6 MB] 5-04、rgb转yuv空间分配和转换函数调用_ev.mp4 [47.5 MB] 2-02、下载ffmpeg工具推流并使用功能vlc拉流播放测试_ev.mp4 [20.8 MB] 8-05、XRtmpStreamer项目框架架构(类图)讲解_ev_ev.mp4 [12.1 MB] 7-11、音视频同步三完成同步_ev_ev.mp4 [18.6 MB] 3-06、根据pts和系统记时控制推流速度_浏览器flash播放直播流_ev.mp4 [39.8 MB] 6-08、完成音频推流并测试_ev.mp4 [31.4 MB] 7-08、音频推流同步策略分析_ev_ev.mp4 [17.1 MB] 8-10、完成了qt项目直播推流_ev_ev.mp4 [44.4 MB] 6-11、完成音频编码接口封装和代码重构_ev_ev.mp4 [22.3 MB] 8-08、XController推流数据线程完成_ev_ev.mp4 [48.6 MB] 8-07、完成XController中的编码封装推流模块初始化_ev_ev.mp4 [47.5 MB] 3-03、完成输出音视频流配置信息,使用ffmpeg新版本属性_ev.mp4 [45.6 MB]
适合人群
- C++开发者
- 移动端直播开发人员
- 对美颜直播技术感兴趣的学习者
学习收获
祝您学习愉快!
学有所成,前程似锦!






