ffmpeg如何入门

FFmpeg 介绍

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库。

一、音视频基础

1.1音视频基础

01. 如何采集声音-模数转换原理

02. 为什么高品质音频采样率>=44.1Khz

03. 什么是PCM

04. 一个采样点用多少位表示

05. 采样值用整数还是浮点数表示

06. 音量大小和采样值大关系

07. 多少个采样点作为一帧数据

08. 左右通道的采样数据如何排列

09. 什么是PCM(脉冲编码调制)

10. 音频编码原理

1.2 视频基础知识

01. RGB彩色原理

02. 为什么需要YUV格式

03. 什么是像素

04. 分辨率、帧率、码率

05. YUV数据存储格式区别

06. YUV内存对齐问题

07. 为什么画面显示绿屏

08. H264编码原理

09. H264 I P B帧的关系

1.3 解复用基础知识

01. 什么是解复用,比如MP4格式

02. 为什么需要不同的复用格式MP4/FLV/TS

03. 常见的复用格式MP4/FLV/TS

1.4 FFmpeg6.0开发环境搭建

01. Windows、Ubuntu、MAC三大平台

02. QT安装

03. FFmpeg命令行环境

04. FFmpeg API环境

05. FFmpeg编译

06. vs2019安装(win平台)

1.5 音视频开发常用工具

01. MediaInfo,分析视频文件

02. VLC播放器,播放测试

03. EasyICE,分析TS流

04. flvAnalyser,分析FLV

05. mp4box,分析mp4

06. audacity,分析音频PCM

07. Elecard_streamEye,分析H264

08. 海康YUVPlayer,分析YUV

二、FFMPEG命令行

2.1 FFmpeg命令

01. 音频PCM/AAC文件提取

02. 视频YUV/H264文件提取

03. 解复用、复用

04. 音视频录制

05. 视频裁剪和合并

06. 图片/视频转换

07. 直播推流和拉流

08. 水印/画中画/九宫格滤镜

"注:掌握FFmpeg的目的:快速掌握FFmpeg能做什么;加深对音视频的理解。"

2.2 SDL跨平台多媒体开发库实战

01. SDL环境搭建

02. SDL事件处理

03. SDL线程处理

04. 视频YUV画面渲染

05. 音频PCM声音输出

"注:SDL兼容Win、Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出"

2.3 FFmpeg基石精讲

01. FFmpeg框架

02. FFmpeg内存引用计数模型

03. 解复用相关AVFormat XXX等

04. 编解码相关AVCodec XXX等

05. 压缩数据AVPacket

06. 未压缩数据AVFrame

07. FFmpeg面向对象思想

08. Packet/Frame数据零拷贝

注:目的熟悉FFmpeg常用结构体和函数接口

2.4 FFmpeg音视频解复用+解码

01. 解复用流程

02. 音频解码流程

03. 视频解码流程

04. FLV封装格式分析

05. MP4封装格式分析

06. FLV和MP4 seek有什么区别

07. 为什么FLV格式能用于直播

08. 为什么MP4不能用于直播

09. MP4能否用来做点播

10. AAC ADTS分析

11. H264 NALU分析

12. AVIO内存输入模式

13. 音频重采样实战

14. 重采样后的数据播放时长是否一致

15. 重采样后PTS如何表示

16. 视频解码后YUV内存对齐问题

17. 音频解码后PCM排列格式问题

18. 硬件解码dxva2/nvdec/cuvid/qsv

19. 硬件gpu数据转移到cpu

20. H265解码

"注:FFmpeg API学习:视频解复用 -> 解码 -> 编码 -> 复用合成视频"

2.5 FFmpeg音视频编码+复用合成视频

01. AAC音频编码

02. H264视频编码

03. PCM+YUV复用合成MP4/FLV

04. H264编码原理

05. IDR帧和I帧区别

06. 动态修改编码码率

07. GOP间隔参考值

08. 复用合成MP4音视频不同步问题

09. 编码、复用timebase问题

10. MP4合成IOS不能播放问题

11. 重采样后PTS如何表示

12. 视频编码YUV内存对齐问题

13. 硬件编码dxva2/nvenc/cuvid/qsv

14. H265编码原理

15. H264、H265编码互转

三、FFmpeg6.0进阶

3.1 FFmpeg过滤器

01. FFmpeg过滤chain框架

02. 音频过滤器框架

03. 视频过滤器框架

04. 多路音频混音amix

05. 视频水印watermark

06. 视频区域裁剪和翻转

07. 视频添加logo

注: filter在视频剪辑领域应用广泛。

3.2 ffplay播放器

01. 掌握ffplay.c的意义

02. ffplay框架分析

03. 解复用线程

04. 音频解码线程

05. 视频解码线程

06. 声音输出回调

07. 画面渲染时间间隔

08. 音频重采样

09. 画面尺寸格式变换

10. 音频、视频、外部时钟同步区别

11. 以视频为基准时音频重采样补偿

12. 音量静音、调节大小的本质

13. 音视频packet队列大小限制

14. 音视频packet队列线程安全

15. 音视频frame队列大小限制

