AAC打包时间计算以及估算平均帧大小

先简单记录下最近对AAC音频学习的打包时间计算以及估算平均帧大小。打包时间,其实是可以音频处理上通用的;而估算平均帧大小,是由于AAC单个帧的大小并非是固定的,因此估算的是一个平均帧大小。

samples

做音频,肯定要对samples有所了解,其中AAC有以下几种samples:

profile samples
HE-AAC v1/v2 2048
AAC-LC 1024
AAC-LD/AAC-ELD 480/512

 

打包时间

打包时间,我们以AAC-LD进行举例说明,一般在RTP中常用的就是AAC-LD或AAC-ELD。两者的打包时间有两种,一个是480,一个是512。以512为16kHz例进行说明:

16000/512=31.25

也就是说16k的采样率,一秒内,其需要采样31.25次。那么一次的采样时间,也就是打包时间,就是如下:

1000/31.25=32ms

也就是说,16k,LD/ELD的打包时间其实是32ms。将两个公式合并下:

32ms=1000*512/16000

也就是:

打包时间=1000*samples/采样率

但是在与运营商对接这块,由于传统的音频一般采用的是G.711,其打包时间一般是20ms/10ms,一般都是10ms的倍数。而显然512采样的AAC-LD/AAC-ELD与20ms/10ms这种转换并不好转换。所以很多实用AAC-LD/AAC-ELD并且需要对接都采用的48k以及480的采样。刚好48k下的480采样的打包时间为10ms,可以很好的与G.711这类型的数据做转换兼容。

估算平均帧大小

接上文,16kHz的采样率,512采样,一秒内需要采样31.25次。如果我们需要的目标带宽是64kbps。

64000/31.25=2048bits

2048/8=256bytes

也就是目标带宽64kbps下,16kHz,512采样,平均一帧的大小是256字节。换算成公式,也就是:

一帧平均大小(bytes)=目标带宽/(采样率/samples)/8

一帧平均大小(bytes)=目标带宽*samples/采样率/8

其实这个公式,也是适用于G711的,我们将8kHz采样的64kbps的G711带入计算:

64000*160/8000/8=160

因为G711是固定码率的,所以其每个报文的大小,也就是刚好160bytes了。

 

转载请注明: 转载自elkPi.com

本文链接地址: AAC打包时间计算以及估算平均帧大小

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Scroll to top