AVPacket
- 通过av_read_frame(pFormatCtx, &avPacket)获取一个AVPacket
- 对于视频来说,一个 AVPacket 一般包含一帧。
- 对于音频来说,一个 AVPacket 可能包含多帧。
AVFrame
- 用来保存解码后的一帧数据。
- 数据存储区域需要单独分配。
- 对于音频来说,一帧包含了多个采样, nb_samples告诉了有多少个采样。
音频相关
1. 采样和采样率
采样和采样率是不一样的。采样率是说一秒有多少个采样。
对于aac来说一帧有1024个采样,对于44.1KHZ采样率来说,一秒有44.1k个采样。
2. 一帧播放时长
对于aac来说,一帧的播放时间是= 1024/44100 = 0.02322s
3. 一帧占用内存
可以根据声道个数,一帧含有的采样数,采样的格式来确定占用内存的大小。如下:
4. PCM存储格式
单声道依次存储,多声道交替存储。