先问自己:为什么要现在学 FFmpeg 5.0

在音视频开发领域,FFmpeg 是绕不开的基石,但这套课并非为了让你成为底层协议专家。它主要解决的是“如何用代码快速集成音视频处理功能”的痛点。对于普通前端或应用层开发,你可能不需要手写复杂的编解码器,但面对市面上几百种视频格式、流媒体协议(如 HLS、FLV、RTMP),往往只能调用不透明的第三方库,一旦遇到格式不支持或播放卡顿,排查难度极大。本课程的核心价值在于打通底层原理与上层应用的壁垒,让你在面对自定义视频格式转换、动态视频水印添加、实时流媒体推流等具体业务场景时,不再受制于现成工具的局限,能够独立编写脚本或 SDK 来灵活处理数据。

内容适配度与学习路径建议

这门课程适合有一定 C 语言基础,并了解 HTTP/TCP 网络协议初阶知识的开发者。如果你是纯小白,建议先补充基础的指针操作和内存管理知识,否则直接看 C 源码会非常吃力;如果你已有 Python 或 Go 基础,可以通过课程中提供的绑定示例快速迁移技能。课程结构遵循“场景驱动”原则,并非枯燥的理论堆砌。建议先看前几章关于音视频基本组件(AVFormat、AVCodec)的解析,建立数据流概念;接着重点研读“实战”章节,那里涵盖了从视频转码、截图、提取音频到封装成不同容器的完整链路。不要试图一次性吃透所有模块,遇到某个具体需求(如“把 MP4 转为低码率 HLS 用于移动端播放”),再针对性地查阅对应章节的代码实现。

资料使用与独立产出目标

附赠的资料包是验证学习成果的关键,而非单纯的代码收藏。建议不要直接复制粘贴课程中的代码去跑,而是尝试用资料包里的基础 Demo 作为骨架,手动修改参数(如分辨率、码率、滤镜参数)来适配你自己的本地视频文件。例如,资料包中可能有简单的转码脚本,你可以尝试添加“裁剪视频时长”或“动态添加水印”的功能,看能否跑通。学完这套内容,你应该能独立搭建一套简单的视频处理中间件:能够接收用户上传的视频,根据预设规则自动转码成多种格式(H.264/H.265),生成带有索引的 M3U8 播放列表,并能处理直播推流。这足以支撑你完成短视频平台的上传处理、即时通讯软件的语音通话功能,或电商平台的商品视频预览接口。切记,资料包里的参数是通用的,真正的功力在于学会查阅官方文档,根据新的业务需求自行编写 FFmpeg 命令或 C 语言接口,这才是应对千变万化格式的终极手段。

课程目录

