ZYNQ7000交叉编译MPlayer到开发板播放视频

环境

  1. Ubuntu16.04 x86_64
  2. 交叉编译工具arm-linux-gnueabihf
  3. 板子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背景抖动闪烁问题解答,终于来了!

猜你喜欢

转载自blog.csdn.net/qq_41873311/article/details/126953751
今日推荐