C音视频开发技能树初级
目录
C++音视频开发技能树(初级)
前言
来整理一下C++音视频开发从初级阶段到高级阶段要学习的知识点吧!
C++音视频开发技能树(初级)
第一阶段 音视频基础
音频基础知识
01.如何采集声音-模数转换原理
02.为什么高品质音频采样率>=44.1Khz
03.什么是PCM
04.一个采样点用多少位表示
05.采样值用整数还是浮点数表示
06.音量大小和采样值大关系
07.多少个采样点作为一帧数据
08.左右通道的采样数据如何排列
09.什么是PCM(脉冲编码调制)
10.音频编码原理
视频基础知识
01.RGB彩色原理
02.为什么需要YUV格式
03.什么是像素
04.分辨率、帧率、码率
05.YUV数据存储格式区别
06.YUV内存对齐问题
07.为什么画面显示绿屏
08.H264编码原理
09.H264 IPB帧的关系
注:具体H264编码格式见FFmpeg章节
解复用基础知识
01.什么是解复用,比如MP4格式
02.为什么需要不同格式的解复用格式MP4/FLV/TS
03.常见的服用格式MP4/FLV/TS
注:具体复用格式详解见FFmpeg章节
FFmpeg开发环境搭建
01.Windows、Ubuntu、MAC三大平台
02.QT安装
03.FFmpeg 命令行环境
04.FFmpeg API环境
05.FFmpeg 编译
06.vs2019安装(win平台)
音视频开发常用工具
01.MediaInfo-——分析视频文件
02.VL播放器——播放测试
03.EasyICE——分析TS流
04.flvAnalyser——分析FLV
05.mp4box——分析MP4
06.audacity——分析音频PCM
07.Elecard_streamEye——分析H264
08.海康YUVPlayer——分析YUY
第二阶段 FFmpeg实战
FFmpeg命令
01.音频PCM/AAC文件提取
02.视频YUY/H264文件提取
03.解复用、复用
04.音视频录制
05.视频裁剪和合并
06.图片/视频转换
07.直播推流和拉流
08.水印/画中画/九宫格滤镜
注:掌握FFmpeg的目的:1、快速掌握FFmpeg能做什么;2、加深对音视频的理解
SDL跨平台多媒体开发库实战
01.SDL环境搭建
02.SDL事件处理
03.SDL线程处理
04.视频YUV画面渲染
05.音频PCM声音输出
注:SDL兼容Win、Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出
FFmpeg的基石
01.FFmpeg 框架
02.FFmjpg 内存引用计数模型
03.解复用相关AVFormat XXX等
04.编解码相关AVCodec XXX等
05.压缩数据AVPacket
06.未压缩数据AVFrame
07.FFmpeg面向对象思想
08.Packet/Frame数据零拷贝
注:目的熟悉FFmpeg常用结构体和函数接口
FFmpeg过滤器
01.FFmpeg过滤chain框架
02.音频过滤器框架
03.视频规律器框架
04.多路音频混音amix
05.视频水印watermark
06.视频区域裁剪和翻转
07.视频添加logo
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学习:视频解复用->解码->编码->复用合成视频
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对于我们自己开发播放器有事半功倍的效果
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编码互转
ffmpeg多媒体视频处理工具
01.掌握ffmpeg.c的意义
02.ffmpeg框架分析
03.音视频编码
04.封装格式转换
05.提取音频
06.提取视频
07.logo叠加
08.音视频文件拼接
09.filter机制
10.命令行解析流程
11.MP4转FLV不重新编码逻辑
12.MP4转FLV重新编码逻辑
13.MP4转FLV timebase
14.MP4转FLV scale
注:ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的大体框架对于我们要实现一些不知道怎么编写代码的功能(用ffmpeg命令行可以但不知道怎么调用ffmpeg api时可以参考ffmpeg.c的逻辑)有极大的帮助,比如要裁剪视频的长度