移植mplayer视频播放器到ARM板子

前言:

嵌入式linux几种播放视频的方法:

1、交叉编译mplayer、smplayer等软件,移植到嵌入式平台。这种方法在嵌入式平台不能控制窗口位置,不能很好的嵌入到自己程序的窗口中去。但是实现起来应该比较快。

2、使用qt4的phonon组件。这个需要移植相关的phonon、phononbackend、gstreamer等。

3、使用qt5的QMediaPlayer。也需要移植gstreamer。

一、环境和软件介绍

1、主机环境:Ubuntu16.04

2、交叉编译器: gcc version 4.4.1 (Sourcery G++ Lite 2009q3-67)

3、ARM板:kernel:2.6.35,SoC:S5PV210

4、软件包:MPlayer-1.0rc4.tar.bz2,点击下载,或者从非官方下载:http://www.mplayerhq.hu/MPlayer/releases/

二、交叉编译获取mplayer可执行文件

1、交叉编译libmad-0.15.1b

因为mplayer的编译依赖于这个libmad-0.151b的库,所以需要先编译这个,而这个的编译在我的博客里madplay移植已经有教程,这里不再写,参考链接

在我的ubuntu里,我编译libmad-0.151b后的安装路径是:/root/madplay_installed,下面涉及到这个路径的,你要灵活修改为你的。

2、交叉编译MPlayer-1.0rc4

(1)解压:

tar -xvjf MPlayer-1.0rc4.tar.bz2

(2)配置:

cd MPlayer-1.0rc4/
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/root/mplayer_installed>&1 | tee logfile

注意:

--cc=arm-linux-gcc这选项是指定编译工具链。但是这前提是我已经为我的工具链创建了arm-linux-xxx这样的符号链接,并且将路径导出到了PATH

--prefix=/root/mplayer_installed这个指定的是我自定义的MPlayer-1.0rc4的安装目录

在./configure配置完了后,一定要看打印出来的信息,或者查看配置生成的Makefile,看看是否配置使用自己的交叉编译工具链

 (3)编译:

make -j4

出错1: 发现者mad.h是libmad-0.15.1b编译后生成的,这里说没有是因为这程序找不到

解决方法:就是指定libmad-0.15.1b编译后安装的路径,让该程序能找到mad.h,我这里采用了简单粗暴的方法(这方法不得已,最好不要用)

当前在MPlayer-1.0rc4源码顶层目录

cp /root/madplay_installed/include/mad.h ./

 再次编译:

make -j4

出错2:这错误其实很容易想到,因为我们并没有指定libmad-0.15.1b编译后,它的库的安装路径

 解决方法:

vim config.mak

找到-lmad,在其后面,添加libmad-0.15.1b编译后,它的库的安装路径:-L/root/madplay_installed/lib

再次编译:

make -j4

安装:

make install

出错:

碰到这种问题,肯定是粘贴出错信息百度啦,最后得知:这个是因为在make install时会调用strip来剔除一些无用的文件,但是此时strip是主机的,而不是目标机的,就出现错误。解决方法是修改config.mak文件,将文件中的“INSTALLSTRIP = -s”  改成“INSTALLSTRIP =”。

vim config.mak

再次安装:

make install

完美编译好了MPlayer-1.0rc4,上图bin/mplayer就是我们要的视频播放器可执行文件。将它部署到开发板使用即可。

提醒:注意工具链的选择跟你开发板有很大关系,如果编译链版本太高,编译出来的可执行程序要求的内核版本就很高;而如果你的内核达不到这可执行程序的最低内核版本要求,那么在你开发板是运行不了这个可执行程序的,会显示说你的内核版本太低。例如我编译好的这个mplayer最起码要在2.6.16的内核版本以上的开发板才能运行。

附上mplayer的使用方法:

1、如果是单独测试:(xxx.avi是avi格式的视频)

./mplayer xxx.avi
原文地址:https://www.cnblogs.com/xz-954042850-qq/p/12780260.html