getfromcode移动开发 会员免费

夏曹俊C++实战手把手教您用ffmpeg和QT开发播放器实战视频课程

围绕播放器开发建立完整的工程认识 这门课程聚焦于使用 C++、FFmpeg 和 Qt 构建音视频播放器,适合希望从实际工程角度理解播放器工作方式的开发者。它讨论的重点不是简单调用一个现成播放控件,而是把媒体数据读取、音视频解码、线程协作、音频输出、视频显示以及播放控制连接成一个能够运行和调试的程序。

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

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

保障

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

客服

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

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

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

围绕播放器开发建立完整的工程认识

这门课程聚焦于使用 C++、FFmpeg 和 Qt 构建音视频播放器,适合希望从实际工程角度理解播放器工作方式的开发者。它讨论的重点不是简单调用一个现成播放控件,而是把媒体数据读取、音视频解码、线程协作、音频输出、视频显示以及播放控制连接成一个能够运行和调试的程序。对于只接触过普通界面开发,却不清楚播放器内部数据如何流动的人来说,这类案例能够把抽象的多媒体概念落到可观察、可修改的代码上。

播放器项目同时涉及底层库、界面框架和并发处理,任何一个环节的边界没有处理好,都会表现为没有画面、没有声音、播放卡顿、暂停失效或线程退出异常。课程以具体功能推进实现,能够帮助学习者理解 Qt 在界面组织和信号交互中的作用,理解 FFmpeg 在媒体格式解析与解码中的位置,也能看到音视频模块如何通过线程和缓冲机制配合运行。这种资料更适合边看边对照源码,用一个持续增长的工程来建立结构感。

这门课主要解决哪些实际问题

初学音视频开发时,常见问题是知道 FFmpeg 可以解码,却不知道解码后的数据怎样交给音频设备和视频界面;知道 Qt 能创建窗口,却不知道播放线程为什么不能直接阻塞界面线程;知道暂停是一个按钮动作,却没有考虑音频线程、视频线程和数据读取状态是否需要同时改变。这门课程围绕这些连接点展开,把播放器从“能打开窗口”推进到“能够持续播放并响应控制”的工程状态。

从资料线索可以看出,内容会涉及音频播放线程、音频输出功能的验证、暂停状态处理,以及使用着色器程序完成视频画面相关处理。这样的内容能够覆盖播放器中几个容易被忽略的部分:后台线程如何独立工作,线程之间如何传递播放状态,音频数据如何进入输出链路,视频画面如何交给 Qt 的图形能力显示。学习时应特别关注模块之间的接口,而不只是记住某个函数的写法。

  • 理解媒体读取、解码和输出之间的职责划分。
  • 观察播放线程如何避免阻塞 Qt 主界面。
  • 掌握播放、暂停等状态控制在多个模块中的同步方式。
  • 了解音频输出测试和视频渲染代码在调试中的作用。

适合什么基础,建议先看哪些部分

这门课更适合已经能够使用 C++ 编写基本程序,并接触过类、指针、继承、线程或回调概念的学习者。学习者不一定需要有播放器项目经验,但最好能够读懂 Qt 工程的基本组织方式,知道窗口、控件、信号与槽的大致用法。如果对 C++ 的对象生命周期、引用传递和内存管理还不熟悉,直接追踪解码线程和音频缓冲会比较吃力,建议先补齐这些基础。

观看顺序上,可以先从项目启动、Qt 界面和播放器整体职责入手,再看媒体读取与解码相关部分,随后重点理解音频线程、视频显示和播放控制。暂停功能不应只当作一个按钮案例来看,而要结合线程状态、数据消费和恢复播放一起分析。涉及图形显示的部分,可以在理解基本播放链路后再看,这样更容易分辨哪些代码负责解码,哪些代码只是负责把已经得到的画面交给渲染组件。

  • 先复习 C++ 类设计、线程基础和常见容器的使用。
  • 再了解 Qt 窗口、信号槽、事件循环和工程配置。
  • 随后阅读 FFmpeg 的输入、解码和音视频数据处理流程。
  • 最后集中分析暂停、音频输出和视频渲染之间的协作。

