折腾2个星期,就搞出这个
因为是要在hi3531开发板上做一次aac算法的编码,下面将在移植过程中遇到的坑记录一下
前提是你系统已经安装好你的交叉编译环境和已经下载了faac1.28
官方地址是
http://www.audiocoding.com/index.html
开发环境:Ubantu12.04.2
交叉编译器:hisiv300-linux-g++,hisiv300-linux-gcc
基本思路就是先将faac1.28编译成.so和.a库文件,然后调用faacEncEncode进行编码
其实别人已经写了一个 音频编解码·实战篇(1)PCM转至AAC(AAC编码)
http://blog.csdn.net/poechant/article/details/7435054#comments
上面这篇文章已经很详细了,有基础的指导,但是我在交叉编译的时候,也遇到不少坑
下面记录一下,有些命令会和上面这篇不一样,但是思路都一样
1.交叉编译faac1.28
./configure CXX=arm-hisiv300-linux-g++ CC=arm-hisiv300-linux-gcc --prefix=/usr/local/faac --host=arm-linux --with-mp4v2=no
make
(make有错误的mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)就是这个,去这个文件把这行注释掉也可以)
make install
(install 安装到了/usr/local/lib/里面)
linux下编译:
./configure --prefix=/root/work/code/fdkaac/fdk-aac-0.1.3/linux --with-mp4v2=no
install安装好了之后,要注意将/usr/local/lib/ 添加到 /etc/ld.so.conf文件中,并ldconfig使能
建议每次install都用ldconfig使能一下(linux太坑,不知道哪些使能没使能)
2.编写应用程序调用faacEncEncode来进行aac编码
arm-hisiv300-linux-gcc faac.cpp -o faac -L/usr/local/lib -lfaac -I/usr/local/include -lsupc++
正确编译后,就可以把faac弄到arm开发板上运行了
运行前请将/usr/local/lib/中凡是有libfaac字样的静态库.a或动态库.so拷贝到开发板的/usr/local/lib/文件中
(有些arm开发板的系统中没有/etc/ld.so.conf文件,这个时候需要查看一下您的开发板系统的动态链接库地址
echo $LD_LIBRARY_PATH
如果显示没有/usr/local/lib/
用下面的指令将/usr/local/lib/添加到动态链接库地址中
export LD_LIBRARY_PATH=/usr/local/lib/
)
编译出现的问题:
1:undefined reference to '__cxa_end_cleanup'及 __gxx_personality_v0(这个破问题折腾我三天)
解决:http://blog.csdn.net/zz603976046/article/details/76886727
2.make有错误的mpeg4ip.h:126: error: new declaration ‘char* strcasestr(const char*, const char*)就是这个,去这个文件把这行注释掉也可以
暂时还未测试FAAC的效率,还没有弄清楚FFmpeg和faac的关系,准备后面再搞搞ffmpeg中的fdkaac