这门课的名字里堆了四个关键词:C++、FFmpeg SDK、Qt5、OpenCV,最后落到一件事上——把摄像头画面加上美颜,推成一路能播的直播流。如果你写过 C++,能看懂指针和类,但一提到音视频就只剩「调库」两个字,那这门课正好卡在你的缺口上。
先确认你是不是它的目标读者
这门课不教 C++ 语法,也不讲 Qt 的信号槽入门。它默认你能独立编译一个带第三方库的 C++ 工程,知道怎么在 IDE 里配 include 路径和链接库。如果这两步你还要查半天,建议先补 C++ 工程组织和 CMake 相关的内容,再回来看。
真正适合的,是这几类人:做过业务后端或客户端,想往音视频方向转;接手了直播相关模块,代码能跑但说不清每一行在干什么;或者自己做过推流 demo,用的是别人封装好的高层接口,一旦出问题就无从下手。课程的价值在于把 FFmpeg 这层封装拆开,让你看见解复用、解码、编码、封装各自的输入输出到底是什么。
能力缺口具体补在哪几处
直播推流这条链路,很多人卡在三个地方,这门课基本是冲着它们去的。
- 时间基与 PTS/DTS 的处理。为什么编码前要设置 AVFrame 的 pts,为什么时间基不对齐会导致播放器花屏或加速,这类问题靠猜是猜不出来的,必须理解 FFmpeg 内部的时间换算规则。
- 像素格式转换。摄像头出来的数据、OpenCV 处理的 Mat、编码器要求的 YUV420P,三者格式往往不一致,中间那一步 sws_scale 用错参数,画面就变色或错位。
- 美颜与编码的衔接。美颜是在 RGB 域做的,编码在 YUV 域做,滤镜链怎么串、每一帧数据在哪一步被修改,是实战里最容易出 bug 的地方。
Qt5 在这门课里的角色是宿主:做界面、管理采集线程、控制推流开关。它不抢戏,但你会看到音视频线程和 UI 线程怎么分工,避免界面卡死这类工程问题。
配套练习该怎么用
这类实战课最怕的是「看一遍觉得懂了,自己写一行都动不了」。建议按节点停下来动手:学完解码部分,先别管推流,自己把一段本地视频解成帧并保存图片;学完美颜,把处理前后的帧做对比输出,确认效果真的作用在画面上而不是参数上;到了编码推流环节,先用本地文件当输入跑通链路,再接摄像头。每一步都能独立验证,出问题才容易定位。
另外,FFmpeg 的 API 在不同大版本之间有变动,比如编码接口从旧的 avcodec_encode_video2 换到 send_frame/receive_packet。看课时留意版本,动手时以你本地库的头文件为准,别硬套。
看完你应该能回答这些问题
- 一帧画面从摄像头到推流服务器,中间经过了哪几次格式转换,每次转换的目的是什么?
- 如果推流出去的画面比实际慢了两秒,你会从时间基、编码器缓冲、网络发送这三个环节里的哪个先查?
- 美颜滤镜放在解码之后、编码之前,和放在采集之后、编码之前,有什么实质区别?
- Qt 界面线程和推流线程之间传递数据,你会选信号槽还是加锁队列,各自的代价是什么?
能把这些讲清楚,说明你不是只会调 API,而是真的理解了这条链路。这比多记几个函数名有用得多。
曹操军C++编程FFmpeg SDK美颜直播推流实战——基于qt5、opencv视频教程
C++编程FFmpeg SDK美颜直播推流实战
编辑点评
实战导向,深入讲解FFmpeg SDK在直播推流中的应用,结合Qt5和OpenCV,适合有C++基础并希望掌握直播推流技术的开发者。
⭐ 编辑推荐
本课程通过实战项目,深入讲解C++编程FFmpeg SDK在美颜直播推流中的应用,涵盖视频帧编码、解码、美颜处理等关键技术,适合有C++基础并希望掌握直播推流技术的开发者。
课程亮点
课程目录
【夏曹俊】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++开发者
- 直播推流工程师
- 视频处理爱好者
学习收获
祝您学习愉快!
学有所成,前程似锦!






