getfromcode

Ffmpeg&C++全面实战影音播放技术 XPlay2 Qt音频及OpenGLShader

后端开发
课程简介

底层音视频架构实战与跨平台工程落地 本实战课程直击当前音视频开发中的核心痛点:如何跳过封装控件的“黑盒”模式,从零构建一个具备完整播放、解码与渲染能力的视频播放器。课程不依赖 Qt 自带的多媒体模块,而是深入 C++ 底层,利用 Ffmpeg 库进行音视频流的解封装与解码,并结合 OpenGL Shader 实现高性能的硬件加速渲染。这种架构能帮助你彻底理…

已有 0 人浏览 发布 2026-10-08 更新 2026-10-07

底层音视频架构实战与跨平台工程落地

本实战课程直击当前音视频开发中的核心痛点:如何跳过封装控件的“黑盒”模式,从零构建一个具备完整播放、解码与渲染能力的视频播放器。课程不依赖 Qt 自带的多媒体模块,而是深入 C++ 底层,利用 Ffmpeg 库进行音视频流的解封装与解码,并结合 OpenGL Shader 实现高性能的硬件加速渲染。这种架构能帮助你彻底理解音频采样率同步、视频帧率匹配机制以及着色器在图像缩放与滤镜处理中的具体应用逻辑,从根本上解决跨平台开发中常见的音画不同步与渲染性能瓶颈问题,而非仅仅学会调用现成 API。

核心模块拆解与工程化复用策略

项目结构采用严格的分层设计,将业务逻辑与底层 C 库解耦,极大提升了代码的可维护性与复用性。底层封装模块负责对接 Ffmpeg,处理网络流或本地文件的 demuxing 与 decoding,并将解码后的裸数据(Raw Data)通过回调接口传递给上层;Qt 渲染层则完全负责界面绘制,利用 OpenGL Shader 进行图像缩放、滤镜处理及窗口管理,而非依赖 Qt 自带的 QOpenGLWidget 默认行为。代码组织上严格遵循模块化原则,将滤镜处理、音频混合引擎、时间轴控制逻辑封装为独立的 C++ 类,通过信号槽机制与 Qt 界面交互。这种结构不仅便于后续接入自定义滤镜或适配不同硬件设备,也为未来扩展直播推流或视频会议功能预留了清晰的接口契约,避免了硬编码导致的维护噩梦。

自学路径与资料配合指南

本课程适合已掌握 C/C++ 基础,并熟悉 OpenGL 编程或 Qt 信号槽机制的开发者。若对 Ffmpeg 内部结构(如 AVPacket、AVFrame 流转)感到陌生,建议优先阅读课程中关于流媒体协议分析与解码器注册的章节,建立清晰的数据流向认知,再进入渲染层开发。学习过程中,请务必对照工程目录手动复现核心类的继承关系与回调注册逻辑,严禁直接复制粘贴源码运行。资料包中的工程代码仅作为调试参考与逻辑验证,实际练习时应尝试替换解码器参数、手动编写自定义 Shader 着色代码或模拟高延迟网络环境,以验证对底层机制的真正掌握。学完本课程,你将具备独立开发跨平台多媒体应用的能力,能够独立解决复杂的音视频同步与渲染问题,为从事后端音视频架构、嵌入式多媒体开发或游戏引擎开发打下坚实的技术基础。

课程介绍

这门课程给大家讲解的是基于当前流行FFMpeg视频处理框架和流行的QT跨平台库。开发的一个完整的视频播放器,不是基于视频播放控件开发,而是从底层全部实现。 本课程从功能需求分析、基本原理讲解到代码实现演示,让您经历一个实际项目的全过程。 特别适合有一定C或者C++基础,想要提高自己是实战能力学员,学完此门课,可以说你们项目经历里面就可以增加一项,开发过qt和ffmpeg的C++程序,实现了一个播放器的音视频全部功能。 本课程同时也适合与想要学习ffmpeg和qt的同学,本课程学会之后你就已经将ffmpeg可以投入实际的项目应用,对于QT的基本原理你也非常清楚了,可以实现复杂的qt界面,您就可以独立开发出音视频的各种应用,包括无人机,安防,直播视频直播,视频会议,并能够开发出跨平台的应用.

课程目录

