移植madplay
1.1 libmad简介
MAD (libmad)是一个开源的高精度 MPEG 音频解码库,支持 MPEG-1(Layer I, Layer II 和 LayerIII(也就是 MP3)。LIBMAD 提供 24-bit 的 PCM 输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用 libmad 提供的一系列 API,就可以非常简单地实现 MP3 数据解码工作。在 libmad 的源代码文件目录下的 mad.h 文件中,可以看到绝大部分该库的数据结构和 API 等。
其网址如下:
http://www.underbit.com/products/mad/
在ftp://ftp.mars.org/pub/mpeg/下载以下三个文件:
libid3tag-0.15.1b.tar.gz
libmad-0.15.1b.tar.gz
madplay-0.15.1b.tar.gz
libid3tag :是分析MP3文件的库;
libmad :是MP3解码库;
madplay :是基于上面两个库的MP3播放器,该播放器是基于命令行操作的播放器。
1.2 下面是移植上面三个源码的步骤
移植的主要步骤为解压缩、配置、编译、安装;
一般源码包解压缩之后,使用源码包目录下的./configure脚本来配置源码包;可以使用./configure --help查看配置选项。
这里我们主要配置以下两个选项:
--host: 用于指定平台,如:
--host=arm-armv4t-linux-gnueabi
--prefix: 用于指定安装路径,如:
--prefix=/opt/crosstool/4.3.2/arm-armv4t-linux-gnueabi
Ø 移植libid3tag
1. tar zxvf libid3tag-0.15.1b.tar.gz
2. cd libid3tag-0.15.1b/
3. ./configure --prefix=/home/bt/madplay/install/ --host=arm-2440-linux-gnueabi
4. make
5. make install
Ø 移植libmad
1. tar zxvf libmad-0.15.1b.tar.gz
2. cd libmad-0.15.1b/
3. ./configure --prefix=/home/bt/madplay/install/ --host=arm-2440-linux-gnueabi
4. make
5. make install
Ø 移植madplay
1. tar zxvf madplay-0.15.1b.tar.gz
2. cd madplay-0.15.1b/
3. ./configure --prefix=/home/bt/madplay/install/ --host=arm-2440-linux-gnueabi CPPFLAGS=-I/home/bt/madplay/install/include/ LDFLAGS=-L/home/bt/madplay/install/lib/
4. make
编译完之后将madplay拷贝到根文件系统中(此madplay是可执行文件 位于编译后的madplay-0.15.1b目录内)
cp madplay /home/bt/myrootfs/usr/bin/
将libid3tag、和libmad库拷贝到根文件系统中(usr/lib 如果没有lib目录就新建 )
1. cp /home/bt/madplay/install/lib/libid3tag.so* /home/bt/myrootfs/usr/lib/ -a
2. cp /home/bt/madplay/install/lib/libmad.so* /home/bt/myrootfs/usr/lib/ -a
到此完成了整个madplay移植到mini2440板子的过程:
1.3 在命令行下播放MP3
madplay移植到根文件系统后,可以在开发板上使用命令来播放MP3;
播放时可以使用 --help查看madplay程序可用使用的命令行参数,这里我们关心的参数有 -v --display-time,-s参数;
如,显示当前音乐播放还剩下多少时间:
madplay -v --display-time=remaining 001.mp3(必须要存在的MP3
文件)
左下角就显示了播放还剩下的时间,-v 表示显示解码信息,--display-time=remaining 表示当前剩下的播放时间;
又如,在音乐文件的2分钟时间开始播放,-s 00:02:00 表示从时间00:02:00开始播放音乐;
madplay -v --display-time=remaining -s 00:02:00 001.mp3
使用madplay播放音乐时还可以向madplay发送信号来暂停和继续播放,如;
暂停:
killall -STOP madplay
继续:
killall -CONT madplay
killall和kill命令一样,都是向程序发送信号,不同点在于kill的参数是进程ID,而killall的参数是程序的名字。
上面介绍了madplay的移植和播放,接下来可以编写一个Qt程序来控制madplay的播放,暂停等。
1.4测试MP3播放器(Qt编写)
前提:根文件系统已经移植了Qt库和tslib库
打开开发板挂载根文件系统成功后
a) cd mp3Player
b) ./mp3Player –qws
进入mp3软件播放界面
选中歌曲按下播放 用耳机收听正常就证明MP3播放器正常工作了