12、madplay的MP3播放器移植

2024-08-31 06:58
文章标签 移植 播放器 mp3 madplay

本文主要是介绍12、madplay的MP3播放器移植,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、使能声卡

将对应开发板的内核拷贝到需要的目录下,开始配置内核,运行
#make menuconfig ARCH=arm
然后进去Device Driver->Sound Card Support->ALSA
选择片上的声卡ALSA for SoC audio support,选择对应芯片的声卡驱动
返回ALSA配置层,勾选OSS Mixer API和OSS PCM API

 

1.2、编译内核

#make uImage ARCH=arm CROSS_COMPILE=arm-linux-

 

1.3、下载内核,并启动

#tftp 31000000 uImage
#bootm 31000000
虚拟机tftp服务器的配置和运行见http://blog.csdn.net/u013181595/article/details/72566910


 

1.4、检查

查看设备文件dsp和mixer是否准备好,运行

#ls /dev/dsp
#ls /dev/mixer
如果有则安装成功,如果没有,说明内核没有把驱动文件编译进去,而是把它编译成了.ko文件
在内核中查看模块文件,运行
#ls /lib/modules/2.6.35.7-EmbedSky/
发现里面就有需要的声卡文件,把它装起来,运行
#insmod /lib/modules/2.6.35.7-EmbedSky/***
把和声卡相关的文件全部装起来,如果提示安装失败,是因为驱动模块相互依赖的,可以尝试先安装别的模块,知道全部安装完成

查看设备文件,可以发现全部都装起来了



 

2、移植嵌入式播放器

转自http://blog.chinaunix.net/uid-20539088-id-115750.html

 


madplay的移植需要以下的几个包:libid3tag-0.15.1b.tar.gz、libmad-0.15.1b.tar.gz、madplay-0.15.2b.tar.gz、zlib-1.2.3.tar.gz。其中前面的三个包可以在http://sourceforge.net/project/showfiles.php?group_id=12349中下载,后一个包可以在http://www.gzip.org/zlib/zlib-1.2.3.tar.gz中找到

 

 

 

 

2.1 建立工作目录、解压源代码包

# tar -zxvf zlib-1.2.3.tar.gz 
# tar -zxvf libid3tag-0.15.1b.tar.gz 
# tar -zxvf libmad-0.15.1b.tar.gz 
# tar -zxvf madplay-0.15.2b.tar.gz 


设定编译器环境变量
# export CC=arm-linux-gcc

 

 

 

 

 

 

2.2 编译zlib

 

 

 

因为libid3tag依赖于这个库文件

# ./configure --shared --prefix=${PWD}/_install


配置是为了产生Makefile文件,--prefix后是生成文件的存放路径,选择当前路径的_inttall(没有需要创建)
编辑Makefile文件,把编译器选项的CC、LDSHARED、CPP、AR、RANLIB加上arm-linux
目录下的Makefile文件,按以下内容修改并保存:
CC=arm-linux-gcc
AR=arm-linux-ar rcs
RANLIB=arm-linux-ranlib


然后make,make install,编译好之后就可以在上面prefix指定目录下的lib目录下找到libz.a这个库


编译
#make
#make install

 

2.3 编译libid3tag

# cd ../libid3tag-0.15.1b
# ./configure --host=arm-linux --prefix=${PWD}/_install
# make
# make install

 

2.4 编译libmad

# cd ../libmad-0.15.1b
# ./configure --host=arm-linux --prefix=${PWD}/_install
# make


有些情况由于交叉工具链不支持,会导致编译出错,提示没有--force-mem,把它删掉再编译
# make install

 

2.5编译madplay

# cd ../madplay-0.15.2b
# ./configure --host=arm-linux --prefix=${PWD}/_install
# make
# make install

 

3 、madplay的移植

把_install/bin目录下的madplay拷贝到根文件系统中的sbin目录下,

前提需要制作一个NFS的文件系统,并且在虚拟机上启动NFS,具体NFS文件系统的制作看我之前的博客,运行
#cp ${PWD}/_install/bin/madplay /home/unix/NO.3/3-rootfs/rootfs/sbin

这里要选择自己的路径


下载内核,并启动
#tftp 31000000 uImage
#bootm 31000000
发现开发板上的/sbin目录下包含了madplay


运行madplay,发现/bin/sh:madplay: not notfound,提示找不到madplay,什么原因呢?
这种问题非常常见,madplay已存在但是提示找不到madplay,是因为madplay用到的动态
连接库不存在,找不到。


在虚拟机下查看madplay需要哪些连接库,运行:
#arm-linux-readelf -d /opt/madplay/target-arm/bin/madplay
可以看到这里需要之前编译的4个动态连接库,依次把动态连接库拷贝到rootfs/lib中,分别进入3个解压后的文件,执行
#cp _install/lib/* /home/unix/NO.3/3-rootfs/rootfs/lib


