编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

ffmpeg如何入门(ffmpeg 教程)

wxchong 2024-11-11 14:32:53 开源技术 26 ℃ 0 评论

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/WebRTC/RTMP/NDK/Android音视频流媒体高级开发

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

二、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拉流

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表