C++音视频实战-FFmpeg基础到工程-多路H265监控录放开发

封面

本文导读

这套C++音视频实战课程是一套非常专业的FFmpeg工程实战课,一共13章,从FFmpeg源码编译一直到多路H265监控录放系统的完整开发,是真正面向企业级音视频开发的实战教材。

第1章是开发环境准备和FFmpeg跨平台源码编译,包括VS2019+msys2环境搭建、x264/x265/fdk-aac源码编译、FFmpeg4.3源码编译、QT5.14安装,把开发环境从0搭好。第2章是图像格式与渲染,讲RGB像素格式、SDL2源码编译和渲染、YUV格式、用QT+SDL渲染RGB和YUV数据,还封装了XVideoView工厂模式。第3章是FFmpeg AVFrame视频渲染,讲AVFrame结构体、引用计数、帧率控制、多线程渲染、FPS显示。第4章是像素格式转换和多路YUV/RGB渲染,讲sws_scale转换、多路播放器设计。第5章是视频编码原理和实战,19节课讲FFmpeg编码接口、AVPacket、编码器上下文、X264编码参数(ABR/CQP/CBR/CRF)、H264码流结构(NALU/SPS/PPS/I帧)、XEncode编码封装。第6章是视频软解码和硬解码,讲解码接口、DXVA2硬件加速解码、XDecode封装。第7章是封装和解封装,讲MP4封装格式、解封装流程、av_seek_frame进度控制、重封装、视频剪切、H265重编码。第8章是解封装RTSP并录制视频,讲RTSP协议分析、大华海康相机设置、多线程责任链模式、断网自动重连、相机录制。第9章是XViewer多路H265监控录放系统0.1版本开发,24节课讲完整的监控系统——相机配置管理、多窗口RTSP渲染、多路录制、回放界面、自定义日历控件。第10章是音频原理与音视频同步,讲PCM格式、SDL音频播放、XAudioPlay单件模式、音量播放速度控制、音视频同步。第11章是XViewer 0.2版本,增加音视频同步播放、进度条、暂停播放、SEEK控制。第12章是FFmpeg+gSOAP+ONVIF探测和预览,讲ONVIF协议、gSOAP代码生成、设备探测、鉴权、RTSP地址获取。第13章是CMake自动构建FFmpeg6.0,20节课讲CMake构建x264/x265/SDL/FFmpeg6.0自动化构建。

整套课程从底层编解码到上层应用开发,从单路播放到多路监控,是音视频开发的绝佳实战教材。


✨ 资源亮点

  • 🎬 13章完整音视频开发体系:环境搭建→图像渲染→编码→解码→封装→RTSP录制→多路监控系统→音频同步→ONVIF→CMake构建,从底层到上层全覆盖
  • 📹 多路H265监控录放系统实战:第9章用24节课完整开发一个监控系统——相机管理、多窗口渲染、多路录制、回放日历,是企业级项目级别的实战
  • 🔧 FFmpeg源码级编译:第1章和第13章专门讲FFmpeg4.3和FFmpeg6.0的源码编译,包括x264/x265/fdk-aac依赖编译,不是用预编译库而是从源码构建
  • 🧩 工程化封装思维:XVideoView、XEncode、XDecode、XAudioPlay、XThread等类的封装,用工厂模式、单件模式、责任链模式,体现工程化开发能力
  • 🔊 音视频同步深入:第10章专门讲音频原理和音视频同步,包括PCM格式、SDL音频、时间戳同步,这是播放器开发的核心难点

👥 适合人群

  • 👨‍💻 想从事音视频开发、流媒体开发的C/C++工程师,需要系统学习FFmpeg和实战项目
  • 🔧 有C++和Qt基础,想转向音视频方向的开发者,需要从编解码基础到项目实战的完整路径
  • 📹 做安防监控、视频会议、直播相关产品的开发者,需要参考多路监控系统的实现方案

🔗 资源获取方式

  • 资源名称:04.C++音视频实战-FFmpeg基础到工程-多路H265监控录放开发

[付费阅读]隐藏内容 – 管理员可见

  • 资源规模:共 13 个目录、165 个文件

💡 使用方法:复制上方链接,打开「夸克APP」或访问夸克网盘网页版,粘贴链接并输入提取码即可保存到自己的网盘。


📂 课程目录

