我从设备中采样了原始PCM数据,并通过libfaac将其编码为“ .aac”格式(ADTS格式)的音频文件,而当我以16KHZ或41KHZ对其进行采样时,编码后的“ .aac”文件播放速度更快比正常的。 是什么原因?
参数配置如下:
pConfiguration->inputFormat = FAAC_INPUT_16BIT;
pConfiguration->outputFormat = 1; /*0 - raw; 1 - ADTS*/
pConfiguration->bitRate = 16000;
pConfiguration->useTns = 0;
pConfiguration->allowMidside = 1;
pConfiguration->shortctl = SHORTCTL_NORMAL;
pConfiguration->aacObjectType = LOW;
pConfiguration->mpegVersion = MPEG4;
//pConfiguration->useLfe = 1;
答案 0 :(得分:0)
问题已解决:
我丢失了某些数据帧的原始PCM数据,我使用了HISI3516EV100处理器,使用HISI SDK,问题是我配置了PCM数据的参数,在16000HZ的情况下采样率设置为160采样/帧,这将导致每秒产生16000/160 = 100帧,帧速率太高,我需要调用每个PCM数据帧的处理函数进行AAC编码,这会在堆栈中引起很多功能,几乎1000/100 = 10ms需要完成一帧PCM数据才能调用AAC编码接口,频率太高,并且libfaac库占用的CPU很少,导致丢失帧(原始PCM数据帧部分丢失)。丢失),因此在原始PCM数据部分丢失的情况下,编码的AAC数据将比平常播放更快。
解决方案:将PCM帧的帧长延长到160个样本/帧---> 480个样本/帧