带音频播放的MPlayer播放器在ARM上的移植笔记
Posted hurryddd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带音频播放的MPlayer播放器在ARM上的移植笔记相关的知识,希望对你有一定的参考价值。
前言
mplayer想要播放带音频的视频文件,需要依赖alsa-lib和zlib,所以交叉编译mplayer前还需要先编译alsa-lib和zlib
一、alsa-lib
alsa-lib 是 ALSA 提供的一套 Linux 下的 C 语言函数库,需要将 alsa-lib 移植到板卡上,这样基于 alsa-lib 编写的应用程序才能成功运行
如果想不用mplayer,直接使用alsa测试音频,还需要移植 alsa-utils,alsa-utils 包含了一些用于测试、配置声卡的工具,譬如 aplay、arecord、alsactl、alsaloop、alsamixer、amixer 等,在开发板出厂系统上可以直接使用这些工具,这些应用程序也都是基于 alsa-lib 编写的。
aplay 是一个用于测试音频播放功能程序,可以使用 aplay 播放 wav 格式的音频文件,需要注意的是,aplay 工具只能解析 wav 格式音频文件,不支持 mp3 格式解码
alsamixer 是一个很重要的工具,用于配置声卡的混音器,它是一个字符图形化的配置工具
1、下载源码
下载链接:
AlsaProject (alsa-project.org)
Advanced Linux Sound Architecture (ALSA) project · GitHub
选用版本:1.2.2
2、linux下解压
tar -vxjf alsa-lib-1.2.2.tar.bz2
3、config
注意 alsa-lib 编译过程中会生成一些配置文件,而这些配置信息的路径都是绝对路径,因此为了保证 ubuntu 和开发板根文件系统中的路径一致!需要在 ubuntu 和开发板中各创建一个路径和名字完全一样的目录。路径为 /usr/app_install/common/lib/alsa
./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa --with-configdir=/usr/app_install/common/lib/alsa
--prefix:安装目录
--with-configdir:配置文件目录
3、编译安装
make
sudo make install //因为配置文件会生成到/usr目录下,所以需要root权限
4、遇到问题
解决办法:
二、alsa-utils(可选)
1、下载源码
下载链接:
AlsaProject (alsa-project.org)
Advanced Linux Sound Architecture (ALSA) project · GitHub
选用版本:1.2.2
2、linux下解压
tar -vxjf alsa-utils-1.2.2.tar.bz2
3、config
./configure --host=arm-linux-gnueabihf --prefix=/home/wwyc/srv/winShared/lib-install/alsa-utils --with-alsa-inc-prefix=/home/wwyc/srv/winShared/lib-install/alsa/include/ --with-alsa-prefix=/home/wwyc/srv/winShared/lib-install/alsa/lib/ --disable-alsamixer --disable-xmlto
--prefix:安装目录
--with-alsa-inc-prefix:alsa头文件路径
--with-alsa-prefix:alsa库路径
--disable-alsamixer:禁止编译alsamixer工具
4、编译安装
make
sudo make install
5、遇到问题
configure: error: No linkable libasound was found.
解决办法:
config前先导出先环境变量, source /etc/profile
三、zlib
1、下载源码
下载链接:zlib Home Site
选用版本:1.2.11
2、linux下解压
tar -vxzf zlib-1.2.11.tar.gz
3、config
CC=arm-linux-gnueabihf-gcc LD=arm-linux-gnueabihf-ld AD=arm-linux-gnueabihf-as ./configure --prefix=/home/wwyc/srv/winShared/lib-install/zlib
4、编译安装
make
make install
完成后会在安装目录下生成如下文件
四、mplayer
1、下载源码
下载链接:Index of /MPlayer/releases
选用版本:1.4
2、linux下解压
tar -vxzf MPlayer-1.4.tar.gz
3、config
./configure --cc=arm-linux-gnueabihf-gcc --host-cc=gcc --target=arm-linux-gnueabihf --disable-ossaudio --enable-alsa --prefix=/home/wwyc/srv/winShared/lib-install/mplayer --extra-cflags="-I /home/wwyc/srv/winShared/lib-install/zlib/include -I /home/wwyc/srv/winShared/lib-install/alsa/include" --extra-ldflags="-L/home/wwyc/srv/winShared/lib-install/zlib/lib -Iz -L/home/wwyc/srv/winShared/lib-install/alsa/lib -lasound" --enable-fbdev --disable-mencoder
--extra-cflags:指定 zlib 和 alsa-lib 的头文件路径
--extra-ldflags:指定 zlib 和 alsa-lib 的库文件路径
配置完成以后打开 config.mak 文件,找到“INSTALLSTRIP = -s”这一行,取消掉后面的“-s”,否则“make install”命令会失败!
4、编译安装
make
make install
完成后会在安装目录下的bin目录下生成 mplayer 工具
五、移植到ARM
1、将alsa-lib编译生成的lib库和配置文件 全部拷贝到板卡/usr/lib 路径下,注意软连接,需要生成tar包拷贝到设备后再解压缩
2、将alsa-utils编译生成的bin目录下二进制工具拷贝到板卡 /usr/bin 路径下,使用aplay可以直接播放 wav格式的音频文件。
3、将 mplayer 编译生成的bin程序拷贝到板卡/usr/bin 路径下,使用mplayer就可播放带音频的视频文件了
linux-2.26 移植mplayer 功能
mplayer介绍:
mplayer 是一个linux下的视频播放器,它支持相当多的媒体格式,无论在音频播放还是在视频播放方面,可以说它支持的格式是相当全面的。视频格式支持:mpeg、avi、asf、wmv、QuickTime、OGG/OGM、sdp、pva、gif。音频格式支持:mp3、wav、OGG/OGM 文件(Vorbis)、wma 与 asf、mp4、cd音频、xmms
一、移植环境:
交叉编译 PC环境:Deepin-Linux
交叉编译工具:arm-fsl-linux-gnueabi-gcc
目标板环境:周立功 i.max287A 开发版
二、mplayer源码下载:http://www.mplayerhq.hu/MPlayer/releases/
链接:https://pan.baidu.com/s/1jorUzUoMiGHwaLy7WZELFA
提取码:fx4f
三、制作编译时需要的头文件和库
1. 把 libmad-0.15.1b.tar.gz 文件拷贝到PC端linux系统,执行解压缩命令 " tar -xzvf libmad-0.15.1b.tar.gz -C ." 解压到当前目录
2. 进入 libmad-0.15.1b 目录 cd libmad-0.15.1b
3. 新建一个目录,用来存放编译生成的信息 mkdir build
3. 配置编译链和编译信息:./configure --enable-fpm=arm --host=arm-fsl-linux-gnueabi --disable-shared --disable-debugging --prefix=/home/yx/imx287/mplayer/build/ CC=arm-fsl-linux-gnueabi-gcc
把 “--host=” 和"CC=" 后边替换成目标板所需要的编译链;把“--prefix=”后边的信息换成刚才新建的文件夹目录
4. 配置完成后,编译,编译时会报错,把libmad-0.15.1b 文件下的 Makefile 文件的第129行的 “--fforce-mem” 去掉后,重新编译就行。
5. 编译完成后,执行 make install 生成相应的头文件和库文件, 下边是制作好的目录
四、编译mplayer源码
1. 把 MPlayer-1.0rc2.tar.bz2 文件拷贝到PC端linux系统,执行解压缩命令 " tar -xzvf MPlayer-1.0rc2.tar.bz2 -C ." 解压到当前目录,cd MPlayer-1.0rc2.tar.bz2 进入这个解压开的目录
2. 配置编译链和编译信息:./configure --prefix=/home/yx/imx287/mplayer/build --cc=arm-fsl-linux-gnueabi --disable-gui --target=arm-linux --host-cc=gcc --disable-freetype --enable-fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --disable-libdvdcss-internal --disable-x11 --enable-cross-compile --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static
“--prefix=” 设置成 刚才创建的目录路径 “--cc=” 设置成目标板需要的编译链
3. 编译,make -j4 (使用4条线程编译)编译时间有点长
4. 编译完成后,会在 MPlayer-1.0rc2.tar.bz2 目录下生成可执行文件 mplayer
五、移植到开发版
移植比较简单直接把生成的可执行文件 mplayer 拷贝到开发版的 /bin 下就行,使用 “chmod +x mplayer” 修改好这个文件的可执行权限
六、mplayer 命令测试
1. mplayer test.mp4 播放test.mp4视频
结果报错:[AO OSS] audio_setup: Can\'t open audio device /dev/dsp: No such file or directory” ,网上查了一下,需要配置内核添加 OSS PCM (digital audio) API模块,
2. make muenconfig 进入linux内核配置,打开界面后:
进入 Deivce Drivers——>Sound card support ——>Advanced Linux Sound Architecture 选中 OSS PCM(digital audiop) API 和 OSS PCM (Digital audio) API -- Include plugin system 保存退出
3. 重新编译内核,下载到开发版,这样就没问题了
4. 查看mplayer 命令 mplayer -input cmdlist
以上是关于带音频播放的MPlayer播放器在ARM上的移植笔记的主要内容,如果未能解决你的问题,请参考以下文章