0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux下播放器开发-交叉编译Mplayer

DS小龙哥-嵌入式技术 来源:DS小龙哥-嵌入式技术 作者:DS小龙哥-嵌入式技 2022-08-14 09:12 次阅读

1. 前言

MPlayer是一款开源多媒体播放器,在主流的Linux、windows、Mac OS 都能运行,主要广泛用在Linux系统上; Mplayer不仅支持图形界面、也支持命令行播放。这篇文章就介绍如何将MplayerJ交叉编译移植到嵌入式开发板上运行,在命令行上正常的播放视频,LCD屏采用的帧缓冲驱动框架渲染图像。

开发板采用友善之臂的Tiny4412开发板,MCU三星的EXYNOS4412,板子上接的LCD分辨率为800*480,帧缓冲驱动框架接口,Linux内核版本是3.5,系统不带图形界面,文件系统是采用busybox制作的最小根文件系统,整个系统比较精简。交叉编译器采用arm-linux-gcc 4.5.1版本。

在命令行运行Mplayer时,支持主模式和从模式两种运行模式,主模式就是正常模式,Mplayer会监听键盘事件,根据键盘上的快捷键完成静音、音量加减、字幕控制、快进、快退等操作。如果想要主进程通过代码控制播放器完成指定一些播放操作,就可以使用从模式播放,在从模式下可以通过管道与mplayer进行通信,完成视频播放加载、暂停、停止、快进、快退等功能。

image-20220120102015443

2. 移植libmad库

默认情况下Mplayer采用自带的mp3lib库来进行mp3解码,但是ARM系列的cpu,一般都没浮点运算单元,而mplayer的mp3解码默认使用的mp3lib是浮点运算库,arm上跑不了,移植mplayer之前需要先编译libmad库。

libmad是一个开源的高精度 MPEG 音频解码库。LIBMAD提供24-bit的PCM 输出,完全是定点计算,非常适合没有浮点支持的平台上使用。使用 libmad 提供的一系列 API,就可以非常简单地实现 MP3数据解码工作。在libmad 的源代码文件目录下的 mad.h文件中,可以看到绝大部分该库的数据结构和 API 等。

下载地址: www.linuxfromscratch.org/blfs/view/s…

image-20220120102405749

(1) 解压

[root@xiaolong video]# tar xvf libmad-0.15.1b.tar.gz 
[root@xiaolong video]# cd libmad-0.15.1b

(2) 配置生成Makefile

[root@xiaolong libmad-0.15.1b]# ./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=$(pwd)/_install
--prefix=$(pwd)/_

install 指定最终生成的库文件的安装路径。

(3) 修改Makefile

删除Makefile大约29行处的-fforce-mem。

image-20220120102554440

或者直接使用命令修改:

sed -i 's/-fforce-mem/ /g'  Makefile

查找文档中的-fforce-mem,然后替换成空。

(4) 编译安装

[root@xiaolong libmad-0.15.1b]# make && make install
复制代码

(5) 查看编译成功的文件

[root@xiaolong libmad-0.15.1b]# cd _install/
[root@xiaolong _install]# ls
include  lib

include和lib两个文件夹,对应文件夹中生成mad.h和libmad.a文件,这两个文件供mplayer编译用。

3. 交叉编译MPlayer-1.3.0

下载地址: www.mplayerhq.hu/design7/new…

image-20220120102818768

(1) 解压安装

[root@xiaolong video]# tar xvf MPlayer-1.3.0.tar.gz 
[root@xiaolong MPlayer-1.3.0]# cd MPlayer-1.3.0

(2) 配置生成config.mak文件

[root@xiaolong MPlayer-1.3.0]# ./configure --prefix=$PWD/mplayer_installdir --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-cross-compile --enable-mad  --disable-gui --disable-menu  --disable-x11 --yasm=""  --extra-cflags=-I/work/video/libmad-0.15.1b/_install/include --extra-ldflags=-L/work/video/libmad-0.15.1b/_install/lib/  2>&1 |tee logfile

上面-I和-L指定的路径是libmad库编译安装生成的路径,根据自己的libmad库路径填写。

(3) 修改config.mak文件

去掉config.mak 33行处的-s参数

[root@xiaolong MPlayer-1.3.0]# gedit config.mak +33

image-20220120103021322

(4) 编译安装

[root@xiaolong MPlayer-1.3.0]# make && make install

编译安装成功之后,会得到一个mplayer可执行文件,这个就是播放器的命令行程序,运行即可播放视频。

4. 部署运行环境

(1). 拷贝依赖库

拷贝依赖就是需要将mplayer命令运行时,需要的所有库文件找齐,拷贝到开发板的/lib目录下。

然后再将mplayer可执行文件命令拷贝到开发板的/bins目录下。

[root@xiaolong MPlayer-1.3.0]# cp mplayer /work/rootfs/bin/ -fv

