Android使用FAAC进行AAC编码详解必看以及注意事项

使用FAAC转换PCM为AAC


注意事项、1 、输出格式中  0  = Raw ; 1= ADTS ,用户应根据自己需求来确定参数

                               2、每次给到Faac进行编码的数据 必须根据通道数、分辨率等算出来,可不是想给多少就给多少?同样上层的APP产生的数据也应该是这个值、Android中测试若不是规定值编解码有问题。

关于FAAC

FAAC是一个MPEG-4和MPEG-2的AAC编码器,其特性是:可移植性好,快速,支持LC/Main/LTP,通过Dream支持DRM,代码小相对于FFMPEG的AAC转码,FAAC实在是微乎其微,而且可以直接把代码加到工程里面编译,也可使用静态库,而没有巨大的动态库的烦恼。


下载安装

  • 直接按照官方文档所示,编译静态库以供我们程序使用。(我没这么做,个中曲折错误不细数)
  • 把FAAC的代码抠出来,直接加到我们的工程中去,或者抠出来编译一个静态库,简单暴力有效,需要的代码是libfaac和include两个目录下的所有文件(不包括子目录文件)。 目录文件列表如下所示:
    aacquant.c
    aacquant.h
    backpred.c
    backpred.h
    bitstream.c
    bitstream.h
    channels.c
    channels.h
    coder.h
    faac.h
    faaccfg.h
    fft.c
    fft.h
    filtbank.c
    filtbank.h
    frame.c
    frame.h
    huffman.c
    huffman.h
    hufftab.h
    ltp.c
    ltp.h
    midside.c
    midside.h
    psych.h
    psychkni.c
    tns.c
    tns.h
    util.c
    util.h
    version.h
    强烈推荐使用第二种方法

主要的函数介绍

faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
	unsigned int numChannels,
	unsigned long *inputSamples,
	unsigned long *maxOutputBytes);
//	描述 : 打开并初始化编码器
//	sampleRate : 编码输入信息的采样率
//	numChannels : 编码输入信息的通道数量,1-单声道 2-立体声
//	inputSamples : 编码后的数据长度
//	maxOutputBytes : 编码后的信息最大长度
int FAACAPI faacEncClose(faacEncHandle hEncoder);
//	描述:关闭编码器
//	hEncoder : faacEncOpen返回的编码器句柄
faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder);
//	描述 :获取当前编码器的配置信息
//	hEncoder : faacEncOpen返回的编码器句柄
int FAACAPI faacEncSetConfiguration(faacEncHandle hEncoder, faacEncConfigurationPtr config);
//	描述 : 配置解码器的参数
//	hEncoder : faacEncOpen返回的编码器句柄
//	config : 编码器的配置信息
int FAACAPI faacEncEncode(faacEncHandle hEncoder, 
	int32_t * inputBuff

你可能感兴趣的:(AAC/PCM音频,android,faac,参数详解,详解必看以及注意事项)