📂 **04.C++音视频实战-FFmpeg基础到工程-多路H265监控录放开发**
├── 📂 第10章 音频原理_ffmpeg&SDL播放音视频同步 (4小时4分钟 12节)
│ ├── 📄 10-1 学习引导和章节介绍必看.mp4
│ ├── 📄 10-10 音视频播放XPlayer视频打开和线程初始化.mp4
│ ├── 📄 10-11 完成音视频文件多线程同步播放.mp4
│ ├── 📄 10-12 章总结和代码说明.mp4
│ ├── 📄 10-2 音频核心基础声波频率_采样频率_采样大小.mp4
│ ├── 📄 10-3 PCM格式_音频编码分析_SDL音频.mp4
│ ├── 📄 10-4 完成SDL播放PCM音频文件项目.mp4
│ ├── 📄 10-5 完成了XAudioPlay类的单件模式初始化.mp4
│ ├── 📄 10-6 完成XAudioPlay播放音频通过缓冲队.mp4
│ ├── 📄 10-7 音频播放音量和播放速度_慢放.mp4
│ ├── 📄 10-8 mp4中音频解码解封装手动转换平面格式.mp4
│ └── 📄 10-9 音视频同步_初始化_渲染播放和时间.mp4
├── 📂 第11章 XViewer 0.2版本 (2小时9分钟 6节)
│ ├── 📄 11-1 学习引导和章节介绍必看.mp4
│ ├── 📄 11-2 xviewer0.2监控工具支持音视频同步播放.mp4
│ ├── 📄 11-3 完成QT界面设置音视频播放速度.mp4
│ ├── 📄 11-4 完成QT进度条显示视频播放进度.mp4
│ ├── 📄 11-5 完成音视频的暂停和播放.mp4
│ └── 📄 11-6 完成SEEK进度条控制播放进度.mp4
├── 📂 第12章 ffmpeg_gsoap_onvif探测和预览onvif协议 (3小时33分钟 13节)
│ ├── 📄 12-1 第十二章学习引导和章节介绍必看.mp4
│ ├── 📄 12-10 完成鉴权并获取onvif设备能力.mp4
│ ├── 📄 12-11 完成onvif鉴权和获取媒体信息.mp4
│ ├── 📄 12-12 完成onvif的rtsp地址获取.mp4
│ ├── 📄 12-13 基于gsoap的ffmpeg预览onvif.mp4
│ ├── 📄 12-2 修正无法删除摄像机和修改线程退出函数后录制.mp4
│ ├── 📄 12-3 Onvif协议分析和测试工具使用.mp4
│ ├── 📄 12-4 gsoap的wsdl2h_vs2019.mp4
│ ├── 📄 12-5 生成支持鉴权的onvif代码gsoap.mp4
│ ├── 📄 12-6 创建第一个test_onvif项目.mp4
│ ├── 📄 12-7 初始化和清理相机探测probe的soap消息头.mp4
│ ├── 📄 12-8 完成gsoap的onvif_discovery.mp4
│ └── 📄 12-9 封装gsoap代码使用c++调用重构设备探测.mp4
├── 📂 第13章 CMake自动构建FFmpeg6.0 (4小时41分钟 20节) (另有 5 个文件未展示)
│ ├── 📄 13-1 cmake构建ffmpeg6.0和课程项目说明.mp4
│ ├── 📄 13-10 使用cmake构建x264生成并执行shell.mp4
│ ├── 📄 13-11 手动构建ffmpeg6.0.mp4
│ ├── 📄 13-12 准备好自动化构建的目录和文件.mp4
│ ├── 📄 13-13 实现cmake的build_and_install函数构建SDL.mp4
│ ├── 📄 13-14 使用build_and_install构建x265_opus_fdk-acc.mp4
│ ├── 📄 13-15 实现cmake的config_and_build函数构建x264.mp4
│ ├── 📄 13-16 使用cmake完成ffmpeg6.0的自动化构建.mp4
│ ├── 📄 13-17 使用cmake构建xcodec.mp4
│ ├── 📄 13-18 使用cmake构建xviewer支持QT.mp4
│ ├── 📄 13-19 使用cmake自动部署xviewer包含自动复制QT动态库.mp4
│ ├── 📄 13-2 cmake_msys2_vs2022环境准备.mp4
│ ├── 📄 13-20 一次性自动构建和安装ffmpeg和xviewer.mp4
│ ├── 📄 13-3 创建批处理自动运行vs控制台和msys2.mp4
│ └── 📄 13-4 使用cmake分步骤手动构建SDL源码.mp4
├── 📂 第1章 开发环境准备和ffmpeg跨平台源码编译(2小时33分钟13节)
│ ├── 📄 1-1 音视频实训课程介绍.mp4
│ ├── 📄 1-10 Linux编译x264_x265_aac.mp4
│ ├── 📄 1-11Linux编译ffmpeg4.3并编写测试程序.mp4
│ ├── 📄 1-12 QT5.14安装和项目创建并切换不同的QT版本.mp4
│ ├── 📄 1-13 章节总结和ffmpeg代码调试设置.mp4
│ ├── 📄 1-2 学习引导和章节介绍必看.mp4
│ ├── 📄 1-3 环境准备步骤说明VS2019控制台和msys2运行.mp4
│ ├── 📄 1-4 msys2使用pacman安装编译依赖工具.mp4
│ ├── 📄 1-5 完成x264源码编译和安装.mp4
│ ├── 📄 1-6 完成音频编码fdk-aac源码编译和安装.mp4
│ ├── 📄 1-7 完成x265源码编译和安装.mp4
│ ├── 📄 1-8 ffmpeg4.3在vs2019完成源码编译.mp4
│ └── 📄 1-9 第一个vs2019ffmpeg项目创建和源码.mp4
├── 📂 第2章 图像格式_基于QT和SDL渲染(3小时57分钟16节)
│ ├── 📄 2-1 学习引导和章节介绍必看.mp4
│ ├── 📄 2-10 XVideoView工厂模式封装SDL接口设计.mp4
│ ├── 📄 2-11 XSDL封装完成窗口渲染器和材质的初始化.mp4
│ ├── 📄 2-12 完成XSDL渲染Draw接口并测试渲染.mp4
│ ├── 📄 2-13 渲染画面随着窗口大小自动缩放并解决锯齿问题.mp4
│ ├── 📄 2-14 完成XSDL资源清理接口接收窗口退出事件放.mp4
│ ├── 📄 2-15 总结_代码下载编译说明和作业.mp4
│ ├── 📄 2-2 RGB像素格式原理讲解并使用QT渲染RGB数据.mp4
│ ├── 📄 2-3 合并两幅图像并使用SDL_QT渲染和保持.mp4
│ ├── 📄 2-4 SDL2源码编译安装和渲染视频接口详解.mp4
│ ├── 📄 2-5 SDL2渲染RGB数据画面定时变化.mp4
│ ├── 📄 2-6 SDL渲染RGB数据到QT的控件中通过定时器刷新.mp4
│ ├── 📄 2-7 合并两幅图像法使用SDL渲染并用QT保存文件.mp4
│ ├── 📄 2-8 YUV格式详解并使用ffmpeg生成yuv文件.mp4
│ └── 📄 2-9 使用SDL_QT直接播放渲染YUV格式文件.mp4
├── 📂 第3章 FFmpeg AVFrame视频渲染 (2小时28分钟 9节)
│ ├── 📄 3-1 学习引导和章节介绍必看.mp4
│ ├── 📄 3-2 AVFrame结构体和相关ffmpeg接口详解.mp4
│ ├── 📄 3-3 测试AVFrame的空间分配引用计数接口齐.mp4
│ ├── 📄 3-4 读取YUV数据到AVFrame并添加渲染e.mp4
│ ├── 📄 3-5 视频帧率详解帧率控制策略分析和sleep时间.mp4
│ ├── 📄 3-6 测试sleep和wait的精确度并实现精确控制.mp4
│ ├── 📄 3-7 多线程控制帧率渲染AVFrame的YUV数据.mp4
│ ├── 📄 3-8 渲染界面中添加显示fps和设置fps的控件.mp4
│ └── 📄 3-9 总结_代码下载编译说明和作业.mp4
├── 📂 第4章 FFmpeg像素格式转换和多路YUV、RGB渲染 (2小时37分钟 11节)
│ ├── 📄 4-1 学习引导和章节介绍必看.mp4
│ ├── 📄 4-10 完成了两路视频帧率显示并能设置不同的播放帧率.mp4
│ ├── 📄 4-11 总结_代码下载编译说明和作业.mp4
│ ├── 📄 4-2 FFMpeg的像素格式转换接口解.mp4
│ ├── 📄 4-3 像素格式转换YUV420P转换为RGBA.mp4
│ ├── 📄 4-4 sws_scale像素格式转换RGBA转.mp4
│ ├── 📄 4-5 多路YUV_RGB文件播放器需求和设计说明.mp4
│ ├── 📄 4-6 YUV_RGB播放器QT界面设计和打开文件处理.mp4
│ ├── 📄 4-7 完成多路XVideoView窗口初始化并生成测试.mp4
│ ├── 📄 4-8 XVideoView_Read接口读取像素数据.mp4
│ └── 📄 4-9 完成了支持YUV和RGB格式两路视频同时播放.mp4
├── 📂 第5章 FFmpeg视频编码原理和实战 (4小时26分钟 19节) (另有 4 个文件未展示)
│ ├── 📄 5-1 学习引导和章节介绍必看.mp4
│ ├── 📄 5-10 代码试验ultrafast最快编码.mp4
│ ├── 📄 5-11 ABR平均比特率CQP恒定质量X264.mp4
│ ├── 📄 5-12 CBR恒定比特率_CRF恒定速率因子.mp4
│ ├── 📄 5-13 H264码流中NALU_SPS_PPS_I.mp4
│ ├── 📄 5-14 代码测试解析出AVPacket中的.mp4
│ ├── 📄 5-15 XEncode编码封装完成上下文创建码.mp4
│ ├── 📄 5-16 XEncode添加线程安全锁并添加支持.mp4
│ ├── 📄 5-17 XEncode完成编码和AVFrame创.mp4
│ ├── 📄 5-18 XEncode解决丢帧添加获取编码.mp4
│ ├── 📄 5-19 总结_代码下载编译说明.mp4
│ ├── 📄 5-2 视频编码原理概述.mp4
│ ├── 📄 5-3 FFMpeg编码接口和AVPacket结构体详解.mp4
│ ├── 📄 5-4 FFmpeg编码器获取和上下文打开.mp4
│ └── 📄 5-5 完成了视频帧创建和编码.mp4
├── 📂 第6章 FFmpeg视频软解码和硬解码 (3小时5分钟 12节)
│ ├── 📄 6-1 学习引导和章节介绍必看.mp4
│ ├── 📄 6-10 DXVA硬解码到GPU不复制到内存.mp4
│ ├── 📄 6-11 DXVA硬解到GPU不复制内存渲染代码实现.mp4
│ ├── 📄 6-12 总结和作业要求.mp4
│ ├── 📄 6-2 FFmpeg视频解码接口详细分析.mp4
│ ├── 📄 6-3 av_parser_parse2从h264文件.mp4
│ ├── 📄 6-4 基于ffmpeg接口完成视频解码.mp4
│ ├── 📄 6-5 完成解码视频渲染并测试多线解码帧率.mp4
│ ├── 📄 6-6 完成硬件GPU加速解码DXVA2.mp4
│ ├── 📄 6-7 修改XVideoView支持渲.mp4
│ ├── 📄 6-8 重构XEncode添加基类XCodec.mp4
│ └── 📄 6-9 完成XDecode解码支持硬解并做.mp4
├── 📂 第7章 FFmpeg封装和解封装 (5小时13分钟 14节)
│ ├── 📄 7-1 学习引导和章节介绍必看.mp4
│ ├── 📄 7-10 完成XFormat和XDemux重构解封装.mp4
│ ├── 📄 7-11 完成封装代码重构XMux并测试重新封装音视频文件(8.15).mp4
│ ├── 📄 7-12 根据输入的文件名和时间参数完成截断视频功能.mp4
│ ├── 📄 7-13 完成视频重编码为h265并写重新封装MP4.mp4
│ ├── 📄 7-14 总结和代码说明.mp4
│ ├── 📄 7-2 封装分析和MP4封装格式详解.mp4
│ ├── 📄 7-3 FFmpeg解封装流程和接口详解.mp4
│ ├── 📄 7-4 FFmpeg解封装代码示例并区分音频视频包.mp4
│ ├── 📄 7-5 完成解封装后对视频进行解码和渲染代码.mp4
│ ├── 📄 7-6 封装流程分析ffmpeg封装文件接口详解.mp4
│ ├── 📄 7-7 av_seek_frame控制播放进度函数详解.mp4
│ ├── 📄 7-8 完成重封装mp4文件测试基本代码.mp4
│ └── 📄 7-9 重封装剪切中间10秒视频并重新计算pts_dts.mp4
├── 📂 第8章 FFmpeg解封装rtsp并录制视频 (4小时31分钟 16节) (另有 1 个文件未展示)
│ ├── 📄 8-1 学习引导和章节介绍必看.mp4
│ ├── 📄 8-10 完成责任链代码和返回智能指针类型的解封装视频参数.mp4
│ ├── 📄 8-11 完成解码线程初始化和并实现线程t.mp4
│ ├── 📄 8-12 完成通过责任链接收解封装AVPacket数据.mp4
│ ├── 📄 8-13 完成rtsp的多线程责任链解封装解码和渲染.mp4
│ ├── 📄 8-14 封装音视频处理线程代码初始化传递音视频参数.mp4
│ ├── 📄 8-15 完成相机录制重新封装处理pts计算问题.mp4
│ ├── 📄 8-16 总结和代码测试本地模拟rtsp.mp4
│ ├── 📄 8-2 使用VLC模拟一个rtsp服务器.mp4
│ ├── 📄 8-3 RTSP协议详细分析包括鉴权协议分析.mp4
│ ├── 📄 8-4 大华和海康相机设置和rtsp协议抓包分析.mp4
│ ├── 📄 8-5 ffmpeg的rtsp相关接口分析和多线程处理.mp4
│ ├── 📄 8-6 完成XThread线程类的启动和安全退出.mp4
│ ├── 📄 8-7 开发XDemuTask线程类使用上下文的回调函数.mp4
│ └── 📄 8-8 解封装rtsp断网或摄像机重启后自动重连处理.mp4
└── 📂 第9章 XViewer多路H265监控录放系统0.1版本开发 (7小时43分钟 24节) (另有 9 个文件未展示)
├── 📄 9-1 学习引导和章节介绍必看.mp4
├── 📄 9-10 完成相机配置读取和列表显示列表显示.mp4
├── 📄 9-11 代码生成新增摄像机配置界面.mp4
├── 📄 9-12 完成摄像机管理的修改和删除功能.mp4
├── 📄 9-13 通过QListWidget拖拽实现指定播放.mp4
├── 📄 9-14 通过拖拽配置完成多窗口rtsp相机的渲染.mp4
├── 📄 9-15 多路音视频录制模块设计说明.mp4
├── 📄 9-16 定时创建新的视频文件并解决录制文件开发花屏问题.mp4
├── 📄 9-17 多路相机录制界面交互功能完成.mp4
├── 📄 9-18 回放界面设计并实现与预览界面的切换按钮.mp4
├── 📄 9-19 自定义日历控件显示有视频日期继承.mp4
├── 📄 9-2 XViewer多路H265监控录放开发项目.mp4
├── 📄 9-20 点击摄像机刷新日历改变有视频文件日期的背景.mp4
├── 📄 9-21 点击视频时间列表获取视频绝对路径.mp4
└── 📄 9-22 添加回放日历中的视频播放器.mp4

