ffmpeg的一些概念
  NYfg2BRCcXho 2023年11月02日 79 0


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存储格式

单声道依次存储,多声道交替存储。


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
NYfg2BRCcXho