天天看點

ffmpeg的一些概念

AVPacket

  1. 通過av_read_frame(pFormatCtx, &avPacket)擷取一個AVPacket
  2. 對于視訊來說,一個 AVPacket 一般包含一幀。
  3. 對于音頻來說,一個 AVPacket 可能包含多幀。

AVFrame

  1. 用來儲存解碼後的一幀資料。
  2. 資料存儲區域需要單獨配置設定。
  3. 對于音頻來說,一幀包含了多個采樣, 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);      

4. PCM存儲格式