1.png (55.28 KB, 下载次数: 0) 2023-3-23 23:45 上传 课程介绍: 这门课程给大家讲解的是基于当前流行FFMpeg视频处理框架和流行的QT跨平台库。开发的一个完整的视频播放器,不是基于视频播放控件开发,而是从底层全部实现。 本课程从功能需求分析、基本原理讲解到代码实现演示,让您经历一个实际项目的全过程。 特别适合有一定C或者C++基础,想要提高自己是实战能力学员,学完此门课,可以说你们项目经历里面就可以增加一项,开发过qt和ffmpeg的C++程序,实现了一个播放器的音视频全部功能。 本课程同时也适合与想要学习ffmpeg和qt的同学,本课程学会之后你就已经将ffmpeg可以投入实际的项目应用,对于QT的基本原理你也非常清楚了,可以实现复杂的qt界面,您就可以独立开发出音视频的各种应用,包括无人机,安防,直播视频直播,视频会议,并能够开发出跨平台的应用. 课程目录: ├─1. 课程介绍.mp4 ├─2. 音视频基础知识mpeg4封装格式音视频编码格式讲解.mp4 ├─3. 音视频解封装和解码原理分析.mp4 ├─4. 图形像素格式RGB和YUV格式分析.mp4 ├─5. PCM音频采样率_通道_planar等格式参数分析.mp4 ├─6. MP4标准和h264格式的NAL的GOP分析.mp4 (2)\2. Qt开发环境准备;目录中文件数:9个 ├─1. QT开发环境下载和安装.mp4 ├─2. QtSDK路径目录文件说明.mp4 ├─3. 创建第一个qtcreator项目_并确定文件和目录的作用.mp4 ├─4. 在linux中安装qt及其依赖并编写测试项目.mp4 ├─4.1 09ubuntu虚拟机及常用工具安装并配置samba共享目录.pdf.pdf ├─5. windows下qtcreator调试环境安装配置使用.mp4 ├─6. vs创建QT项目并详细介绍vs项目设置.mp4 ├─7. VS设置qt库版本导出为qtcreator项目.mp4 ├─7.1 12qt测试项目源码.zip.zip (3)\3. FFmpeg编译和开发环境准备;目录中文件数:9个 ├─1. windows下ffmpeg库下载安装方法和库文件说明.mp4 ├─1.1 13_ffmpeg3.4.2_windows_vs2015_32位_64库和示例程序.zip.zip ├─2. VS2015配置开发显示ffmpeg配置信息测试项目.mp4 ├─3. VS2015配置32位和64位通用的ffmpeg测试程序.mp4 ├─3.1 15_VS2015配置32位和64位通用的ffmpeg测试程序.zip ├─4. QtCreator配置32位和64位windows通用的ffmpeg测试程序.mp4 ├─4.1 16QtCreator配置32位和64位windows通用的ffmpeg测试程序.zip.zip ├─5. 项目移植到ubuntu中并配置跨平台的pro文件.mp4 ├─5.1 17项目移植到ubuntu中并配置跨平台的pro文件.zip.zip (4)\4. FFmpeg解封装;目录中文件数:19个 ├─1. ffmpeg SDK软硬解码流程说明.mp4 ├─10. 通过遍历和av_find_best_stream方法获取视频流信息并打印参数..mp4 ├─10.1 27通过遍历和av_find_best_stream方法获取视频流信息并打印参数.zip ├─11. av_read_frame读取帧数据函数分析和产生的空间问题分析.mp4 ├─12. AVPacket结构解析空间申请-初始化-复制-引用计数函数讲解.mp4 ├─13. av_seek_frame改变播放进度函数详解.mp4 ├─14. av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况.mp4 ├─14.1 31av_read_frame和av_seek_frame代码示例并分析内存占用和清理情况.zip ├─2. ffmpeg音视频解封装用到的函数和结构体详解.mp4 ├─3. avformat_open_input函数详解.mp4 ├─4. 初始化解封装使用avformat_open_input打开MP4文件,并设置延时属性.mp4 ├─4.1 21初始化解封装使用avformat_open_input打开MP4文件,并设置延时等属性.zip ├─5. AVFormatContext结构分析.mp4 ├─6. avformat_close_input清理封装上下文.mp4 ├─6.1 23avformat_close_input清理封装上下文.zip.zip ├─7. avformat_find_stream_info探测获取封装上下文的格式信息并打印.mp4 ├─7.1 24avformat_find_stream_info探测获取封装上下文的格式信息并打印.zip ├─8. AVStream和AVCodecParameters分析.mp4 ├─9. 通过遍历获取AVStream音频流信息并打印参数.mp4 (5)\5. FFmepg解码和像素格式、音频采样转换;目录中文件数:13个 ├─1. AVCodecContext解码上下文初始化讲解.mp4 ├─10. swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例.mp4 ├─10.1 41swr_init音频重采样上下文初始化和swr_convert音频重采样代码示例TestDecode.zip.zip ├─2. 音视频解码上下文创建配置和打开avcodec_open2打开演示.mp4 ├─2.1 33音视频解码上下文创建配置和打开avcodec_open2打开演示TestDecode.zip.zip ├─3. AVFrame格式解析和空间处理函数.mp4 ├─4. avcodec_send_packet和avcodec_receive_frame函数讲解.mp4 ├─5. avcodec_send_packet和avcodec_receive_frame音视频解码代码演示.mp4 ├─6. sws_getContext和sws_scale像素格式和尺寸转换函数讲解.mp4 ├─7. sws_getContext像素格式上下文初始化代码演示.mp4 ├─8. sws_scale像素格式转换代码演示.mp4 ├─8.1 39sws_scale像素格式转换代码演示TestDecode.zip.zip ├─9. 音频重采样SwrContext格式和swr_convert相关函数详解.mp4 (6)\6. XPlay2 Qt音频及OpenGLShader显示YUV;目录中文件数:16个 ├─1. Qt音频播放接口QAudioOutput详解.mp4 ├─10. 完成对yuv文件使用OpenGLShader播放.mp4 ├─10.1 51完成对yuv文件使用OpenGLShader播放TestQtOpengl.zip.zip ├─2. Qt播放音频代码演示.mp4 ├─2.1 43Qt播放音频代码演示TestQAudioOutput.zip.zip ├─3. Qt的opengl编程分析及QOpenGLWidget使用方法.mp4 ├─4. 顶点和片元作色器原理讲解和yuv转rgb的glsl代码讲解.mp4 ├─5. 创建和显示材质glTexImage2D.mp4 ├─6. 创建QtOpengl项目提升窗口控件并重载QOpenGLWidget函数.mp4 ├─6.1 47创建QtOpengl项目提示窗口控件并重载QOpenGLWidget函数.zip.zip ├─7. shader代码并用QGLShaderProgram载入.mp4 ├─7.1 48编写yuv转RGB的shader代码并用QGLShaderProgram载入TestQtOpengl.zip.zip ├─8. 写入顶点和材质坐标glVertexAttribPointer.mp4 ├─8.1 49写入顶点和材质坐标glVertexAttribPointerTestQtOpengl.zip.zip ├─9. 完成材质的初始化和显存和内存空间分配glTexImage2D.mp4 ├─9.1 50完成材质的初始化和显存和内存空间分配glTexImage2DTestQtOpengl.zip.zip (7)\7. XPlay2.0 播放器项目实战开发一;目录中文件数:19个 ├─1. 面向对象的五大原则.mp4 ├─10. XVideoWidget显示完成并添加测试线程完成视频图像播放.mp4 ├─10.1 61XVideoWidget显示完成并添加测试线程完成视频图像播放.zip ├─2. XPlay2.0项目类图分析.mp4 ├─2.1 53XPlay2.0类图.zip.zip ├─3. XDemu类Open接口开发并测试打开本地文件和香港卫视直播流.mp4 ├─3.1 54XDemu类Open接口开发并测试打开本地文件和香港卫视直播流.zip ├─4. XDemu类Read接口开发测试并分析内存泄漏.mp4 ├─4.1 55XDemu类Read接口开发测试并分析内存泄露.zip ├─5. AVCodecParameters音视频参数获取和复制.mp4 ├─5.1 56AVCodecParameters音视频参数获取和复制.zip ├─6. av_seek_frameXDemu类Seek接口和清理关闭接口完成.mp4 ├─6.1 57av_seek_frameXDemu类Seek接口和清理关闭接口完成.zip ├─7. XDecode音视频解码器打开关闭和清理avcodec_open2.mp4 ├─7.1 58XDecode音视频解码器打开关闭和清理avcodec_open2.zip ├─8. XDecode的音视频解码Send和Recv接口开发并测试.mp4 ├─8.1 59XDecode的音视频解码Send和Recv接口开发并测试.zip ├─9. XVideoWidget初始化接口完成并测试调用.mp4 ├─9.1 60XVideoWidget初始化接口完成并测试调用.zip (8)\8. XPlay2.0 播放器项目实战开发二;目录中文件数:16个 ├─1. XResample音频重采样Open和Close接口完成.mp4 ├─1.1 62XResample音频重采样Open和Close接口完成.zip ├─10. XDemuxThread音视频播放测试完成.mp4 ├─10.1 71XDemuxThread音视频播放测试完成.zip ├─2. XResample接口完成并添加测试代码.mp4 ├─2.1 63XResample接口完成并添加测试代码.zip ├─3. XAudioPlay音频播放接口Open和Close接口完成并测试.mp4 ├─3.1 64XAudioPlay音频播放接口Open和Close接口完成并添加测试代码.zip ├─4. XAudioPlay音频接口完成并测试音频播放成功.mp4 ├─4.1 65XAudioPlay音频接口完成并测试音频播放成功.zip ├─5. XAudioThread打开音频解码、重采样、播放成功.mp4 ├─6. XAudioThread缓冲队列Push完成.mp4 ├─7. XAudioThread完成功能并编写测试代码.mp4 ├─8. XVideoThread视频解码线程和显示接口完成并测试.mp4 ├─8.1 69XVideoThread视频解码线程和显示接口完成并测试.zip ├─9. XDemuxThread的Open接口完成.mp4 (9)\9. XPlay2.0 播放器项目实战开发三;目录中文件数:25个 ├─1. 音视频同步策略分析并计算出当前音频播放的pts.mp4 ├─10. 各个模块添加暂停功能SetPause完成音视频播放暂停.mp4 ├─10.1 81各个模块添加暂停功能SetPause完成音视频播放暂停.zip ├─11. 完成了Seek视频进度跳转到关键帧位置.mp4 ├─11.1 82完成了Seek视频进度跳转到关键帧位置.zip ├─12. 完成了音视频Seek封装功能.mp4 ├─13. 重构XDemuxThread和XDecode和ffmpeg解耦合.mp4 ├─14. 重载XSlider解决滑动条拖动bug并支持点击转到指定播放位置.mp4 ├─14.1 85完成了Seek功能解决了滑动条点击移动到指定位置.zip ├─15. 系统移植到ubuntu的linux64位环境编译运行.mp4 ├─15.1 86linux和windows跨平台版本包含windows的ffmpeg库文件.zip.zip ├─2. 测试播放rtmp香港卫视直播解决视频显示的行对齐问题.mp4 ├─2.1 73测试播放rtmp香港卫视直播解决视频显示的行对齐问题.zip ├─3. 通过QT界面选择打开视频文件.mp4 ├─3.1 74通过界面选择打开视频文件.zip ├─4. 抽象出XDecodeThread类添加Push和Pop函数.mp4 ├─5. XDecodeThread添加Clear清理接口清理音视频线程的缓冲队列.mp4 ├─5.1 76XDecodeThread添加Clear清理接口清理音视频线程的缓冲队列.zip ├─6. 所有模块添加关闭线程和清理资源接口解决程序退出宕掉的bug.mp4 ├─6.1 77所有模块添加Close关闭线程和清理资源接口解决程序退出会宕掉的bug.zip ├─7. 使用VS的诊断工具查看内存泄漏并修正音频播放线程内存泄漏.mp4 ├─7.1 78使用VS的诊断工具查看内存泄露问题并修正了音频播放线程的内存泄露.zip ├─8. 使用QSlider进度条显示播放的进度.mp4 ├─9. 窗口尺寸变化和双击全屏播放视频.mp4 ├─9.1 80窗口尺寸变化和双击全屏播放视频.zip
课程购买
课程价格
金币29
290金币限时优惠会员免费
销量:0
💎 开通会员每日免费下载,比单买更划算 →
支付成功后会自动显示下载资源云盘的链接!点击链接即可下载到本地。