[ 工具 ] ___ Decoder : MPEG Audio

一,介绍


  • 高质量的MPEG音频解码器;
  • 基于ISO/IEC标准的全新实现;
  • 根据GNU通用公共许可证(GPL)条款提供;
  • 该软件以库(libmad)和命令行前端(madplay)的形式分发,还包括一个ID3标签操作库(libid3tag);
  • 使用100%定点(整数)计算而不是浮点计算,所以它非常适合没有浮点单元的体系结构。所有计算都使用32位定点整数表示进行;
  • 提供完整的24位PCM输出,使用MAD的应用程序能够产生异常高质量的音频。即使输出设备只支持16位PCM,应用程序也可以使用额外的分辨率通过使用抖动或噪声整形来增加可听动态范围;

二,获取


官网当中可支持两种方式获取源代码:Ftp或者SourceForge 镜像

三,构建


  • 依赖项:查阅自述文件,得知:在构建这个包之前,首先必须构建和安装libid3taglibmad
BUILDING AND INSTALLING

  Before you can build this package, you must first build and install the
  libmad and libid3tag packages distributed separately.

So,依次编译安装,把madplay的依赖项安装(次序不能错)。

  1. ___ Library : Zlib
  2. ___ Library : Id3tag
  3. ___ Library : Mad
  • 解压源码包,并进去目录进行配置(默认是开启静态配置,所以不需要动态库拷贝);
linux@localhost:~$ tar zxvf madplay-x.y.z.tar.gz
linux@localhost:~$ cd madplay-x.y.z/
# 6818
linux@localhost:~/madplay-x.y.z$ ./configure --host=arm-none-linux-gnueabi --prefix=${HOME}/madplay2arm --disable-debugging --enable-gnu-ld CPPFLAGS="-I${HOME}/mad2arm/include -I${HOME}/zlib2arm/include -I${HOME}/id3tag2arm/include" LDFLAGS="-L${HOME}/mad2arm/lib -L${HOME}/zlib2arm/lib -L${HOME}/id3tag2arm/lib" --enable-static --disable-shared
# 1808
linux@localhost:~/madplay-x.y.z$ ./configure --host=aarch64-linux-gnu --prefix=${HOME}/madplay2arm --disable-debugging --enable-gnu-ld CPPFLAGS="-I${HOME}/mad2arm/include -I${HOME}/zlib2arm/include -I${HOME}/id3tag2arm/include" LDFLAGS="-L${HOME}/mad2arm/lib -L${HOME}/zlib2arm/lib -L${HOME}/id3tag2arm/lib" --enable-static --disable-shared
  • 编译
linux@localhost:~/madplay-0.15.2b$ make
  • 取出编译完成的最后一条指令,生成不依赖动态库文件的应用程序
linux@localhost:~/madplay-0.15.2b$ arm-none-linux-gnueabi-gcc -Wall -O2 -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_oss.o  -L${HOME}/mad2arm/lib -L${HOME}/zlib2arm/lib -L${HOME}/id3tag2arm/lib ${HOME}/mad2arm/lib/libmad.a ${HOME}/id3tag2arm/lib/libid3tag.a -lz -lm -static
  • 安装
linux@localhost:~/madplay-0.15.2b$ make install

四,查看

  • 检查安装生成的文件是否是对应平台所需要的
linux@localhost:~/madplay2arm$  ls -la
total 0
drwxrwxrwx 1 linux linux 4096 Oct 26 01:53 .
drwxr-xr-x 1 linux linux 4096 Oct 26 01:43 ..
drwxrwxrwx 1 linux linux 4096 Oct 26 01:53 bin
drwxrwxrwx 1 linux linux 4096 Oct 26 01:53 man
drwxrwxrwx 1 linux linux 4096 Oct 26 01:53 share
linux@localhost:~/madplay2arm$ file bin/madplay
bin/madplay: ELF 32-bit LSB executable, ARM, EABI5 version 1 (GNU/Linux), statically linked, for GNU/Linux 3.2.0, with debug_info, not stripped

确认无误后,即可将可执行程序和相关的库上传到开发板上的根目录下的binlib目录,上传到开发板的应用程序相当于新创建的文件,要给当前可执行程序赋予执行权限。

root@arm:/# chmod +x /bin/madplay

查看帮助确定参数,然后就可以用它来播放音乐了呀。

五,方法

    1. 问题:原因是使用--host指定参数时,而源码包中的config.subconfig.guess文件不是最新版本所导致的
linux@localhost:~/libmad-x.y.z$ ./configure --host=aarch64-linux-gnu --enable-fpm=arm --enable-sso --enable-accuracy --enable-gnu-ld --enable-speed --disable-debugging --prefix=${HOME}/mad2arm
checking host system type... Invalid configuration `aarch64-linux-gnu': machine `aarch64' not recognized
configure: error: /bin/bash ./config.sub aarch64-linux-gnu failed
    1. 解决:下载新版的基础配置文件
linux@localhost:~/libmad-x.y.z$ wget -O config.guess 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD'
linux@localhost:~/libmad-x.y.z$ wget -O config.sub 'http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值