16. 音视频frame队列线程安全

17. 暂停、播放实现机制

18. seek播放导致的画面卡住问题

19. seek播放数据队列、同步时钟处理

20. 如何做到逐帧播放

21. 播放器退出的流程要点

"注: ffplay.c是ffplay命令的源码,掌握ffplay对于我们自己开发播放器有事半功倍的效果。"

四、FFmpeg6.0流媒体项目实战

4.1 FFmpeg+QT播放器项目实战

01.开源播放器分析

02. 自研框架分析

03. 播放器模块划分

04. 解复用模块

05. 音视频解码

06. 播放器控制

07. 音视频同步

08. 软件解码+硬件解码

09. 音量控制

10. 变速播放

11. 拖动跳转播放

12. 画面亮度、饱和度调节

13. 画面4:3 16:9切换

14. 码流信息分析

15. 画面旋转、翻转

16. 支持截屏

"项目意义:掌握播放器的开发,包括播放器框架分析、模块设计、队列设计、音视频同步、变速、拖动播放

等核心机制。"

4.2 FFmpeg RTMP录制+推流项目

01. RTMP协议简介

02. 录制+推流框架分析

03. 麦克风、系统声音捕获

04. 声音捕获延迟分析和解决

05. 摄像头、屏幕画面捕获

06. 画面捕获延迟分析和解决

07. 音频重采样

08. 视频scale

09. AAC编码器封装

10. H264编码器封装

11. 音频编码参数优化

12. 视频编码画质/CPU/码率/延迟优化

13. 音频、视频采集时如何设置时间戳

14. 采集-编码-推流时间戳转换

15. 将音频、视频保存为MP4文件

16. 采集-编码-保存mp4时间戳转换

17. 支持推流画面预览

18. 如何支持H265推流

19. 如何支持麦克风和系统声音混音

20. 实现音频采集降噪

21. RTMP推流是否会导致延迟

22. RTMP推流如何动态调整码率

23. RTMP推流如何动态调整帧率

24. Web端能否拉取RTMP推流

"项目意义: 本项目推流模块采用FFmpeg API,不需要深入理解RTMP协议仍然能实现推流直播。掌握推流框架和视频录制框架,包括音视频采集、模块划分、音视频同步、编码优化、推流延迟等核心技术。"

4.3 FFmpeg RTMP拉流+录像项目

01. RTMP协议简介

02. 拉流+录像框架分析

03. 拉流模块封装

04. AAC解码模块封装

05. H264解码模块封装

06. 包队列设计

07. 帧队列设计

08. 实现音视频同步

09. 能否不做音视频同步分析

10. 没有MetaData能否播放

11. RTMP拉流是否会导致延迟

12. 如何检测RTMP拉流延迟

13. 如何解决RTMP播放延迟

14. 添加支持变速播放

15. 变速播放策略分析和设置

16. 秒开功能原理分析与实现

17. ffplay、vlc能否用来测试播放延迟

18. 实现拉流、保存视频为MP4

19. 拉流、保存MP4时间戳转换

注: 掌握RTMP直播拉流+录像框架,包括拉流、队列设计、音视频同步、低延迟、保存为MP4文件等核心技术。

4.4 RTSP推流+录制项目

01. RTSP协议简介

0.2 基于RTMP推流项目实现RTSP推流+录制

"项目意义: 本项目推流模块采用FFmpeg API,不需要深入理解RTSP协议仍然能实现推流直播。掌握推流框架和视频录制框架,包括音视频采集、模块划分、音视频同步、编码优化、推流延迟等核心技术。"

4.5 RTSP拉流+录像项目

01. RTSP协议简介

0.2 基于RTMP拉流项目实现RTSP拉流+录像

注: 掌握RTSP拉流+录像框架,包括拉流、队列设计、音视频同步、低延迟、保存为MP4文件等核心技术。

五、项目实践

5.1自研项目和源码分析

  1. SDL音频播放

  2. SDL视频播放

  3. FFmpeg内存引用计数

  4. MP4/FLV/TS解复用

  5. 提取H264

  6. 提取AAC

  7. H264/H265解码

  8. AAC/MP3解码

  9. AVIO内存输入模式

  10. 音频重采样

  11. 视频尺寸格式变换

  12. DXVA2解码

  13. NVDEC解码

  14. CUVID解码

  15. QSV解码

  16. AAC编码优化

  17. H264编码优化

  18. H265编码优化

  19. AAC转MP3

  20. H264转H265

  21. DXVA2编码

  22. NVENC编码

  23. CUVID编码

  24. QSV编码

  25. MP4合成

  26. FLV合成

  27. 多路音频混音

  28. 视频添加水印

  29. 视频区域裁剪

  30. 视频翻转

  31. 视频添加logo

  32. ffplay播放器

  33. 自研 QT播放器

  34. RTMP推流

  35. RTMP拉流

  36. RTSP推流

  37. RTSP推流

  38. HLS拉流

★文末名片可以免费领取音视频开发学习资料,内容包括(FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)以及音视频学习路线图等等。

见下方!↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值