因为工作忙,博客写的比较乱,就当是给自己的一个备忘录。
由于MP4需要使用AAC编码的音频数据,所以需要将PCM数据转换成AAC,使用的工具是FAAC。
FAAC1.28的下载地址:An Introduction to the World of Java Programming - AudioCoding.com
1、将源码解压后,将libfaac/coder.h里的MAX_CHANNELS改成1,如果默认是64的话应该是占用内存太大,导致内存不够用。
2、在faac-1.28目录下,执行
./configure --host=arm-hisiv300-linux --prefix=/home/swann/nfs/faac/arm --disable-dependecy-tracking --enable-shared --enable-static --with-pic --without-mp4v2
注意--prefix目录使用自己的。如果编译出错,检查一下交叉编译器是否有效,另外make clean一下。
然后执行make和make install
3、将生成的lib/libfaac.a拷贝到mpp/lib目录中。在要调用的文件的Makefile中,加上-lfaac,参考如下:
$(CC) $(INC) $(CFLAGS) -lpthread -lm -o $@ $^ $(MPI_LIBS) $(AUDIO_LIBA) $(SENSOR_LIBS) -lfaac -lmp4v2 -lstdc++ -lm -L $(CURRENT)/../../lib
然后编译要执行的文件。
4、在函数中调用faacEncOpen,如果成功,证明faac就可以使用了。
unsigned long inputSample = 0;
unsigned long maxOutputBytes = 0;
faacEncHandle encoder = {0};
encoder = faacEncOpen(8000 , 1 , &inputSample, &maxOutputBytes);
printf("nInputSamples = %d nMaxOutputBytes = %d\n",inputSample,maxOutputBytes);
faacEncClose(encoder);