网站首页 > 开源技术 正文
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自研项目和源码分析
- SDL音频播放
- SDL视频播放
- FFmpeg内存引用计数
- MP4/FLV/TS解复用
- 提取H264
- 提取AAC
- H264/H265解码
- AAC/MP3解码
- AVIO内存输入模式
- 音频重采样
- 视频尺寸格式变换
- DXVA2解码
- NVDEC解码
- CUVID解码
- QSV解码
- AAC编码优化
- H264编码优化
- H265编码优化
- AAC转MP3
- H264转H265
- DXVA2编码
- NVENC编码
- CUVID编码
- QSV编码
- MP4合成
- FLV合成
- 多路音频混音
- 视频添加水印
- 视频区域裁剪
- 视频翻转
- 视频添加logo
- ffplay播放器
- 自研 QT播放器
- RTMP推流
- RTMP拉流
- RTSP推流
- RTSP推流
- HLS拉流
猜你喜欢
- 2024-11-11 OnexPlayer mini版评测:全新Zen3架构加持,掌机也能玩遍3A大作
- 2024-11-11 NPN,i.MXRT1060,贴片器件以及速脉冲群干扰文章分享
- 2024-11-11 “开课吧”上线“微专业”,提供由浅入深的系统性在线教育服务
- 2024-11-11 数字视频YUV像素表示法以及视频帧和编解码概念介绍
- 2024-11-11 Android 音视频学习基础——1.6 ffmpeg 简单视频播放器
- 2024-11-11 Android 音视频学习基础——1.5 ffmpeg yuv输出
- 2024-11-11 芝杜NEO α Alpha播放机参数、功能、外观介绍
- 2024-11-11 「音视频技术」播放器架构设计(播放器发展)
- 2024-11-11 ffmpeg开发播放器学习笔记 - 认识YUV
- 2024-11-11 ijkPlayer主流程分析(ijkplayer ui)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)