![ff397efd8ef69e97d39dcaa716737e79.png](https://img-blog.csdnimg.cn/img_convert/ff397efd8ef69e97d39dcaa716737e79.png)
大家好,我是兔子。
是一个嵌入式软硬件工程师。
正在从单片机开发转岗Linux开发。
上一个教程,兔子我使用的是ALSA功能,通过ALSA的一个小测试工具aplay。播放.wav格式的音乐。
但是目前大部分音乐都是MP3格式的。怎么办?
这时兔子的Linux群里有一个朋友在搞MPlayer的视频播放功能。
这倒提醒了兔子我,于是去查了一下,发现MPlayer是一个很强大的播放器,可以播放各种格式的音频及视频。
正好,兔子我就单独编译一下MPlayer。将其移植到周立功的i.MX287板卡及Firefly-rk3288两款板卡上。
这里,就写兔子我在周立功的i.MX287板卡上的移植过程。
1.什么是MPlayer
![ec96fcec3360c4d69a6a1cccec0f9cfb.png](https://img-blog.csdnimg.cn/img_convert/ec96fcec3360c4d69a6a1cccec0f9cfb.png)
MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流操作系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。
MPlayer的开发始于2000年。最初的作者是 Arpad Gereoffy。MPlayer最初的名字叫"MPlayer - The Movie Player for Linux",不过后来开发者们简称其为"MPlayer - The Movie Player",原因是MPlayer已经不仅可以用于Linux而可以在所有平台上运行。
2. MPlayer安装准备
和兔子一起,去MPlayer的官网上下载安装包MPlayer-1.0rc2.tar.bz2。
http://www.mplayerhq.hu/MPlayer/releases/
![322f50f0058d7d09d12c1fb80b150646.png](https://img-blog.csdnimg.cn/img_convert/322f50f0058d7d09d12c1fb80b150646.png)
这是一个老版本的MPlayer。
兔子我也尝试着移植最新的MPlayer,可惜没有成功。就先用这个版本的MPlayer。
同时,还需要用到的alsa-lib-1.0.22。为MPlayer提供音频功能。
PS:上个教程(教程16),用到的是alsa-lib-1.1.9的最新版本。这里是无法正常使用的,必须使用老版本的alsa,即alsa-lib-1.0.22。因为老版本的MPlayer-1.0rc2无法兼容新版本的alsa。
可以从官网上下载:ftp://ftp.alsa-project.org/pub/lib/
![3f95d290639c76a9affe77e908e26505.png](https://img-blog.csdnimg.cn/img_convert/3f95d290639c76a9affe77e908e26505.png)
两个文件下载好后,上传到虚拟机的~/XW_Linux/ZLG/mplayer目录下。并解压。(这个路径是兔子我自己在~/目录下新建的路径,也可以更换为其他路径)
解压,输入命令
tar -jxvf alsa-lib-1.0.22.tar.bz2
tar –jxvf MPlayer-1.0rc2.tar.bz2
可以看到,两个文件已经解压好了。
![075085920dbca901c60cfd8b1619e3ba.png](https://img-blog.csdnimg.cn/img_convert/075085920dbca901c60cfd8b1619e3ba.png)
3.MPlayer移植步骤
1)编译alsa-lib
先输入指令
cd alsa-lib-1.0.22
进入alsa-lib-1.0.22文件夹里。
输入alsa库的编译配置
CC=arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/home/xuw/XW_Linux/ZLG/mplayer/alsa
![bf60132c837514a2b7b22267ad43aa89.png](https://img-blog.csdnimg.cn/img_convert/bf60132c837514a2b7b22267ad43aa89.png)
<1> CC=arm-fsl-linux-gnueabi-gcc表示指定的编译工具为arm-fsl-linux-gnueabi-gcc
<2> prefix=/home/xuw/XW_Linux/ZLG/mplayer/alsa 表示最终编译生成及库调用的路径为/home/xuw/XW_Linux/ZLG/mplayer/alsa
不同虚拟机,路径会有所不同,需要根据实际情况调整。
(兔子我的 ~/ 路径为/home/xuw)
等待一会,可以看到无错误。表示配置通过。
![a309f72c7d2b2234bda00764393f8746.png](https://img-blog.csdnimg.cn/img_convert/a309f72c7d2b2234bda00764393f8746.png)
输入make指令,等待编译通过后。
如果无错误,
再输入sudo make install 安装最终生成的文件。
这时,可以在/home/xuw/XW_Linux/ZLG/mplayer目录下,看到新生成的文件夹alsa
表示alsa-lib安装成功。
![7f8ea75acab3edb2eb2ab6fe4c8ee4b3.png](https://img-blog.csdnimg.cn/img_convert/7f8ea75acab3edb2eb2ab6fe4c8ee4b3.png)
2)编译MPlayer-1.0rc2
cd MPlayer-1.0rc2
进入MPlayer-1.0rc2文件夹里。
输入MPlayer-1.0rc2的编译配置
./configure --cc=arm-fsl-linux-gnueabi-gcc --target=arm-linux --prefix=/home/xuw/XW_Linux/ZLG/mplayer/player --disable-win32dll --disable-dvdread --enable-fbdev --disable-mencoder --disable-live --enable-mp3lib --disable-mad --enable-libavcodec_a --language=zh_CN --disable-armv5te --disable-armv6 --host-cc=gcc --disable-ivtv --enable-alsa --disable-ossaudio --with-extraincdir=/home/xuw/XW_Linux/ZLG/mplayer/alsa/include --with-extralibdir=/home/xuw/XW_Linux/ZLG/mplayer/alsa/lib
说明
<1> --prefix指定了MPlayer-1.0rc2最终编译生成的目录
为/home/xuw/XW_Linux/ZLG/mplayer/player
<2> --disable
表示将该功能不编译进播放器里
<3> --enable
表示将该功能编译进播放器里
<4> --with-extraincdir
表示连接额外的库的头文件目录,这里是需要引用alsa-lib-1.0.22编译出来的头文件
<5> -- with-extralibdir
表示连接额外的库文件目录,这里是需要引用alsa-lib-1.0.22编译出来的库文件
等待一会,看到无错误,表示配置通过。
![cd9467ce49cdc25e3beac556b3190f67.png](https://img-blog.csdnimg.cn/img_convert/cd9467ce49cdc25e3beac556b3190f67.png)
且能看到ALSA功能已经正确加载。
![f93e4c87091eb1da0cecab3546e94b90.png](https://img-blog.csdnimg.cn/img_convert/f93e4c87091eb1da0cecab3546e94b90.png)
输入make指令,等待编译通过后。
(也可以输入make –j4,表示4线程编译,编译速度会快一点)
如果无错误
再输入make install 安装最终生成的文件。
这时,兔子make install 出现错误。
![cdbc964876ad8cdef4ff3d139012e389.png](https://img-blog.csdnimg.cn/img_convert/cdbc964876ad8cdef4ff3d139012e389.png)
在网上搜索了一番,说不要紧。
最终的可执行文件已经在MPlayer-1.0rc2目录下生成了。
可以看到,编译通过的可执行文件mplayer。
大小大约为7.8M。
![5edfd667b94bf1fd86d29e056b430918.png](https://img-blog.csdnimg.cn/img_convert/5edfd667b94bf1fd86d29e056b430918.png)
至此,MPlayer已经编译通过。
将生成的可执行文件mplayer拷贝到开发板上。
(如果不清楚如何拷贝,可以移步教程3)
兔子MCU:从51单片机到Linux 开发板传文件利器-NFS(教程3)zhuanlan.zhihu.com![677efb34ca25f301fc23ca53a8674caf.png](https://img-blog.csdnimg.cn/img_convert/677efb34ca25f301fc23ca53a8674caf.png)
4.测试验证
<1> 插上耳机。
<2> 给开发板上传一个.mp3格式的音乐及一个.avi格式的视频。
![5f5b264bd6b86d5f761febc740de463b.png](https://img-blog.csdnimg.cn/img_convert/5f5b264bd6b86d5f761febc740de463b.png)
<3>输入./mplayer 01.mp3命令,开始欣赏音乐
音乐播放的同时,也在显示音乐播放的进度。
如果想停止播放。可以输入q来退出。
![9e2e0bdc2828944eb4781b52f815a706.png](https://img-blog.csdnimg.cn/img_convert/9e2e0bdc2828944eb4781b52f815a706.png)
<4>播放视频
./mplayer VID_20190612_205816.avi –fs
-fs表示为全屏居中播放
由于视频兔子我使用软件压缩了一下,播放起来还比较流畅,虽然软件觉得我的CPU性能差。
![e13b72c53082fb25f0c87742a9417804.png](https://img-blog.csdnimg.cn/img_convert/e13b72c53082fb25f0c87742a9417804.png)
![f1dde7189ec82977a0b13eceb3601088.png](https://img-blog.csdnimg.cn/img_convert/f1dde7189ec82977a0b13eceb3601088.png)
5.MP3欣赏
![0a57edcbc1d6d3e7d77c9cc64840f452.png](https://img-blog.csdnimg.cn/img_convert/0a57edcbc1d6d3e7d77c9cc64840f452.png)
6.视频播放
![976d00c8487fda64a69ae654a3601052.png](https://img-blog.csdnimg.cn/img_convert/976d00c8487fda64a69ae654a3601052.png)
![f62cab8b9c2812c1f223b0dd764adf09.png](https://img-blog.csdnimg.cn/img_convert/f62cab8b9c2812c1f223b0dd764adf09.png)
![44a5735692229a69be147c1b0a691e41.png](https://img-blog.csdnimg.cn/img_convert/44a5735692229a69be147c1b0a691e41.png)