学完之后可以独立完成什么

完成学习并充分复现代码后,学习者应能够独立搭建一个具有基本播放能力的 C++ 播放器工程,完成媒体打开、音视频解码、画面显示、声音输出和暂停控制等核心流程。这里的“独立完成”重点在于能够自己划分模块、定位线程职责、处理接口衔接,而不是把示例代码机械复制到另一个项目中。遇到播放异常时,也应能够判断问题更可能出在输入读取、解码、缓冲、输出设备还是界面更新。

在此基础上,还可以继续扩展播放控制和工程功能,例如增加播放进度管理、停止与退出处理、错误提示、窗口尺寸变化适配,以及针对不同媒体输入进行兼容性测试。若需要将播放器能力嵌入其他 Qt 应用,也可以把解码、音频输出和视频渲染拆成相对独立的组件,再通过明确的状态接口与界面连接。课程中的价值在于提供一个可继续修改的基础,而不是把实现限定为一次性的演示程序。

  • 独立组织播放器的界面层、控制层和媒体处理层。
  • 根据日志和现象定位播放线程中的常见问题。
  • 为暂停、恢复、退出等状态设计清晰的控制接口。
  • 在已有基础上扩展新的播放控制或渲染能力。

资料与练习应当怎样配合

学习时建议先完整观看一个功能单元,再立即在本地建立可运行工程进行复现。不要只看最终效果,应在关键位置加入日志,记录线程启动、数据读取、解码成功、音频写入和播放状态变化。对于暂停功能,可以先观察暂停前后的线程行为,再主动修改状态切换顺序,验证是否会出现声音继续播放、画面停不住或恢复后无数据等情况。通过对比现象和代码,才能真正理解各模块之间的依赖关系。

练习可以按照“先运行、再拆分、后修改”的顺序推进。第一阶段确认开发环境和依赖配置没有问题,能够正常打开工程并看到基础播放结果;第二阶段按照功能边界阅读源码,画出从媒体输入到音频、视频输出的数据流;第三阶段尝试替换部分接口或增加异常处理,检验自己是否掌握了模块职责。遇到不能理解的代码时,应优先追踪数据类型、线程归属和调用时机,而不是从头到尾逐行抄写。

  • 准备几种不同编码或分辨率的媒体进行播放测试。
  • 分别验证正常播放、暂停恢复、关闭窗口和异常输入。
  • 记录每次修改对线程、声音和画面的影响。
  • 把可复用的解码、输出和控制逻辑整理成独立模块。

对于想进入音视频客户端、播放器工具或 Qt 工程开发方向的学习者,这套资料适合作为一个可运行的对照项目。它能够帮助学习者把 C++ 语法、Qt 界面开发和 FFmpeg 多媒体处理放到同一个工程中观察,通过反复运行、调试和改造,逐步形成对播放器架构的实际判断力。观看过程不应停留在理解讲解内容,而应以每个功能是否能被自己重新实现、修改后是否仍然稳定运行作为检验标准。

夏曹俊C++实战手把手教您用ffmpeg和QT开发播放器实战视频课程

C++实战,FFmpeg与QT技术深度解析

编辑点评

实战导向,手把手教学,适合有一定编程基础,想深入学习移动端播放器开发的学员。

⭐ 编辑推荐

本课程由资深讲师夏曹俊主讲,通过实际案例,深入讲解FFmpeg和QT在移动端播放器开发中的应用。

✨ 课程亮点

✦FFmpeg与QT深度结合
✦实战案例丰富
✦手把手教学

课程目录

