嵌入式视频播放器(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
相关推荐
饮啦冰美式10 分钟前
22.04Ubuntu---ROS2使用rclcpp编写节点
linux·运维·ubuntu
wowocpp10 分钟前
ubuntu 22.04 server 安装 和 初始化 LTS
linux·运维·ubuntu
Huaqiwill12 分钟前
Ubuntun搭建并行计算环境
linux·云计算
wclass-zhengge14 分钟前
Netty篇(入门编程)
java·linux·服务器
Lign1731416 分钟前
ubuntu unrar解压 中文文件名异常问题解决
linux·运维·ubuntu
vip4511 小时前
Linux 经典面试八股文
linux
大霞上仙1 小时前
Ubuntu系统电脑没有WiFi适配器
linux·运维·电脑
Karoku0662 小时前
【企业级分布式系统】Zabbix监控系统与部署安装
运维·服务器·数据库·redis·mysql·zabbix
为什么这亚子2 小时前
九、Go语言快速入门之map
运维·开发语言·后端·算法·云原生·golang·云计算
布值倒区什么name2 小时前
bug日常记录responded with a status of 413 (Request Entity Too Large)
运维·服务器·bug