首页 >> 大全

嵌入式Linux下移植Mp3播放器

2023-11-04 大全 25 作者:考证青年

核心板要播放mp3不是说简单就简单的事情

首先应该确定板子上的音频通道是好的。至少能够播放wav吧

准备工作: 看下网上资料,想想MP3是有版权的,肯定是需要是解码库的解码库什么合适?这些解码库,肯定是可以下载,由于考虑到核心板,肯定也需要源码能够进行交叉编译

先是漫无目的搜索,想到Qt是不是可以播放,是不是可以。现实是残酷的,了解到的Qt,都是实现接口部分,并不解决解码库的问题。反正一句话,就是要先有解码库才可以。

搜索一会,把问题集中到一起了。Linux下Mp3解码库 ,是鼎鼎大名的播放器。

既然,确定目标了,那么就解决解码库的事情。Baidu,,一堆东西,也有很多好的文章,看样子很多人在研究,相信肯定有戏。先找个写得详细点入手吧。

解码库,基本上用的以下三种文件,如果系统没有装过,都需要先下载安装的

准备工作的插曲

(插曲:)既然,自己的编译的。自然想到先在试验下,结果,发现本人的虚拟机下的竟然没有声音,播放wav,也没声音(这个到一直没有发现这个问题。突然发现,觉得很奇怪)。

进入系统设置的声音设置,发现是静音的,但怎么修改不行,都是静音的,是很奇怪。(下从来没碰到过问题)

后来,看网上资料,说可以先看有没有设备。 “aplay -l”

竟然,没找到硬件设备列表。说明驱动没有装好。原来要装alsa的声音驱动。

先卸载原先的alsa

sudo apt-get linux-sound-base alsa-base alsa-utils

sudo apt-get xmlto -dev

sudo apt-get linux-sound-base alsa-base alsa-utils

下载 一个lib alsa-lib-1.0.25.tar.bz2 //这个不是最新的,但不是最新就最好,要自己匹配的,我就装过好几个版本,能装上去,但无效。

后来,发现 14.04,装这个版本是可以用的。。。因此,就选这个版本。可能其他版本可能也能用。

安装 alsa-lib-1.0.25.tar.bz2。先解压

./

Make

Make

Alsa驱动重新装了,“aplay -l”可以看到设备列表了,以为这样就可以了,小激动了下。结果事实是残酷的,仍然是静音,仍然没有声音!!!!

继续百度,找原因。。。。

说用“”可以调节声音的,于是,就输入了,弹出一个类似窗口的输入,修改,每个选项都改80以上。

以为这样就可以了,小激动了下。结果事实是残酷的,仍然是静音,仍然没有声音!!!!

继续百度,果然真理掌握少数人手里,看以下帖子,恍然大悟

好了,到此为止终于可以输出声音,至少播放wav是ok的了。

继续来折腾MP3解码库的事情。

下编译MP3解码库

首先是下的编译,即x86版本:

ps:这几个库在下安装,问题不多,网上很多文章都写的很清楚,有些问题也写了七七八八的。但原则,还是不要看一篇文章走到底,一般是不行的,多综合其他文章来看,当然碰到过钉子,才知道集众家之长的好处。

zlib编译,安装

# tar -zxvf zlib-1.2.3.tar.gz 解压

进入解压的目录,输入:“/usr/local/lib/”是指存放目录

./ --=/usr/local/lib/

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利

编译

# tar -zxvf -0.15.1b.tar.gz 解压

进入解压的目录,输入:

./ --=/usr/local/lib/ --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

_嵌入式软件移植_嵌入式linux移植步骤包括

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利

编译

# tar -zxvf -0.15.1b.tar.gz

进入解压的目录,输入:

./ --=/usr/local/lib/ --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

然后打开,找到"--mem"它并删除 (否则会报错)

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利(除了--mem错误)

编译:

# tar -zxvf -0.15.2b.tar.gz 解压

进入解压的目录,输入:

./ --=/opt/ --with-alsa --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

然后,make

然后,make

----ps,网上帖子大部分不是这样,一般都是缺少“--with-alsa”的,这样编译什么的都ok的,但播放的时候会提示“audio: /dev/dsp: 没有那个文件或目录”,在也可以解决的。例如:

解决方法:

在当前目录下敲上两条命令:

