madplay移植过程 - 音频mp3解码器

一、安装

yum install madplay

同时也可以手动安装,下载源码包,编译。

二、测试

 

上面提示没有设备文件dsp三、解决问题

自己手动创建设备文件是不可以的。madplay是根据OSS音频标准来写的,但是在新的内核中已经抛弃了这个,但是并不是说不可以用了,还是可以用的。

1、查看自己的内核版本号   运行uname -a

我的内核是3.4.2-1的,记住自己的内核版本,有用,如果你的内核就一个版本就不用了,(当你开机的时候会有提示让你选择内核版本,如何就一个的话,你的系统中内核就是一个版本)。

2、查看内核的配置

系统中的内核一般放在这个位置/usr/src/kernels

cd /usr/src/kernels

ls

我的fedora下一共有3个系统,选择当前的系统内核3.4.2-1,cd到内核中去

查看内核配置

sudo make menuconfig

要以root运行,因为这个内核正在运行,我们不需要修改,只是看一下他的配

置信息而已。按照下面的顺序访问:

 

 

      

 

 

 

<*>Device Drivers--->

<*>sound card support --->

<*>advanced linux soune architecture -->

   <*>OSS Mixer API

   <*>OSS PCM (digital audio) API

在当前的内核中是安装模块来编译的,我们进一步的跟踪就可以找到/dev/dsp设备的相关配置。这里主要看这两个选项OSS Mixer API和 OSS PCM (digital audio) API。

利用上下键来移动选项到这个两个选项中,利用左右键来选择<Help>可以看到详细的信息。

进去详细的信息说明中可以看到很多的信息。

 

 

基本上就是加载这个模块就看创建设备/dev/dsp了,

下面我就是要找到它的Kconfig,其实也不用找,但是为了详细的说明,我们按照流程赵一边。Defined at sount/core/Kconfig,现在我们进入这个目录,看以下Kconfig文件

在这里我们要的就是一个符号,就是config后面的这个符号,因为我们要在Makefile中查找编译后的模块的名称。

在当前的目录下一共有2个目录和一个Makefile、Kconfig我们现在进去oss目录中看看有没有makefile,因为我们这个模块就是oss,进去以后就可以看到就一个Makefile文件。

 

 

在最后一行就可以知道了模块的名称为snd-pcm-oss.ko在上面的我们提到要用到两个选项的,倒数第2行也很重要,因为他们都在OSS目录下,所以这个模块我们也要记住。snd-mixer-oss.ko。

前面这么多废话,其实就是为了找到这两个模块。现在找到了,但是模块放到那里去了呢,在自己编译的内核中,我们在指定的目录下就可以看到编译后的模块,但是在集成的系统中,我们去 那里找呢? /lib 目录中去找

在modules下可以看到有相应的内核目录,所以我们选择当前的内核。         

进去kernel中去可以看到相应的内核目录,我们选择sound/core和查看配置文件是一样的方法。

加载这两个模块到系统中,两个都要加载。sudo insmod snd-mixer-oss.ko(必须先加载这个,否则下面的加载不上)

sudo insmod snd-pcm-oss.ko

加载完成之后查看设备文件/dev/dsp是否已经创建了。ls /dev/dsp -l


四、运行madplay选择一首歌运行一下,

这是怎么回事?别急,我们看一下madplay的帮助文档man madplay

明白了吧,这说明这个文件的包含其他的信息数据,madplay无法解码这个文件。

我们在换一首歌试一下





madplay源码编译



音频解码器madplay移植

编者:从这一小节开始,友善官方带的手册就没有介绍了,根据一些参考书籍进行移植。这里移植的是音频解码器madplay.

需要的源码包:(我已经上传到我的资源里面了,可以直接下载

libid3tag-0.15.1b.tar.gz

libmad-0.15.1b.tar.gz

madplay-0.15.2b.tar.gz

zlib-1.2.3.tar.bz2

1、建立madplay源代码目录madplay-source以存放madplay源码

创建源码目录

#mkdir /usr/local/madplay-source

2、然后将上面要求的四个文件拷贝到此文件夹下,然后解压到此文件夹下

tar -zxvf  libid3tag-0.15.1b.tar.gz

tar -zxvf  libmad-0.15.1b.tar.gz

tar -zxvf   madplay-0.15.2b.tar.gz

tar -jxvf    zlib-1.2.3.tar.bz2

3、编译zlib库,为libid3tag提供函数支持

1)  #cd /usr/local/madplay-source/zlib-1.2.3

      #./configure -shared --prefix=/usr/local/mymadplay/zlib-1.2.3

2) 修改Makefile

修改Makefile第19行:

CC=arm-linux-gcc

修改Makefile第28行:

LDSHARED=arm-linux-gcc -shared -W1,-soname,libz.so.1

修改Makefile第29行:

CPP=arm-linux-gcc -E

修改Makefile第36行:

AR=arm-linux-ar rc

修改Makefile第37行:

RANLIB=arm-linux-ranlib

修改Makefile第42行:

prefix = /home/xxx/project/audio/mips/_install

3)编译并安装zlib库

#make

#make install

4、编译libid3tag库

1)  #cd /usr/local/madplay-source/libid3tag

      #./configure -shared --prefix=/usr/local/madplay-source/libid3tag CC=arm-linux-gcc --host arm-linux CPPFLAGS=-I/usr/local/mymadplay/zlib-1.2.3/include/ LDFLAGS=

       -L/usr/local/mymadplay/zlib-1.2.3/lib/

    #make

    #make install

5、编译音频解码库libmad

1)  #cd /usr/local/madplay-source/libmad

      #./configure -shared --prefix=/usr/local/madplay-source/libmad  CC=arm-linux-gcc --host arm-linux CPPFLAGS=-I/usr/local/mymadplay/libid3tag/include/ LDFLAGS=

       -L/usr/local/mymadplay/libid3tag/lib/

    #make

    #make install

note:如果此步骤出现err:unrecognized command line option -fforce-mem,找到Makefile,产找到-fforce-mem然后将其删除掉。

6、编译madplay应用程序

1)  #cd /usr/local/madplay-source/madplay-0.15.2

#./configure -shared --prefix=/usr/local/madplay-source/libmad  CC=arm-linux-gcc --host arm-linux CPPFLAGS=-I/usr/local/mymadplay/libid3tag/include/ -I/usr/local/madplay-source/libmad/include/ LDFLAGS= -L/usr/local/mymadplay/libmad/lib/ -L/usr/local/mymadplay/zlib/zlib-1.2.3/lib/ -L/usr/local/madplay-source/libid3tag/lib/

    #make

    #make install

7,移植madplay所需库文件到开发板

madplay运行时候只需要四个库文件,分别是libmad.so.0,libid3tag.so.0,libm.so.6,libc.so.6,其中后面的两个在开发板的/lib中已经存在,只需把前两个加入到/lib即可。但是

后面两个ls一下就可知道是一个链接,源文件分别是libmad.so.0.2.1以及libid3tag.so.0.3.0只要把这两个放入/lib下,然后建立刚才的链接。

8、移植madplay应用程序到开发板

把/usr/local/mymadplay/madplay-0.15.2/bin下的madplay复制到开发板的usr/bin/下,然后再找首歌曲,可以试试,基本就能正常播放了。

下面是我找了首可惜不是你播放的效果。名称我改为了123.mp3

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值