├── 第1章学习指南【课程提供200+问题与答案库】/ │ ├── [1.4M] 1-1课前必读(不看会错过一个亿).pdf
 │ ├── [ 64M] 1-2FFmpeg5.0-课程导学.mp4
 │ ├── [ 15M] 1-3音视频的应用范围与播放器架构讲解(选看).mp4
 │ ├── [ 17M] 1-4什么是FFmpeg?它能做什么?(选看).mp4
 │ ├── [101M] 1-5FFmpeg下载,编译与安装.mp4
 │ ├── [ 41K] 1-6Windows下安装FFmpeg.pdf
 │ └── [257K] 1-7FFmpeg命令大全文档.pdf
 ├── 第2章FFmpeg常用命令实战/ │ ├── [114M] 2-10FFmpeg直播相关的命令实战.mp4
 │ ├── [ 39M] 2-1FFmpeg常用命令分类讲解.mp4
 │ ├── [ 49M] 2-2FFmpeg音视频处理流程讲解.mp4
 │ ├── [ 55M] 2-3FFmpeg基本信息查询命令实战.mp4
 │ ├── [ 96M] 2-4FFmpeg录制命令实战.mp4
 │ ├── [108M] 2-5FFmpeg分解与复用命令实战.mp4
 │ ├── [ 97M] 2-6FFmpeg处理原始数据命令实战.mp4
 │ ├── [ 92M] 2-7FFmpeg滤镜命令实战.mp4
 │ ├── [ 91M] 2-8FFmpeg音视频的裁剪与合并命令实战.mp4
 │ └── [ 86M] 2-9FFmpeg图片与视频互转实战.mp4
 ├── 第3章FFmpeg开发必备C语言回顾-vim讲解/ │ ├── [ 17M] 3-1FFmpeg基础开发概述.mp4
 │ ├── [ 36M] 3-2vim模式及创建文件.mp4
 │ └── [ 47M] 3-3vim的基本操作与光标移动.mp4
 ├── 第4章FFmpeg开发必备C语言回顾/ │ ├── [127M] 4-10再论C语言指针.mp4
 │ ├── [172M] 4-11C语言编译器.mp4
 │ ├── [121M] 4-12C语言调试器.mp4
 │ ├── [ 85M] 4-1C语言Helloworld.mp4
 │ ├── [100M] 4-2C语言中的常量与变量.mp4
 │ ├── [ 54M] 4-3C语言中的指针-1.mp4
 │ ├── [129M] 4-4C语言中的指针-2.mp4
 │ ├── [ 83M] 4-5C语言结构体.mp4
 │ ├── [ 66M] 4-6C语言中的if_else.mp4
 │ ├── [110M] 4-7C语言中的for_while.mp4
 │ ├── [ 44M] 4-8C语言中的函数.mp4
 │ └── [ 65M] 4-9C语言中的文件操作.mp4
 ├── 第5章FFmpeg多媒体文件处理/ │ ├── [ 80M] 5-10抽取音频数据(一).mp4
 │ ├── [ 96M] 5-11抽取音频数据(二).mp4
 │ ├── [ 81M] 5-12抽取音频数据(三).mp4
 │ ├── [ 88M] 5-13调试extra_audio程序.mp4
 │ ├── [ 74M] 5-14抽取视频数据.mp4
 │ ├── [124M] 5-15多媒体格式转封装(一).mp4
 │ ├── [ 46M] 5-16多媒体格式转封装(二).mp4
 │ ├── [ 12M] 5-17多媒体格式转封装(三).mp4
 │ ├── [ 73M] 5-18视频裁剪(一).mp4
 │ ├── [ 69M] 5-19视频裁剪(二).mp4
 │ ├── [ 54M] 5-1FFmpeg初级开发介绍.mp4
 │ ├── [ 38M] 5-20作业:ffmpeg实现小咖秀.mp4
 │ ├── [ 76M] 5-2FFmpeg开发入门Log系统.mp4
 │ ├── [134M] 5-3FFmpeg日志系统.mp4
 │ ├── [110M] 5-4FFmpeg文件的删除与重命名.mp4
 │ ├── [106M] 5-5FFmpeg操作目录及list的实现(一).mp4
 │ ├── [ 46M] 5-6FFmpeg操作目录及list的实现(二).mp4
 │ ├── [ 57M] 5-7FFmpeg处理流数据的基本概念.mp4
 │ ├── [ 93M] 5-8搭建FFmpeg5.0开发环境.mp4
 │ └── [ 56M] 5-9配置VSCode调试环境.mp4
 ├── 第6章FFmpeg编解码实战/ │ ├── [ 62M] 6-10生成图片(二).mp4
 │ ├── [ 82M] 6-11生成带色彩的BMP图片(一).mp4
 │ ├── [ 80M] 6-12生成带色彩的BMP图片(二).mp4
 │ ├── [ 56M] 6-1FFmpeg中级开发介绍.mp4
 │ ├── [ 66M] 6-2视频编码(一).mp4
 │ ├── [ 46M] 6-3视频编码(二).mp4
 │ ├── [ 62M] 6-4视频编码(三).mp4
 │ ├── [102M] 6-5视频编码(四).mp4
 │ ├── [ 43M] 6-6调试encode_video.mp4
 │ ├── [101M] 6-7音频编码(一).mp4
 │ ├── [ 87M] 6-8音频编码(二).mp4
 │ └── [ 73M] 6-9生成图片(一).mp4
 ├── 第7章FFmpegSDL音视频渲染实战/ │ ├── [ 75M] 7-10实现PCM播放器-2.mp4
 │ ├── [ 80M] 7-11实现PCM播放器-3.mp4
 │ ├── [107M] 7-1SDL编译与安装.mp4
 │ ├── [116M] 7-2使用SDL的基本步骤.mp4
 │ ├── [145M] 7-3SDL窗口渲染.mp4
 │ ├── [169M] 7-4SDL处理事件.mp4
 │ ├── [ 81M] 7-5SDL彻底理解纹理渲染-1.mp4
 │ ├── [ 91M] 7-6SDL彻底理解纹理渲染-2.mp4
 │ ├── [185M] 7-7实现YUV播放器【(www.)】.mp4
 │ ├── [ 39M] 7-8SDL音频处理.mp4
 │ └── [ 78M] 7-9实现PCM播放器-1.mp4
 ├── 第8章FFmpeg播放器核心功能开发/ │ ├── [ 84M] 8-10获取音频并解码(一).mp4
 │ ├── [ 73M] 8-11获取音频并解码(二).mp4
 │ ├── [ 67M] 8-12获取音频并解码(三).mp4
 │ ├── [ 64M] 8-13调试SimplePlayer2.0.mp4
 │ ├── [ 36M] 8-14你必须清楚的多线程与锁.mp4
 │ ├── [ 62M] 8-15锁与条件变量的实际应用.mp4
 │ ├── [ 40M] 8-16播放器内核线程模型讲解.mp4
 │ ├── [ 73M] 8-17播放器核心结构体讲解.mp4
 │ ├── [ 72M] 8-18播放器线程退出机制讲解.mp4
 │ ├── [ 57M] 8-19音视频同步的基本概念及原理讲解.mp4
 │ ├── [ 94M] 8-20一个真正的播放器(一).mp4
 │ ├── [109M] 8-21一个真正的播放器(二).mp4
 │ ├── [ 76M] 8-22一个真正的播放器(三).mp4
 │ ├── [ 77M] 8-2最简单的视频播放器(二).mp4
 │ ├── [ 78M] 8-3最简单的视频播放器(三).mp4
 │ ├── [ 80M] 8-4最简单的视频播放器(四).mp4
 │ ├── [ 38M] 8-5最简单的视频播放器(五).mp4
 │ ├── [118M] 8-6解复用音视频数据.mp4
 │ ├── [ 39M] 8-7为音频设备设置参数.mp4
 │ ├── [ 83M] 8-8AVPacket队列实现(一).mp4
 │ └── [ 89M] 8-9AVPacket队列实现(二).mp4
 └── 第9章如何在Android下使用FFmpeg/ ├── [152M] 9-1第一个JNI程序.mp4
 ├── [142M] 9-2Java调用C接口-1.mp4
 ├── [172M] 9-3Java调用C方法-2.mp4
 ├── [ 39M] 9-4JNI中的Signature.mp4
 ├── [114M] 9-5C调Java的方法.mp4
 ├── [125M] 9-6编译android下可以使用的ffmpeg「通过生成工具链.mp4
 ├── [158M] 9-7编译Android下可使用的ffmpeg「不生成工具链方式.mp4
 └── [108M] 9-8实战-Android下的播放器.mp4
 ├── 第10章如何在IOS下使用FFmpeg/ │ ├── [101M] 10-1编译iOS下可使用的FFmpeg.mp4
 │ └── [ 87M] 10-2iOS中使用FFmpeg【(www.)】.mp4
 ├── 第11章滤镜Filter的核心原理及实现/ │ ├── [ 78M] 11-10如何使用filter-读取数据.mp4
 │ ├── [ 68M] 11-11如何使用filter-获取原始数据.mp4
 │ ├── [ 88M] 11-12如何使用filter-滤镜处理.mp4
 │ ├── [ 92M] 11-13如何使用filter-输出数据.mp4
 │ ├── [136M] 11-14如何使用filter-代码优化.mp4
 │ ├── [178M] 11-15如何实现自己的filter.mp4
 │ ├── [114M] 11-16实现filter需要知道的几个重要结构体.mp4
 │ ├── [112M] 11-17drawboxfilter的实现分析-1.mp4
 │ ├── [ 68M] 11-18drawboxfilter的实现分析-2.mp4
 │ ├── [ 47M] 11-1filter的核心原理.mp4
 │ ├── [159M] 11-2通过命令行使用filter.mp4
 │ ├── [ 96M] 11-3在项目中引入avfilter库.mp4
 │ ├── [153M] 11-4使用filter的具体步骤-1.mp4
 │ ├── [ 70M] 11-5使用filter的具体步骤-2.mp4
 │ ├── [ 43M] 11-6初始化filter的原理.mp4
 │ ├── [128M] 11-8初始化filter实战-2.mp4
 │ └── [ 99M] 11-9优化init_filter函数.mp4
 ├── 第12章课程总结/ │ ├── [ 35M] 12-1课程总结.mp4
 │ └── [ 33M] 12-2音视频进阶学习建议与行业痛点分析.mp4
 └── 资料代码/