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

    文章

    382

    浏览量

    36745
  • Linux
    +关注

    关注

    87

    文章

    10943

    浏览量

    206546
  • mplayer
    +关注

    关注

    0

    文章

    6

    浏览量

    2412
收藏 人收藏

    评论

    相关推荐

    嵌入式Qt-交叉编译FFmpeg与视频播放测试

    本篇介绍了嵌入式Qt播放视频的准备工作:交叉编译FFmpeg库并移植到Linux板子中,并先通过ffmpeg指令测试视频播放效果。下篇将尝试
    的头像 发表于 09-15 02:08 1861次阅读
    嵌入式Qt-<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>FFmpeg与视频<b class='flag-5'>播放</b>测试

    Linux驱动开发_mplayer播放器开发

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

    基于ARM Linux QT的掌上多媒体系统的设计和实现 (1)

    、音量调整以及播放进度条和播放时间显示。文件操纵窗口可以使用户选择要播放的文件。播放列表用来播放最近播放
    发表于 08-04 10:15

    【OK210申请】基于QT的音频视频手持播放器的设计

    使用QT进行PMP播放器的设计并进行QT移植,然后对PMP项目进行移植到开发板上,即交叉编译,最后可能会向远程监控系统进行扩展。
    发表于 07-23 16:40

    【OK210试用体验】之(6)制作本地mp3播放器

    本次来教大家制作一个简易mp3播放器。在linux环境制作mp3播放器我能想到的有如下2种办法方法一:交叉
    发表于 09-13 15:44

    [转帖]移植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

    移植MPlayerlinux 2.6的方法

    使用的linux内核为2.6.14.1 MPlayer版本为MPlayer-1.0pre7try2.bz2目前虽然已经添加了mad的mp3库,但播放声音文件回
    发表于 06-08 14:55 1851次阅读

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

    在ubuntu16.04.2中,安装交叉编译工具链在ubuntu中进行嵌入式应用程序开发,安装交叉编译工具链是不可缺少的一个环节。PC操作系
    发表于 11-02 11:06 18次下载
    嵌入式<b class='flag-5'>Linux</b><b class='flag-5'>开发</b>环境搭建-(4)安装<b class='flag-5'>交叉</b><b class='flag-5'>编译</b>工具链

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

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

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

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