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. 一幀占用記憶體
av_samples_get_buffer_size(NULL, out_channel_nb, avFrame->nb_samples,
out_sample_fmt, 1);