课程目录99 集
  • 12-4 3.4通过QT打开外部视频_ok.mp4 [13.2 MB]
  • 13-6 4.6视频显示和窗口大小同步变化_ok【持续更新‖免费提供:CunworknoteS】.mp4 [34.3 MB]
  • 9-10 各个模块添加暂停功能SetPause完成音视频播放暂停(源码_ok【资源精选‖更多关注:CunworkNotes】.mp4 [44.9 MB]
  • 11-8 2.8重构FFmpeg读取视频帧接口_ok.mp4 [15.7 MB]
  • 8-7 XAudioThread完成功能并编写测试代码(源码)_ok【公重号:CunWorkNotes】.mp4 [19.7 MB]
  • 6-7 shader代码并用QGLShaderProgram载入(源_ok【更多精选‖公众号:CunWorknotes】 .mp4 [27.5 MB]
  • 2-4 在linux中安装qt及其依赖并编写测试项目_ok.mp4 [15.6 MB]
  • 5-6 sws_getContext和sws_scale像素格式_ok【持续更新‖免费提供:CunworknoteS】.mp4 [16.4 MB]
  • 8-3 XAudioPlay音频播放接口Open和Close接口完成_ok.mp4 [28.1 MB]
  • 2-1 QT开发环境下载和安装_ok_【不易整理‖请关注:CunWorkNoteS】.mp4 [20.0 MB]
  • 9-11 完成了Seek视频进度跳转到关键帧位置(源码)_ok.mp4 [28.9 MB]
  • 15-2 6.2课程总结_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [11.2 MB]
  • 11-3 2.3打开ffmpeg的视频解码器_ok.mp4 [17.1 MB]
  • 3-3 VS2015配置32位和64位通用的ffmpeg测试程序_ok【更多精选‖公众号:CunWorknotes】 .mp4 [16.1 MB]
  • 6-5 创建和显示材质glTexImage2D_ok.mp4 [10.7 MB]
  • 14-7 5.7ffmpeg音频重采样标准化音频的输出格式_ok【更多精选‖公众号:CunWorknotes】 .mp4 [37.1 MB]
  • 14-3 5.3QT音频播放的启动和停止接口实现_ok【资源精选‖更多关注:CunworkNotes】.mp4 [11.1 MB]
  • 11-10 2.10重构封装FFmpeg缩放接口_ok【更多精选‖公众号:CunWorknotes】 .mp4 [18.7 MB]
  • 6-3 Qt的opengl编程分析及QOpenGLWidget使用_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [10.5 MB]
  • 6-1 Qt音频播放接口QAudioOutput详解_ok.mp4 [14.6 MB]
  • 13-4 4.4进度条拖动控制播放位置_ok【持续更新‖免费提供:CunworknoteS】.mp4 [30.2 MB]
  • 4-5 AVFormatContext结构分析_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [7.5 MB]
  • 7-7 XDecode音视频解码器开关清理avcodec_open2_ok【更多精选‖公众号:CunWorknotes】 .mp4 [28.2 MB]
  • 7-2 XPlay2.0项目类图分析_ok.mp4 [16.2 MB]
  • 7-3 XDemu类Open接口开发并测试打开本地文件_ok.mp4 [38.1 MB]
  • 14-4 5.4QT音频播放暂停和缓冲写入接口实现_ok.mp4 [8.3 MB]
  • 2-3 创建第一个qtcreator项目_并确定文件和目录的作用_ok【公重号:CunWorkNotes】.mp4 [24.5 MB]
  • 3-4 QtCreator配置32位和64位windows通用_ok.mp4 [20.8 MB]
  • 9-12 完成了音视频Seek封装功能_ok.mp4 [24.6 MB]
  • 1-3 图形像素格式RGB和YUV格式分析_ok.mp4 [19.1 MB]
  • 6-9 完成材质的初始化和显存和内存空间分配glTexImage2D_ok.mp4 [20.9 MB]
  • 12-2 3.2通过QT显示转码后的RGB数据_ok.mp4 [31.6 MB]
  • 15-1 6.1代码下载说明_ok.mp4 [4.3 MB]
  • 11-4 2.4ffmpeg视频解码并分析H264压缩算法_ok【更多精选‖公众号:CunWorknotes】 .mp4 [23.5 MB]
  • 7-4 XDemu类Read接口开发测试并分析内存泄露(源码)_ok【更多精选‖公众号:CunWorknotes】 .mp4 [19.6 MB]
  • 7-6 av_seek_frameXDemu类Seek接口和清理关闭_ok.mp4 [24.0 MB]
  • 10-4 学习方法说明和课程代码下载演示_ok【资源精选‖更多关注:CunworkNotes】.mp4 [4.3 MB]
  • 1-4 PCM音频采样率_通道_planar等格式参数分析_ok_.mp4 [21.8 MB]
  • 8-4 XAudioPlay音频接口完成并测试音频播放成功(源码)_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [15.2 MB]
  • 7-9 XVideoWidget初始化接口完成并测试调用(源码)_ok.mp4 [35.1 MB]
  • 9-1 音视频同步策略分析并计算出当前音频播放的pts_ok【持续更新‖免费提供:CunworknoteS】.mp4 [28.2 MB]
  • 5-5 avcodec_receive_frame完成音视频解码代码_ok.mp4 [20.8 MB]
  • 4-6 avformat_close_input清理封装上下文_ok.mp4 [12.3 MB]
  • 14-5 5.5ffmpeg音频解码器打开_ok.mp4 [23.1 MB]
  • 5-7 sws_getContext像素格式上下文初始化代码演示_ok.mp4 [21.3 MB]
  • 9-6 模块添加Close关闭线程和清理资源解决程序退出会宕掉bug_ok.mp4 [21.8 MB]
  • 8-8 XVideoThread视频解码线程和显示接口完成并测试(源_ok【持续更新‖免费提供:CunworknoteS】.mp4 [39.7 MB]
  • 9-5 XDecodeThread添加Clear清理音视频缓冲(源)_ok.mp4 [12.7 MB]
  • 11-7 2.7重构封装FFmpeg类完成打开和关闭视频接口_ok.mp4 [29.4 MB]
  • 6-4 顶点和片元作色器原理讲解和yuv转rgb的glsl代码讲解_ok.mp4 [35.4 MB]
  • 9-14 重载XSlider解决滑动条拖动bug支持点击滑动条转到位置_ok.mp4 [17.8 MB]
  • 5-3 AVFrame格式解析和空间处理函数_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [12.3 MB]
  • 9-13 重构XDemuxThread和XDecode ff解耦合_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [36.0 MB]
  • 9-2 测试播放rtmp香港卫视直播解决视频显示的行对齐问题(源码)_ok【持续更新‖免费提供:CunworknoteS】.mp4 [21.8 MB]
  • 4-7 avformat_find_stream_info探测封装_ok【不易整理‖请关注:CunWorkNoteS】.mp4 [13.0 MB]
  • 9-4 抽象出XDecodeThread类添加Push和Pop函数_ok.mp4 [40.2 MB]
  • 14-9 5.9通过多线程和缓冲队列实现音视频同步_ok.mp4 [20.0 MB]
  • 5-2 音视频解码上下文创建配置和打开avcodec_open2打开_ok【更多精选‖公众号:CunWorknotes】 .mp4 [16.1 MB]
  • 9-7 使用VS的诊断工具查看内存泄漏问题并修正音频播放线程内存泄漏_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [13.8 MB]
  • 8-6 XAudioThread缓冲队列Push完成_ok.mp4 [14.0 MB]
  • 10-5 ubuntu下安装qt5.8并编译安装ffmpeg_ok.mp4 [33.3 MB]
  • 13-5 4.5控制视频的播放和暂停_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [34.3 MB]
  • 1-5 MP4标准和h264格式的NAL的GOP分析_ok.mp4 [20.9 MB]
  • 11-1 2.1ffmpeg打开视频文件_ok【不易整理‖请关注:CunWorkNoteS】.mp4 [33.6 MB]
  • 14-8 5.8完成音视频的播放_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [34.2 MB]
  • 11-2 2.2ffmpeg读取视频帧_ok【持续更新‖免费提供:CunworknoteS】.mp4 [48.0 MB]
  • 8-10 XDemuxThread音视频播放测试完成(源码)_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [16.1 MB]
  • 10-1 课程介绍_ok.mp4 [8.2 MB]
  • 9-8 使用QSlider进度条显示播放的进度_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [21.7 MB]
  • 13-3 4.3进度条显示播放进度_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [10.2 MB]
  • 5-8 sws_scale像素格式转换代码演示_ok.mp4 [11.7 MB]
  • 5-1 AVCodecContext解码上下文初始化讲解_ok【持续更新‖免费提供:CunworknoteS】.mp4 [12.1 MB]
  • 8-2 XResample接口完成并添加测试代码(源码)_ok.mp4 [27.2 MB]
  • 7-10 XVideoWidget显示完成并添加测试线程完成视频图像_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [35.0 MB]
  • 2-7 VS设置qt库版本导出为qtcreator项目_ok.mp4 [15.7 MB]
  • 1-2 音视频解封装和解码原理分析_ok_.mp4 [32.8 MB]
  • 11-9 2.9重构ffmpeg解码接口_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [21.2 MB]
  • 10-3 ffmpeg介绍和开发环境准备_ok.mp4 [31.0 MB]
  • 4-1 ffmpeg SDK软硬解码流程说明_ok.mp4 [6.5 MB]
  • 1-1 音视频基础知识mpeg4封装格式音视频编码格式讲解_ok_.mp4 [13.1 MB]
  • 4-11 av_read_frame读取帧数据函数分析和产生的空间问题_ok【不易整理‖请关注:CunWorkNoteS】.mp4 [8.5 MB]
  • 6-2 Qt播放音频代码演示(源码)_ok【整理不易‖记得关注:CunWorKNotes】.mp4 [17.4 MB]
  • 7-5 AVCodecParameters音视频参数获取和复制(源码_ok【更多精选‖公众号:CunWorknotes】 .mp4 [18.4 MB]
  • 8-5 XAudioThread打开音频解码、重采样、播放成功(源码_ok.mp4 [27.3 MB]
  • 9-15 系统移植到ubuntu的linux64位环境(课程全部源码)_ok【不易整理‖请关注:CunWorkNoteS】.mp4 [38.5 MB]
  • 4-9 通过遍历获取AVStream音频流信息并打印参数_ok.mp4 [17.8 MB]
  • 12-1 3.1基于QT的播放器界面绘制_ok.mp4 [18.5 MB]
  • 6-8 写入顶点和材质坐标glVertexAttribPointer_ok.mp4 [15.4 MB]
  • 13-1 4.1视频总时间显示_ok【优质资源‖关注:cunWorkNotes 解锁】.mp4 [13.3 MB]
  • 5-10 swr_init音频重采样上下文初始化和swr_conver_ok.mp4 [24.2 MB]
  • 2-5 windows下qtcreator调试环境安装配置使用_ok.mp4 [17.5 MB]
  • 9-3 通过界面选择打开视频文件(源码)_ok.mp4 [28.0 MB]
  • 6-10 完成对yuv文件使用OpenGLShader播放(源码)_ok.mp4 [32.4 MB]
  • 9-9 窗口尺寸变化和双击全屏播放视频(源码)_ok.mp4 [14.5 MB]
  • 14-2 5.2QT音频播放类封装_ok.mp4 [9.8 MB]
  • 4-13 av_seek_frame改变播放进度函数详解_ok【公重号:CunWorkNotes】.mp4 [10.7 MB]
  • 4-10 通过遍历和av_find_best_stream方法获取视频_ok.mp4 [31.1 MB]
  • 2-6 vs创建QT项目并详细介绍vs项目设置_ok.mp4 [20.7 MB]
  • 6-6 建QtOpengl项目窗口控件重载QOpenGLWidget_ok.mp4 [19.7 MB]

适合人群

  • C++开发者
  • 移动端开发者
  • 播放器开发爱好者

🎯 学习收获

  • 掌握FFmpeg和QT技术
  • 独立开发移动端播放器
  • 提升实战能力

🎉 祝您学习愉快!