📖 学习建议

1️⃣ 环境搭建一定要自己做:第1章的FFmpeg源码编译是基础,x264/x265/fdk-aac/FFmpeg都要自己编译一遍,遇到编译错误要学会排查

2️⃣ 每章都封装自己的类:XVideoView、XEncode、XDecode这些类不要只看老师写,要自己跟着封装,理解每个接口的设计思路

3️⃣ 监控系统项目重点突破:第9章的XViewer多路监控系统是课程核心,24节课的内容要逐节跟着做,最后要有一个能运行的多路监控播放器

4️⃣ 理解音视频同步原理:第10章的音视频同步是难点,要理解时间戳、音频时钟、视频同步的基本原理,不要只调API

5️⃣ CMake构建部分不要跳过:第13章的CMake自动构建是工程化必备技能,学完后能自己写CMakeLists.txt构建复杂项目


总结与思考

音视频开发是C/C++领域中一个技术门槛较高、人才稀缺的方向,而FFmpeg是音视频开发中最核心的工具库。这套课程的优秀之处在于它不是简单地”调用FFmpeg API做个播放器”,而是从源码编译开始,经过编解码原理、封装格式、RTSP协议,最后到完整的多路H265监控录放系统开发,走的是从底层到上层的完整路径。特别是第9章的XViewer监控系统,24节课的内容涵盖了相机管理、多窗口渲染、多路录制、回放日历,这已经是一个可以直接用到安防项目中的原型系统。

学完这套课后,你不仅掌握了FFmpeg的核心API,更重要的是理解了音视频开发的工程化思维——如何设计XVideoView抽象接口、如何用责任链模式处理解封装解码渲染流程、如何用单件模式管理音频播放、如何用CMake自动化构建整个项目。这些工程能力比单纯的API调用更有价值。如果你目标是做音视频或流媒体开发,这套课值得认真学完。

© 版权声明
THE END
喜欢就支持一下吧
点赞15
相关推荐
评论 抢沙发

请登录后发表评论

    请登录后查看评论内容

温馨提示:
1、本内容转载于网络,版权归原作者所有!
2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!