• 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背景抖动闪烁问题解答,终于来了!

  • 相关阅读:
    小程序是直接买模板好还是定制开发好?
    springboot系列(二十一):基于AOP实现自定义注解且记录接口日志|超级超级详细,建议收藏
    【机器学习】阿里云天池竞赛——工业蒸汽量预测(6)
    十进制转二进制的算法代码 ← Python
    要在一个长盒子里面实现无缝滚动,为什么我js写好了,还是不能实现无缝滚动呢?
    PyTorch1.13 亮点一览,TorchEval、MultiPy 、TorchSnapshot 新库大解读
    Codeforces Round #779 (Div. 2)
    移动硬盘有文件但看不见怎么恢复文件
    Java学习笔记3.4.3 static关键字 - 静态代码块
    PDF 超过 6000 页,2022 最新 Java 面试题及答案
  • 原文地址:https://blog.csdn.net/qq_41873311/article/details/126953751