wav格式音频转换成aac格式音频(二)
来源:互联网 发布:淘宝售后服务 编辑:程序博客网 时间:2024/05/21 06:39
根据前一篇的分析,则需要实现在AACCodecHelper.h中声明的几个函数,如下:
#include"faac.h"
ULONG nSampleRate = 11025; // 采样率
UINT nChannels = 1; // 声道数
UINT nPCMBitSize = 16; // 单样本位数
ULONG nInputSamples = 0;
ULONG nMaxOutputBytes = 0;
faacEncHandle hEncoder;
faacEncConfigurationPtr pConfiguration;
BYTE* pbPCMBuffer;
BYTE* pbAACBuffer;
INT32 nPCMBufferSize;
INT32 nRet = 0;
//////////////////
INT32 t = 0;
//////////////////
void openFaacEngine(){//打开Faac引擎
hEncoder = faacEncOpen(nSampleRate, nChannels, &nInputSamples, &nMaxOutputBytes);
pConfiguration = faacEncGetCurrentConfiguration(hEncoder);
pConfiguration->inputFormat = FAAC_INPUT_16BIT;
nRet = faacEncSetConfiguration(hEncoder, pConfiguration);
nPCMBufferSize = nInputSamples * nPCMBitSize / 8;
pbPCMBuffer = new BYTE[nPCMBufferSize];
pbAACBuffer = new BYTE [nMaxOutputBytes];
}
void closeFaacEngine(){//关闭Faac引擎
nRet = faacEncClose(hEncoder);
delete[] pbPCMBuffer;
delete[] pbAACBuffer;
}
int wavToAAC(const char* wavData,int wavDataLen,char* aacData){
/**
* 将长为wavDataLen个字节的wav音频数据转化为aac,写入aacData
* 成功返回aac数据的字节数,失败返回-1
*/
if (hEncoder == NULL) {
return -1;
}
INT32 nInputSamples = 0;
INT32 readPCMByteSum = 0;
INT32 writeAACByteSum = 0;
INT32 nAACEncRet = 0;
INT32 j = 0;
INT32 k = 0;
while (readPCMByteSum < wavDataLen) {
for (j = 0; j < nPCMBufferSize; j++) {
*(pbPCMBuffer + j) = *(wavData + j + readPCMByteSum);
}
readPCMByteSum += nPCMBufferSize;
nInputSamples = nPCMBufferSize / (nPCMBitSize / 8);//计算输入样本的个数
/**
*调用faacEncEncode()函数,这里略过
*/
*(aacData + k + writeAACByteSum) = *(pbAACBuffer + k);
}
writeAACByteSum += nAACEncRet;
fprintf(stderr,"%d: faacEncEncode returns %d\n", t++, nAACEncRet);
}
return writeAACByteSum;
}
未完待续~
PS:初写文章,文笔生涩之处,各位请见谅,若有疑问或者交流的,可加本人YY号:301558660
转载请注明出处:山水间博客,http://blog.csdn.net/linyanwen99/article/details/7553317
- wav格式音频转换成aac格式音频(二)
- wav格式音频转换成aac格式音频(一)
- wav格式音频转换成aac格式音频(三)
- wav格式音频转换成aac格式音频(四)
- wav格式音频转换成flv格式音频(二)
- wav格式音频转换成flv格式音频(一)
- wav格式音频转换成flv格式音频(三)
- wav格式音频转换成flv格式音频(四)
- AAC音频编码格式
- unity wav 格式音频转换为二进制文件
- AAC音频编码格式介绍
- AAC 音频编码格式解析
- Wav 格式音频播放实例
- wince音频驱动---wav格式
- 录制wav格式的音频
- java 播放wav格式音频
- ios 使用音频队列播放amr格式转换成wav的格式,只有嘈杂声
- 通过ffmpeg将aac格式转换成wav格式
- hadoop命令distcp注意事项
- 宁愿坐在劳斯莱斯里哭泣,也不在天桥底下假装快乐
- Javascript 判断是否为IE浏览器的方法
- 微软数字签名工具--SigCheck的应用
- spring-security3 配置和使用
- wav格式音频转换成aac格式音频(二)
- 简单的反虚拟机测试代码
- 开源云平台OpenStack 运筹帷幄:全面突破
- Qt常用类(1)—— 开端
- 别了,DjVu!
- 歌榜
- 数组字符集转换
- 新浪与腾讯的开放平台对比(上)
- Qt 常用类(3)—— QString