嵌入式视频播放器(mplayer)

1.文件准备:

MPlayer-1.0rc2.tar.bz2

libmad-0.15.1b.tar.gz

直接Git到本地

复制代码
git clone https://gitee.com/zxz_FINE/mplayer_tarball.git

2.文件夹准备:

src存放解压后的源码文件,target_Mplayer存放编译安装的目标文件

复制代码
mkdir src  target_Mplayer

在target_Mplayer目录下创建libmad目录,用来存放libmad的目标文件

3.移植

3.1编译libmad文件

进入libmad的源码目录里,进行裁剪配置:(注意目录的修改)

复制代码
./configure CC=arm-linux-gcc --host=arm-linux --disable-shared --disable-debugging --prefix=/home/zxz/jz2440/Mplayer/target_Mplayer/libmad

然后make编译

若是出现: cc1: error: unrecognized command line option "-fforce-mem"

修改Makefile文件,找到 -fforce-mem,并删除掉后再次编译和安装

复制代码
make
make install
3.2编译mplayer文件

(1)进入源码目录下,配置:

复制代码
./configure --host-cc=gcc --cc=arm-linux-gcc --target=arm-linux --enable-fbdev --enable-static --disable-dvdread --disable-live --disable-mp3lib --enable-mad --disable-win32dll --disable-mencoder --disable-ivtv --disable-dvdnav --disable-dvdread-internal --disable-libdvdcss-internal --enable-libavcodec_a --prefix=/home/zxz/jz2440/Mplayer/target_Mplayer>&1 | tee logfile

./configure 对MPlayer-1.0rc4 进行剪裁(将一些不需要的文件关闭),其中 --prefix表示后面运行的文件生成的路径我将其放入 目标目录下(生成的文件有:bin、etc、lib、share)

(2)vim打开config.mak文件,并修改,编译libmad库生成文件夹lib下的库函数是需要使用的,但是在配置这一点并没有被修改,所以要将该路径指出来。

(3) 修改 MPlayer-1.0rc4/libmpeg2/motion_comp_arm_s.S文件和libavcodec/armv4l/dsputil_arm_s.S文件

在文件的开头都添加内容如下:

复制代码
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif

(4)修改Makefile文件:

install带-s 参数时会自动调用strip来strip应用程序。但是arm编译时要调用arm-linux-strip才有正确处理。解决办法是取消-s参数,在Makefile的install部分前面加入:

INSTALLSTRIP := #将其置为空即可

(5)执行:

make 编译

make install运行安装

安装成功后,在mplayer目录下存在四个文件夹,分别为:bin、etc、lib、share

bin目录中,存在mplayer可执行文件(最终得到的结果,可直接供开发板使用)

(6)开发板上测试

复制代码
mplayer test.mp4 -zoom -x 480 -y 272
相关推荐
Crazy CodeCrafter8 分钟前
房租年年涨,客流年年少,服装店还要开吗?
大数据·运维·微信·自动化·开源软件
淼淼爱喝水12 分钟前
Ansible 配置与环境搭建超全教程(自动化运维基础)
运维·自动化·ansible
愚公搬代码17 分钟前
【愚公系列】《剪映+DeepSeek+即梦:短视频制作》033-调色:废片秒变氛围感大片(HSL的精准调节)
音视频
xlp666hub19 分钟前
深度剖析Linux Input子系统(2):驱动开发流程与现代 Multi-touch 协议
linux
yj_xqj39 分钟前
HAproxy负载均衡集群部署
运维·负载均衡
路由侠内网穿透40 分钟前
本地部署开源工作空间工具 AFFiNE 并实现外部访问
运维·服务器·数据库·物联网·开源
zzzsde42 分钟前
【Linux】Ext文件系统(1)
linux·运维·服务器
爱学习的小囧1 小时前
ESXi 8.0 无法选择分区方式 小白级详细解决办法
运维·服务器·网络·虚拟化·esxi8.0
F1FJJ1 小时前
什么是 Shield CLI?视频讲解:一条命令,可浏览器远程访问一切内部服务(RDP/VNC/SSH/数据库等)
运维·网络·数据库·网络协议·ssh
WordPress学习笔记1 小时前
wordpress网站上传不了图片可能是文件夹的权限的原因
运维·wordpress·文件夹权限·uploads·wordpress上传错误