getfromcode移动开发 会员免费

夏曹俊主讲:C++ FFmpegSDK美颜直播推流实战教程(Qt5+OpenCV)

这套资料的主题很明确:用 C++ 把 FFmpeg 的编解码链路打通,中间接一层 OpenCV 做图像处理实现美颜,最后通过 Qt5 做界面与推流控制,形成一条从摄像头采集到 RTMP 推流的完整管线。它不是"讲 API 用法"的课,而是把一个真实可跑的程序拆开给你看每一层的输入输出是什么、参数从哪

单课价¥29.90新品 上架
会员价 会员免费开通会员,全站课程按额度无限下载套餐详情
5 人关注 更新于 2026-09-14 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

支付成功后自动发货,可在「我的订单」查看网盘链接;链接失效可联系客服免费补链。

正版保障 极速发货 售后无忧

这套资料的主题很明确:用 C++ 把 FFmpeg 的编解码链路打通,中间接一层 OpenCV 做图像处理实现美颜,最后通过 Qt5 做界面与推流控制,形成一条从摄像头采集到 RTMP 推流的完整管线。它不是"讲 API 用法"的课,而是把一个真实可跑的程序拆开给你看每一层的输入输出是什么、参数从哪里来、内存在哪里释放。

技术栈分工与数据流

四个库各管一段,边界清楚,这也是这套资料最值得对照的地方:

  • Qt5:负责窗口、控件、线程调度与信号槽。采集和推流运行在独立线程里,界面不被阻塞,这一点在推流场景下是硬需求。
  • OpenCV:负责摄像头取流(VideoCapture)与颜色空间转换(如 YUV 与 BGR 互转)、后续的滤波与美颜处理。
  • FFmpeg SDK:负责编码(libavcodec)、封装(libavformat)、时间基与 PTS 计算、以及向 RTMP 服务器推流。
  • 美颜算法:落在 OpenCV 处理阶段,属于可替换模块,你完全可以换成自己的磨皮、双边滤波或 GPU 版本。

数据流大致是:摄像头 → 原始帧 → 颜色转换 → 美颜处理 → 转回编码器要求的像素格式 → 编码 → 封装 → 推流。看懂这条链路,比记住某个函数的参数更重要。

真正容易踩坑的几个点

资料里用较大篇幅讲了 VideoCapture 打开摄像头的内部流程和读帧接口的源码分析,这恰好是多数人第一次做推流时最卡的地方。几个具体的坑:

  • 像素格式不匹配:摄像头输出的格式、OpenCV 内部的 BGR、编码器要求的 YUV420P,三者不一致,中间必须显式转换,否则花屏或直接失败。
  • PTS 与时间基:视频帧编码前要按输出流的时间基设置 pts,写错会导致播放端快放、卡顿或音视频不同步。
  • 推流地址与超时:RTMP 连接建立失败时的错误码处理,以及断线后的重连策略,这些在 demo 里常被省略,但上线必须补。
  • 线程与队列:采集速度快于编码速度时,需要缓冲队列或丢帧策略,否则内存会持续上涨。

建议在跟做时不要只求"跑起来",而是在每个环节打印一次分辨率、像素格式、pts 和帧序号,用日志对齐你对链路的理解。

可复用模块与改造方向

这套代码的结构适合被拆成独立模块复用:采集模块(可替换为屏幕采集或文件读取)、处理模块(可插入美颜、水印、缩放、裁剪)、编码推流模块(可换成 H.264/H.265 软硬编切换)。在读懂之后,一个自然的练习是把美颜处理换成可配置的滤镜链,或者把推流目标从 RTMP 扩展到本地录制与分发双写。另一个方向是把 OpenCV 的 CPU 处理换成 OpenGL 或 CUDA 版本,观察帧率与延迟的变化,这会让你对"实时"两个字有具体的数量级概念。

适合谁、怎么用这份资料

如果只是看视频,很容易产生"听懂了"的错觉;这类偏底层的工程内容,必须边看边改边验证。建议的使用方式:先按资料把最小可运行版本跑通,确认能推流到本地 RTMP 服务器并被播放器拉到画面;然后逐层替换——先换美颜算法,再换编码参数,最后尝试改动线程模型。每替换一层,记录下行为变化与遇到的问题。这样一轮下来,FFmpeg 与 OpenCV 的接口对你来说就不只是函数名,而是一条你能自己搭、自己调、自己排错的链路。

夏曹俊主讲:C++ FFmpegSDK美颜直播推流实战教程(Qt5+OpenCV)

Qt5+OpenCV美颜直播推流实战

编辑点评

实战性强,深入浅出,适合有一定C++基础的学习者。

⭐ 编辑推荐

跟随夏曹俊老师,学习C++ FFmpegSDK美颜直播推流技术,掌握Qt5和OpenCV应用。

✨ 课程亮点

✦C++ FFmpegSDK实战
✦美颜直播推流技术
✦Qt5+OpenCV应用

课程目录

课程目录68 集
  • 【夏曹俊】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++开发者
  • 移动开发爱好者

🎯 学习收获

  • 掌握美颜直播推流技术
  • 学会Qt5和OpenCV应用
  • 提升直播开发能力

🎉 祝您学习愉快!