libfaac库提供了一系列函数,用于将PCM音频数据编码为AAC格式的音频数据。
FAAC 库的使用场景包括但不限于以下几个方面:
- 音频流媒体传输
FAAC 库可以用于将音频流压缩为 AAC 格式,并进行网络传输。因为 AAC 格式具有高压缩比和高音质,所以在音频流媒体传输中被广泛应用,如网络电话、网络电视、网络广播等。
- 音频文件编码
FAAC 库可以用于将音频文件编码为 AAC 格式,并进行存储。因为 AAC 格式具有高压缩比和高音质,所以在音频文件编码中被广泛应用,如 MP4、M4A、3GP 等格式的文件。
- 音频转码
FAAC 库可以用于将不同格式的音频数据转码为 AAC 格式。对于需要将 PCM、MP3、WAV 等格式的音频数据转码为 AAC 格式的应用场景,可以使用 FAAC 库进行音频转码。
- 音频处理
FAAC 库可以用于音频处理,如音频降噪、音频增益、音频混音等。在音频处理过程中,使用 FAAC 库将处理后的音频数据编码为 AAC 格式,可以获得更高的压缩比和音质。
头文件定义
/*
Allows an application to get FAAC version info. This is intended
purely for informative purposes.
Returns FAAC_CFG_VERSION.
*/
int FAACAPI faacEncGetVersion(char **faac_id_string,
char **faac_copyright_string);
faacEncConfigurationPtr FAACAPI faacEncGetCurrentConfiguration(faacEncHandle hEncoder);
/**
* FAAC编码器的配置参数
* @param hEncoder
* @param config 编码器配置参数
* @return
*/
int FAACAPI faacEncSetConfiguration(faacEncHandle hEncoder, faacEncConfigurationPtr config);
/**
* 初始化FAAC编码器,并返回一个编码器句柄
* @param sampleRate
* @param numChannels
* @param inputSamples
* @param maxOutputBytes
* @return
*/
faacEncHandle FAACAPI faacEncOpen(unsigned long sampleRate,
unsigned int numChannels,
unsigned long *inputSamples,
unsigned long *maxOutputBytes);
/**
* 获取 AAC 编码器参数中 decoder specific info
* @param hEncoder
* @param ppBuffer ppBuffer 是指针的指针,用于存储 decoder specific info
* @param pSizeOfDecoderSpecificInfo ,pSizeOfDecoderSpecificInfo 用于存储 decoder specific info 的长度
* @return 函数返回解码器特定信息的长度
*/
int FAACAPI faacEncGetDecoderSpecificInfo(faacEncHandle hEncoder, unsigned char **ppBuffer,
unsigned long *pSizeOfDecoderSpecificInfo);
/**
* 将PCM音频数据编码为AAC格式的音频数据
* @param hEncoder 编码器句柄
* @param inputBuffer 输入PCM音频数据的缓冲区指针
* @param samplesInput 输入PCM音频数据的样本数
* @param outputBuffer 输出AAC格式音频数据的缓冲区指针
* @param bufferSize 输出AAC格式音频数据的缓冲区大小
* @return 编码后的字节数,如果返回0表示编码失败。
*/
int FAACAPI faacEncEncode(faacEncHandle hEncoder, int32_t *inputBuffer, unsigned int samplesInput,
unsigned char *outputBuffer,
unsigned int bufferSize);
/**
* 关闭FAAC编码器
* @param hEncoder 编码器句柄
* @return
*/
int FAACAPI faacEncClose(faacEncHandle hEncoder);