1 mknod /dev/dsp c 14 3

2 chmod 666 /dev/dsp

如果敲了以上两条命令还提示/dev/dsp:没有这个设备(可能系统已经不支持oss的)

可以继续执行如下命令:(在 下,以下两条命令是不行的,所以此方法在 7下是无效的)

3 snd-pcm-oss

4 snd-mixer-oss

这个解决办法不好,每次重启之后,又得重新这样设置下,否则仍然会提示错误的。

原因,默认是走oss的,但 是用alsa的,所以不对的。

当然,最佳的解决就是添加“--with-alsa”这个编译参数

好了,如果你的下,安装正常alsa跟以上编译过程,肯定没有问题。

交叉编译---ARM版本的mp3解码库

由于arm核心板,已经带了alsa的驱动(在核心板上敲“aplay -l”,看看有没有设备列表出来。如果有的话,就说明ok的,否则要先移植alsa库),这里就不重复alsa的移植了,事实上网上也有很多资料。

当然,首先也是要安装好交叉编译环境,arm-linux编译环境要安装好。

套路上,还是跟x86的一致:

zlib编译,安装

# tar -zxvf zlib-1.2.3.tar.gz 解压(重新搞个文件夹进行解压,不要跟原先x86重复了。后面的操作都是一样)

cd到解压之后的目录,输入:“/usr/local/lib/”是指存放目录(是arm)

./ --=/usr/local/lib/

此时,会生成文件,打开zlib-1.2.3目录下的文件,按以下内容修改并保存:(主要意思是把默认编译器改成arm-linux)

CC=arm-linux-gcc

=arm-linux-gcc

CPP=arm-linux-gcc -E

AR=arm-linux-ar rc

=arm-linux-

_嵌入式软件移植_嵌入式linux移植步骤包括

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利

编译

# tar -zxvf -0.15.1b.tar.gz 解压

cd到解压之后的目录,输入:

./ --host=arm-linux CC=arm-linux-gcc --=/usr/local/lib/ --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利

编译

# tar -zxvf -0.15.1b.tar.gz

cd到解压之后的目录,输入:

./ --host=arm-linux CC=arm-linux-gcc --=/usr/local/lib/ --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

然后打开,找到"--mem"它并删除 (否则会报错)

然后,make

然后,make

---这个是基本没碰到什么问题,一切顺利(除了--mem错误)

(/usr/local/lib//lib,这个目录下的所有文件都要拷贝到核心板 /lib 下)

编译:

# tar -zxvf -0.15.2b.tar.gz 解压

cd到解压之后的目录,输入:

./ --host=arm-linux CC=arm-linux-gcc --=/opt/ --with-alsa=/usr/share//lib --- --- --- =-I/usr/local/lib// =-L/usr/local/lib//lib

这里需要说明的是

--with-alsa=/usr/share//lib 是我的alsa arm版编译存放路径

然后,make

如果需要静态编译,需要加上:

#arm-linux-gcc -Wall -g -O2 -o *.o -L/usr/local/lib//lib - -lmad -lz -lm -

然后,make

----ps,网上帖子大部分不是这样,一般都是缺少“--with-alsa”的,这样编译什么的都ok的,但播放的时候会提示“audio: /dev/dsp: 没有那个文件或目录”,在也可以解决的。

因此,解决办法只能是添加“--with-alsa”这个编译参数

测试播放:

Up.mp3为要测试的mp3文件

以下为测试命令:

("./ -o wav:- Up.mp3 | aplay &"); //播放

(“./ -r -o wav:- Up.mp3 | aplay &”); //循环播放:参数-r

(" -9 "); //利用函数调用命令将终止掉

(" -STOP &"); //利用函数调用命令将暂停

(" -CONT &"); //利用函数调用命令恢复的播放

./ -v --start=0:1:20.11 -o wav:- Up.mp3 | aplay &

这里要说明下,有个坑,在下,直接这样可以的

./ Up.mp3

./ Up.mp3 -o tt.wav Up.mp3 转成 tt.wav

但在arm板子上是不行的,仍然提示“/dev/dsp:没有这个设备”,一开始一直以为编译的时候没有添加“--with-alsa”,实际是添加的。

后来才知道,要添加参数“./ -o wav:- Up.mp3 | aplay”才可以的。这个很难能够想到的,是个坑。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了