如果你已经能用 C++ 写点东西,但一碰到「摄像头画面怎么变成直播间里的流」就卡住,这门课正好卡在那个缺口上。它不教 C++ 语法,也不讲 Qt 控件怎么拖,而是把 Qt5、OpenCV、FFmpeg SDK 三样东西拧在一起,做一件完整的事:采集、美颜、编码、推流。
先确认你缺的是哪一块
这类项目难的不是某个 API,而是链条太长,任何一环断了都看不到画面。对照下面几条,中两条以上再往下看:
- 用过 FFmpeg 命令行,但没写过 avformat_open_input、avcodec_send_packet 这类调用,不知道 AVFrame、AVPacket、AVCodecContext 各自管什么。
- Qt5 里只会写界面,不清楚 QThread 与信号槽怎么配合,才能让采集和编码不卡住 UI。
- OpenCV 只拿来读过图片,没处理过 VideoCapture 的实时帧,也没想过 BGR 与 YUV420P 之间为什么要转。
- 美颜停留在「加个滤镜」的认知,不知道磨皮和美白在像素层面到底改了什么。
课程实际在处理的问题
核心是三段管线的对接。第一段是采集:用 OpenCV 的 VideoCapture 拿摄像头帧,这里会讲到读取一帧的接口、解码和颜色转换在内部是怎么走的,为什么拿到的是 BGR 而不是编码器要的格式。第二段是处理:美颜算法作用在帧数据上,涉及像素遍历、滤波、肤色区域的处理,改完还得保证分辨率和对齐方式不破坏后续编码。第三段是编码推流:把处理后的帧交给 FFmpeg,设置 AVFrame 的输入 pts,控制时间戳与帧率对应,编码成 H.264 再封装推送出去。pts 设错,画面就会抖动、加速或音画不同步,这是实战里最容易踩的坑之一。
跟着做时值得盯住的几个点
- 颜色空间转换发生在哪一步,sws_scale 前后数据布局有什么变化。
- 编码线程与采集线程怎么分工,队列满了丢弃还是阻塞。
- pts 和 dts 的差值如何影响播放端表现,帧率变化时怎么补。
- 美颜强度调高后帧率掉下来,瓶颈在算法还是在编码。
这些不是看一遍就懂的东西,建议每讲完一段就自己改一个参数跑一次,看画面和日志怎么变。
看完应该能回答的问题
衡量有没有学进去,不看能不能背 API,看能不能答上这些:为什么 OpenCV 读到的帧不能直接送进编码器?AVFrame 的 pts 按什么单位算,和实际时间怎么换算?Qt5 里如果编码放在主线程会发生什么?美颜处理放在编码前还是编码后,各有什么代价?把这几问答清楚,推流这条链路你就算打通了。
需要提醒的是,课程默认你有 C++ 基础和基本的多线程概念,完全没写过 Qt 或 FFmpeg 的人,前几节可能会有点吃力,建议先补一下 FFmpeg 的基本数据结构和 Qt 的信号槽机制再进来。
【夏曹俊】C++编程FFMpegSDK美颜直播推流实战-基于qt5,opencv视频课
Qt5+Opencv+FFmpeg美颜直播推流实战
编辑点评
实战性强,系统讲解美颜直播推流技术,适合有C++基础的开发者。
⭐ 编辑推荐
本课程由资深开发者夏曹俊主讲,深入浅出地讲解Qt5、Opencv和FFmpeg在美颜直播推流中的应用。
课程亮点
课程目录
【夏曹俊】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++开发者
- 移动应用开发者
- 对美颜直播推流感兴趣的学习者
学习收获
祝您学习愉快!
学有所成,前程似锦!






