- 想看懂这个代码需要掌握以下音视频基础知识
1、音视频时间基是什么?
FFMPEG之TimeBase成员理解
补充:封装/解封装、编码/解码、采集/显示这三个层面中的taimeBase是代表不同的意思的,需要通过转换才可以进行上下层的交互。
2、ffmpeg中对AVRational结构体理解
ffmpeg # AVRational
假如一秒25帧就是1/25;那么换算成每毫秒25帧就是1000* 1 /25 = 1000/25;换算成每微妙25帧话就是1000*1000/25(每一毫秒等于1000微妙)。
3、PTS和DTS是什么?
PTS:显示的时间;
DTS:编码/解码时间;
音频在时间轴是连续的,所以PTS和DTS是一样的;
视频中因为有I、B、P帧,I是关键帧,P是向前预测,B是向前向后预测所以当没有B帧时候PTS和DTS在时间轴是一样的,为什么有了B帧就就不一样的呢,因为B帧要等待其他帧解码出来后才知道这个B帧是 多少。
I、B、P帧主要是为了更拼命努力