把生成的文件全部拷贝到rootfs/lib目录下,注意这里3个文件里的生成文件都需要拷贝!
这里只解决了madplay需要的前2个动态连接库,下面的2个库是libm.so.6和libc.so.6,这2个是标准库里的math库和c库
从交叉工具链里拷贝即可,如果没有安装,需要下载并安装arm-linux-gcc-4.3.2.tgz,安装后,进入这个文件夹
#cd ***/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/
这里的***为安装包存放的路径,这个文件下有libm.so.6和libc.so.及其他各种通用库,全部拷贝到根文件系统中,运行
#cp *  /home/unix/NO.3/3-rootfs/rootfs/lib


在执行madplay时提示Illegal instruction,经过检查发现实库文件拷贝原来是libm.so.6和libc.so.6这两个库文件使用错误,
真正要拷贝的这两个库文件应该是在/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib/下而不是在
/usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/lib/下


在运行madplay前,可以先拷贝mp3文件到根文件系统中,运行
#madplay 1.mp3
插入耳麦,就可以听到动听的歌声了
 

 

更多Linux资料及视频教程点击这里

这篇关于12、madplay的MP3播放器移植的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1123210

相关文章

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

FreeRTOS-基本介绍和移植STM32

FreeRTOS-基本介绍和STM32移植 一、裸机开发和操作系统开发介绍二、任务调度和任务状态介绍2.1 任务调度2.1.1 抢占式调度2.1.2 时间片调度 2.2 任务状态 三、FreeRTOS源码和移植STM323.1 FreeRTOS源码3.2 FreeRTOS移植STM323.2.1 代码移植3.2.2 时钟中断配置 一、裸机开发和操作系统开发介绍 裸机:前后台系

RT-Thread(Nano版本)的快速移植(基于NUCLEO-F446RE)

目录 概述 1 RT-Thread 1.1 RT-Thread的版本  1.2 认识Nano版本 2 STM32F446U上移植RT-Thread  2.1 STM32Cube创建工程 2.2 移植RT-Thread 2.2.1 安装RT-Thread Packet  2.2.2 加载RT-Thread 2.2.3 匹配相关接口 2.2.3.1 初次编译代码  2.2.3.

QT项目实战之音乐播放器2.0版本

该版本相较于1.0版本最主要的不同在于连接数据库实现类似于歌曲收藏和取消收藏的功能。 详细情况看我的这篇文章http://t.csdnimg.cn/WS5s8。 效果展示 VSMyMusicShow2.0 define.h UseMySQL.h   musicInfo.h   VSMyMusicPlayer.h

java把文字转MP3语音案例

一 工具下载: https://download.csdn.net/download/jinhuding/89723540 二代码 <dependency><groupId>com.hynnet</groupId><artifactId>jacob</artifactId><version>1.18</version></dependency> import com.jacob.acti

【Unity-Lua】音乐播放器循环滚动播放音乐名

前言:Unity中UI节点 图1 如上所示,一开始本来是打算用ScrollView做的,觉得直接计算对应的文本位置就行,所以没用ScrollRect来做,可以忽略Scroll,Viewport这些名字。如下图:需要在一个背景Image组件上添加上Mask组件来显示固定位置的文本显示。 图2 图3 并且需要在要显示的文本上挂载Content Size Filter组件,但是这儿会有个坑

libmad音频解码库-Linux交叉编译移植

下载并解压libmad-0.15.1b.tar.gz 下载链接:https://downloads.sourceforge.net/mad/libmad-0.15.1b.tar.gz $tar -xvf libmad-0.15.1b.tar.gz$cd libmad-0.15.1b 1、先执行下面的命令:这条命令是为了适配高版本的gcc,因为高版本的gcc已经将-fforce-mem去除了:

arm linux lua移植

lua: lua home 1.下载lua源码 lua下载 lua-5.3.4.tar.gz 2.解压: tar xvf lua-5.3.4.tar.gz 3.修改makefile and luaconf.h $修改 lua-5.3.4/Makefile #INSTALL_TOP= /usr/local INSTALL_TOP= $(shell pwd)/out #修改安装目录(当前目录/o

s3c2440---PWM使用之蜂鸣器驱动移植

一、蜂鸣器驱动介绍 1.1.什么是蜂鸣器               蜂鸣器是一种简单的声响发生器,常用于电子产品中作为警示或提醒作用。其基本原理是通过交替改变直流电的电压方向来产生声音,一般使用交替电流产生声音会比较稳定。 1.2.蜂鸣器的类别 1.有源蜂鸣器 1)结构原理 有源蜂鸣器内部自带振荡源,只需接通电源即可发声。内部电路会自动产生一定频率的振荡信号,从而驱动蜂鸣器发声。

Android MediaPlayer本地视频播放器

该文章的目的是,让初学者能够快速掌握一个简单的本地视频播放器。该Demo中用到了SurfaceView、MediaPlayer。 实现效果图: [html]  view plain copy <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"