环境
- Ubuntu16.04 x86_64
- 交叉编译工具arm-linux-gnueabihf
- 板子ZYNQ7010,ARM平台 cortexa9
准备编译
以下均采用脚本进行编译,可自行根据脚本 download_package ()
中的下载地址下载包并存放在 compressed 目录中,如图
开始编译
在一个空目录下新建一个脚本 ,如auto_compile.sh
,写入以下内容
#!/bin/sh
BASE=`pwd`
BUILD_HOST=arm-linux-gnueabihf
OUTPUT_PATH=${BASE}/mplayer_install
make_dirs () {
cd ${BASE} && mkdir compressed mplayer_install source -p
}
tget () {
#try wget
filename=`basename $1`
echo "Downloading [${filename}]..."
if [ ! -f ${filename} ];then
wget $1
fi
echo "[OK] Downloaded [${filename}] "
}
download_package () {
cd ${BASE}/compressed
tget https://nchc.dl.sourceforge.net/project/mad/libmad/0.15.1b/libmad-0.15.1b.tar.gz
tget http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.0rc4.tar.gz
tget https://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.7.tar.bz2
}
tar_package () {
cd ${BASE}/compressed
ls * > /tmp/list.txt
for TAR in `cat /tmp/list.txt`
do
tar -xf $TAR -C ../source
done
rm -rf /tmp/list.txt
}
set_env () {
source /opt/pkg/petalinux/2018.3/settings.sh
}
make_mad() {
cd ${BASE}/source/libmad*
./configure \
--prefix=${OUTPUT_PATH} \
CC=arm-linux-gnueabihf-gcc \
--host=arm-linux \
--enable-fpm=arm \
--disable-shared \
--disable-debugging
# 将 Makefile 129行中的 CFLAGS = -fforce-mem 标签删除
sed -i '129,129s/-fforce-mem //g' Makefile
make -j8 && make install
}
make_alsa () {
cd ${BASE}/source/alsa*
./configure \
--prefix=${OUTPUT_PATH} \
--host=arm-linux \
CC=arm-linux-gnueabihf-gcc \
--enable-shared \
--disable-python
make -j8 && make install
}
make_mplayer () {
cd ${BASE}/source/MPlayer*
./configure \
--prefix=${OUTPUT_PATH} \
--cc=arm-linux-gnueabihf-gcc \
--host-cc=gcc \
--target=arm-linux \
--disable-mencoder --disable-live --disable-mp3lib --disable-win32dll --disable-dvb --disable-sdl \
--disable-dvdread --disable-dvdnav --disable-dvdread-internal --disable-tv --disable-ivtv \
--enable-fbdev --enable-mad --enable-alsa --enable-cross-compile --enable-armv5te --language=zh_CN \
--extra-cflags="-I${OUTPUT_PATH}/include" \
--extra-ldflags="-L${OUTPUT_PATH}/lib"
# 将 config.mak 27行中 INSTALLSTRIP= 的-s 标签删除
sed -i '27,27s/-s//g' config.mak
make -j8 && make install
}
make_dirs
#自行下载源码包存在compressed文件夹下
# download_package
tar_package
#环境自行配置
set_env
make_mad
make_alsa
make_mplayer
编译结果
移植到开发板
需要把 mplayer_install
目录下 lib
中所有文件拷贝到开发板的 /usr/lib
下,目录下 bin
中所有文件拷贝到开发板的 /usr/bin 下
插入SD卡到ubuntu,拷贝可使用以下命令后即可拔出SD卡
cd mplayer_install
sudo cp -a bin/* /media/hammer/rootfs/usr/bin/
sudo cp -a lib/* /media/hammer/rootfs/usr/lib/
sync
测试使用MPlayer
mplayer -zoom -x 640 -y 480 -ac mad test.mp4
-ac mad
表示用我们编译的libmad来处理声音,-zoom -x -y
指定一下分辨率
存在的问题: ARM板的能力还是比较弱的,大分辨率处理起来还是很卡,但是小分辨率比如360p,480p还是没问题的
不过正点的屏幕是BGR24的,颜色空间还是有问题的,整体蓝蓝的
就写到这儿了,后续上QT给他做个界面
参考博客
编译参数具体解释可以看看这篇文章 IMX6ULL-交叉编译Mplayer
这篇博客写的太杂乱了,随便看看 Qt——用在ARM板上的Mplayer(1.3.0,1.0rc4)安装编译步骤!还有,Mplayer背景抖动闪烁问题解答,终于来了!