本文出自 “LINUX && ANDROID” 博客,请务必保留此出处http://tianxiaolin.blog.51cto.com/1810342/409019


软件移植MPlayer

在文件系统中使用mplayer进行音频和视频播放。本文讲述了如何移植mplayer及移植过程中需要的各种库。

一、 开发环境

*         虚拟机 vmware 7.0.0

*         系统:Ubuntu 9.10

*         交叉编译工具链:arm-2009q1

*         开发板CPU:am3217

*         交叉编译工具链安装路径/opt/Tools/arm-2009q1

*         移植源码存放路径:/opt/transplants

二、移植MPlayer

2.1 移植ALSA

2.1.1 获取源码

*         从网站http://www.alsa-project.org/main/index.php/Download下载alsa-lib-1.0.23.tar.bz2源码,拷贝到/opt/transplants目录下。

2.1.2 修改并配置源码

*         解压源码包

Host# cd /opt/transplants

Host# tar jxvf alsa-lib-1.0.23.tar.bz2

解压后生成目录alsa-lib-1.0.23。

*         进入目录后进行配置

Host# ./configure --host=arm-none-linux-gnueabi --target=arm-linux --prefix=/alsa-lib --enable-shared --disable-python --with-configdir=/alsa --with-plugindir=/usr/lib/alsa-lib

--host 配置交叉编译工具链;--prefix配置编译生成库的存放目录。--with-configdir配置库在开发板文件系统中的存放目录

2.1.3 编译并安装源码

*         编译安装

Host#make

Host#make install

成功后在系统根目录下生成/alsa-lib目录;在/usr/share/目录下生成alsa目录。

*         将/alsa-lib目录下所有文件拷贝到/opt/Tools/arm-2009q1/arm-none-linux-gnueabi/libc/usr目录下,为编译mplayer做准备。

Host# cp /alsa-lib/** /opt/Tools/arm-2009q1/arm-none-linux-gnueabi/libc/usr -raf

*         将/alsa-lib目录下所有文件拷贝到开发板文件系统/usr目录下

*         将/usr/share/alsa目录拷贝到开发板文件系统/usr/share目录下

*         在开发板文件系统/etc/profile添加如下内容

mkdir /dev/snd

ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c

ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p

ln -s /dev/controlC0 /dev/snd/controlC0

ln -s /dev/pcmC1D0c /dev/snd/pcmC1D0c

ln -s /dev/pcmC1D0p /dev/snd/pcmC1D0p

ln -s /dev/controlC1 /dev/snd/controlC1

ln -s /dev/seq /dev/snd/seq

ln -s /dev/timer /dev/snd/timer

ALSA库移植完毕。

NOTE开发板文件系统没有的目录请用户根据需要自行创建。

2.2 移植LIBMAD库

播放mp3文件需要libmad库支持。

2.2.1 获取源码

*         去网站http://sourceforge.net/projects/mad/files/下载libmad-0.12.1b.tar.gz源码,拷贝到/opt/transplants目录下。

2.2.2 修改并配置源码

*         解压源码包

Host# cd /opt/transplants

Host# tar jxvf libmad-0.12.1b.tar.bz2

解压后生成目录libmad-0.12.1b。

*         进入目录后进行配置

Host# ./configure --host=arm-none-linux-gnueabi --prefix=/opt/libmad

--host 配置交叉编译工具链;--prefix配置编译生成库的存放目录。

2.2.3 编译并安装源码

*         编译安装

Host#make

Host#make install

NOTE编译过程遇到与”-fforce-mem”相关的错误,打开Makefile找到CFLAGS变量,将它的-fforce-mem选项去掉即可。

成功后生成/opt/libmad目录。

*         将/opt/libmad目录下所有文件拷贝到/opt/Tools/arm-2009q1/arm-none-linux-gnueabi/libc/usr目录下,为编译mplayer做准备。

Host# cp /opt/libmad/** /opt/Tools/arm-2009q1/arm-none-linux-gnueabi/libc/usr -raf

*         将/opt/libmad目录下所有文件拷贝到开发板文件系统/usr目录下。

NOTE开发板文件系统没有的目录请用户根据需要自行创建。

2.3 移植MPlayer

2.3.1 获取源码

*         到网站http://www.mplayerhq.hu/design7/dload.html下载mplayer-export-snapshot.tar.bz2源码,拷贝到/opt/transplants目录下。

2.3.2 修改并配置源码

*         解压源码包

Host# cd /opt/transplants

Host# tar jxvf mplayer-checkout-2010-09-26.tar.bz2

解压后生成目录mplayer-checkout-2010-09-26。

NOTE源码解压生成的目录名随更新日期的变化而变化。

*         进入目录后进行配置

Host# cd mplayer-checkout-2010-09-26

Host# ./configure --host-cc=gcc --cc=arm-none-linux-gnueabi-gcc --target=arm-armv4-linux --prefix=/tmp/mplayer --disable-win32dll --disable-dvdread --enable-fbdev --disable-mencoder --enable-mad

2.3.3 编译并安装源码

*         编译安装

Host# make

成功后本目录下mplayer可执行文件。

*         将mplayer文件拷贝到开发板文件系统/opt目录下。

NOTE开发板文件系统没有的目录请用户根据需要自行创建。

2.3.4 测试验证

上述操作结束,拷贝几个mp3和mpg格式的文件,放在开发板文件系统/opt目录下。

*         启动板卡进入系统。

Target# cd /opt

*         播放mp3文件。

Target# ./mplayer –ao alsa xxx.mp3

*         耳机会听到音乐,测试成功。

 

本文出自 “LINUX && ANDROID” 博客,请务必保留此出处http://tianxiaolin.blog.51cto.com/1810342/409019