往期知识点整理
背景
MP3是一种广泛使用的音频压缩格式,以其高效的压缩算法和广泛的兼容性而闻名,是最为普及的音频格式之一,几乎所有的音频播放设备、移动设备、计算机和音频软件都支持 MP3 播放。这使得 MP3 成为事实上的标准格式,比起压缩性能兼容性才更是MP3 市场占有率的保障。
但是MP3是版权编码,一般手机厂商不包含MP3硬件编码器,只有MP3硬件解码器,市面上最常用的开源MP3软编码器是Lame,本文我们以Lame 为例,从跨平台编译到接入应用全流程基于Lame 事件MP3 软编码器。
编译Lame
一般三方开源的C/C++库有三种编译方式:
- cmake
- make
- configure
不同构建脚本要配置不同变量,lame 是基于Configure 构建脚本的,通过./Configure -h
查看配置参数。OpenHarmony 提供了一套交叉编译框架lycium,根据模版配置三方库信息后执行构建脚本即可。tpc_c_cplusplus 项目thirdparty中已经包含了 lame模块,我们直接编译即可。
进入lycium目录下执行:./build.sh lame
即可开始编译,编译完成后可以在lycium目录下看到user/lame
目录,里面已经编译好对应的动态库。
在macos arm版本电脑中编译报错,在tpc_c_cplusplus/thirdparty/lame/lame-3.100/armeabi-v7a-build/build.log
查看日志后:
1 error generated.
1 error generated.
1 error generated.
../../mpglib/dct64_i386.c:34:10: fatal error: 'config.h' file not found
#include <config.h>
^~~~~~~~~~
make[2]: *** [tabinit.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [common.lo] Error 1
make[2]: *** [interface.lo] Error 1
make[2]: *** [decode_i386.lo] Error 1
make[2]: *** [layer1.lo] Error 1
1 error generated.
1 error generated.
make[2]: *** [layer2.lo] Error 1
make[2]: *** [dct64_i386.lo] Error 1
1 error generated.
make[2]: *** [layer3.lo] Error 1
make[1]: *** [all-recursive] Error 1
** [tabinit.lo] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [common.lo] Error 1
make[2]: *** [interface.lo] Error 1
make[2]: *** [decode_i386.lo] Error 1
make[2]: *** [layer1.lo] Error 1
1 error generated.
1 error generated.
make[2]: *** [layer2.lo] Error 1
make[2]: *** [dct64_i386.lo] Error 1
1 error generated.
make[2]: *** [layer3.lo] Error 1
ma