[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libncurses*.so* /work/rootfs/lib/ -rf

[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libpng*.so* /work/rootfs/lib/ -rf

[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libasound*.so* /work/rootfs/lib/ -rf


[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libz.so*  /work/rootfs/lib/ -rf

[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libjpeg.so*  /work/rootfs/lib/ -rf

[root@xiaolong /]#
cp /work/arm-linux-gcc/opt/FriendlyARM/toolschain/4.5.1/arm-none-linux-gnueabi/sys-root/usr/lib/libfreetype.so*  /work/rootfs/lib/ -rf

(2) 测试播放视频

[root@XiaoLong /]# mplayer xiaomaolv.mp4 -zoom -x 800 -y 480

mplayer :是mplayer生成的视频播放命令 xiaomaolv.mp4 : 播放的视频的文件。 -zoom -x 800 -y 480 : 视频缩放的尺寸

后台播放:

[root@XiaoLong /]# mplayer -slave -quiet -fs /video_mp3/xiaomaolv.mp4 &

(3). 修改mplayer默认的播放位置

修改源码:

[root@xiaolong MPlayer-1.3.0]# vim libmpcodecs/vf_vo.c +184
image-20220120103635701
审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 播放器
    +关注

    关注

    5

    文章

    394

    浏览量

    37376
  • Linux
    +关注

    关注

    87

    文章

    11222

    浏览量

    208887
  • mplayer
    +关注

    关注

    0

    文章

    6

    浏览量

    2462
收藏 人收藏

    评论

    相关推荐

    Linux驱动开发_mplayer播放器开发

    介绍mplayer播放器的安装、使用、以及两个模式的使用;然后介绍广告机项目的要求,实现办法。 USB wifi (360) : 如何从官网下载源码进行代码移植、安装相关无线工具、让嵌入式设备支持WIFI。
    的头像 发表于 09-17 15:50 1382次阅读
    <b class='flag-5'>Linux</b>驱动<b class='flag-5'>开发</b>_<b class='flag-5'>mplayer</b><b class='flag-5'>播放器</b><b class='flag-5'>开发</b>

    ubuntumplyer播放器源码移植

    MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流操作系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。
    的头像 发表于 09-29 14:45 1207次阅读
    ubuntu<b class='flag-5'>下</b>mplyer<b class='flag-5'>播放器</b>源码移植

    Linux系统交叉编译工具链的安装方法

    今天主要和大家聊一聊,如何使用Linux系统交叉编译工具链的方法。
    发表于 11-21 09:30 3313次阅读

    [转帖]移植mplayer到迅为itop4412开发

    测试我提供了两个测试代码是移植的友善之臂的两个项目(本来是qt4的我修改了以下qt5可以编译构建)1. 广告机:adsdemo2. 播放器:myplayer运行:将编译好的程序和mplaye
    发表于 02-17 14:30

    非常详细的(Ubuntu16.04) QT移植mplyer播放器

    入一个mp4文件在opt然后运行mplayer -vo fbdev test.mp4OK,mplayer已经交叉编译成功,放在板子上正常运
    发表于 12-09 18:26

    【NanoPi NEO2试用体验】移植mplayer

    编译成功后,会在./build/bin目录中生成mplayer可执行文件,把mplayer拷贝到板端/usr/local/bin目录。3.测试mplayer是一款音视频
    发表于 07-23 15:57

    视频播放器linux环境的应用

    推荐一款linux环境下好用的视频播放器mplayer没有图形化界面smplayer是mplayer的有图形化界面的软件
    发表于 07-19 06:51

    移植mplayer到mini2440播放rm只有声音该怎么办?

    系统 :Ubuntu 9.04编译器:友善4.3.2早以前下了个MPlayer的源码包,现在拿出来想移植到mini2440上,版本是MPlayer1.0rc2解压后这样配置./configure
    发表于 11-06 05:45

    嵌入式媒体播放器

    嵌入式设备中的广泛使用,Linux系统上多媒体技术应用要求更为凸显。因而研制一种基于Linux、能支持各种媒体文件格式和传输协议的嵌入式媒体播放器,成为当前媒体播放器的重要研究方向。
    发表于 11-05 06:49

    MPla<x>yer播放器最新版下载1.2(2008-2-20)

    MPlayer被评为Linux的最佳媒体播放工具又成功地移植到Windows.它能播放几乎所
    发表于 02-22 11:14 0次下载

    S3C2410mplayer音视频播放器移植

    关键词:mplayer , S3C2410 , 播放器 作者:武汉华嵌嵌入式培训中心 讲师 冯勇 一、s3c2410移植ALSA及相关工具使用 相关源码文件 ncurses-5.6.tar.gz
    发表于 02-24 12:34 920次阅读

    嵌入式Linux开发环境搭建-3-安装交叉编译工具链

    嵌入式Linux开发环境搭建-安装交叉编译工具链1、下载2、解压3、设置环境变量参考文档ubuntu安装
    发表于 11-02 13:21 12次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>开发</b>环境搭建-3-安装<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>工具链

    Linux播放器开发-Mplayer命令行使用介绍

    前面文章介绍了LinuxMplayer播放交叉编译、移植,在命令行上成功运行了
    的头像 发表于 08-14 09:10 6730次阅读

    Linux交叉编译选项与源码与目标文件分离

    交叉编译选项 编译Linux,通常只需要运行 make menuconfig 配置要编译的模块,然后运行 make 。
    的头像 发表于 09-27 11:48 791次阅读

    基于Linuxmp3播放器的研究实现

    电子发烧友网站提供《基于Linuxmp3播放器的研究实现.doc》资料免费下载
    发表于 10-25 10:13 0次下载
    基于<b class='flag-5'>Linux</b><b class='flag-5'>下</b>mp3<b class='flag-5'>播放器</b>的研究实现