MPlayer在ARM上的移植(S5PV210开发板)

发布者:和谐共融最新更新时间:2024-12-18 来源: cnblogs关键字:MPlayer  ARM 手机看文章 扫描二维码
随时随地手机看文章

MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只需要移植这两个即可.移植后即进行字符界面的播放.

移植之前先做好移植前准备,安装好arm-linux交叉编译器,并下载 MPlayer-1.0rc2.tar.bz2 和libmad包(libmad-0.15.1b.tar.gz)

1.安装libmad
(1)解压libmad
解压libmad包(libmad-0.15.1b.tar.gz);
$  tar   zxvf   libmad-0.15.1b.tar.gz  -C   libmad

(2)进入libmad的目录,输入配置命令:
$  cd libmad
$  ./configure --enable-fpm=arm --host=arm-linux --disable-shared --disable-debugging --prefix=/home/bamboo/testcode/libmad/lib CC=/opt/caozhudong/bin/armv4tl-caozhudong-linux-gnueabi-gcc(要保证arm-linux-gcc的路径已经有 export过,否则给出完整路径。)

(3)交叉编译libmad(运行)
$  make
$  make install
这样就可以看到 /usr/local/arm/3.3.2/lib 目录下多了include和lib目录,这些就是libmad相关的库。

2.安装MPlayer
(1)解压 MPlayer
解压 MPlayer包( MPlayer-1.0rc2.tar.bz2)
$  tar   jxvf    MPlayer-1.0rc2.tar.bz2   -C   mplayer

(2)进入mplayer的目录,输入配置命令:
$  cd  mplayer
 ./configure关键就是后面的配置参数了。rc2版本的配置参数相比pre版本而言有些微的改变,配置参数如下:
$  ./configure --cc=/opt/caozhudong/bin/armv4tl-caozhudong-linux-gnueabi-gcc --host-cc=gcc --target=arm-linux --enable-static --disable-win32dll --disable-dvdread  --enable-fbdev --disable-mencoder --disable-live --disable-mp3lib --enable-mad --enable-libavcodec_a --language=zh_CN  --disable-armv5te --disable-armv6 --with-extraincdir=/home/bamboo/testcode/libmad/lib/include  --with-extralibdir=/home/bamboo/testcode/libmad/lib/lib

 --cc : 交叉编译工具,如果没添加到环境变量,就要指定完整路径
 --target : 在pre版本中,对于--target和这个配置参数是这样描述的:
===============================================
 --target=arm- armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这 个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去(据我观察是这样的);第三部分是系统平台。
===============================================
 但是在rc2版本中,只需要--target=arm-linux这样指定就好了。

  --enable-static : 是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置--prefix了,另外也不用执行 make install。
  --prefix=/tmp/mplayer-rc2 : make install后,可执行程序就安装在/tmp/mplayer-rc2目录下,不写则可执行程序安装在当前目录下面。
  --disable-win32dll : 禁用win32动态链接库支持。在pre版本中该参数为
  --disable-dvdread : 禁用libdvdread.
  --enable-fbdev : 支持fbdev,这个一定要选上。
  --disable-mp3lib 和 --enable-mad : arm系列的cpu,一般都没 浮点运算 单元,而mplayer的mp3解码默认使用mp3lib,这个是 浮点运算 库,在arm上肯定跑不了,使用ffmp3或者libmad(需要外部库libmad支持)应该就没问题了。所以这里需要禁止掉mencoder和使能 libmad。
  --disable-mencoder : 禁止编码功能。项目上不需要此功能,禁掉以缩小尺寸。而且听说在这里编译mencoder会有问题,听说而已,没试过。
  --disable-live : 禁止live 555流媒体。(不知道干啥用)
  --enable-libavcodec_a : 启用静态的libavcodec解码。在pre版本中该参数为--enable-libavcodec。
  --disable-armv5te --disable-armv6 : 禁用armv5te、armv6指令扩展。
  --with-extraincdir和-with-extralibdir : 指定libmad和mad.h的路径。mad的路径被添加到编译参数-I和-L后面,替换libmad后需要指定(此路径就是第一步交叉编译libmad时生成的include和lib目录,很关键,第一次交叉编译时就是这里没有指定,出现错误的)。
  注:在pre版本中需要指定--host-cc=gcc配置参数。用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能缺少。但在rc2版本中该参数可以省略掉。

(3).交叉编译MPlayer(运行)
./configure 之后就开始make了。
$  make
编译过程中会出现很多错误,以下是我编译时出现的错误及其解决方法
错误(1)
./codec-cfg ./etc/codecs.conf > codecs.conf.h
./codec-cfg: 1: Syntax error: word unexpected (expecting ')')
解决方法:在configure时添加 --host-cc=gcc就可以解决

错误(2)
make[1]: *** [armv4l/dsputil_arm_s.o] Error 1
make[1]: Leaving directory `/root/MPlayer-1.0rc2/libavcodec'
make: *** [libavcodec/libavcodec.a] 错误 2
错误原因是pld指令只在armv5te以上版本有效,在2440(armv4l)无效
预读取PLD指令
功能:cache预读取(PLD,PreLoad),使用PLD指示存储系统从后面几条指令所指定的存储器地址读取,存储系统可使用这种方法加速以后的存 储器访问。
解决方法:修改MPlayer-1.0rc2/libmpeg2/motion_comp_arm_s.S和MPlayer-1.0rc2 /libavcodec/armv4l/dsputil_arm_s.S这两个报错文件,在前面添加上:
#ifndef HAVE_PLD
.macro pld reg
.endm
#endif
然后再make

(4)交叉编译生成可执行程序mplayer,用NFS文件系统挂载启动开发板,MPlayer支持播放视频文件MP4,avi,ASF,我自己板子的LCD屏是320×240,所以用视频转换器转换一下视频的分辨率。
开始运行mplayer。
 $  ./mplayer test.avi -framedrop -quiet -vf rotate=1,scale=320:240

关键字:MPlayer  ARM 引用地址:MPlayer在ARM上的移植(S5PV210开发板)

上一篇:S5PV210 Linux字符驱动之PWM蜂鸣器驱动
下一篇:S5PV210串口通信

推荐阅读最新更新时间:2026-03-16 14:22

MPlayerARM上的移植S5PV210开发板
MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只需要移植这两个即可.移植后即进行字符界面的播放. 移植之前先做好移植前准备,安装好arm-linux交叉编译器,并下载 MPlayer-1.0rc2.tar.bz2 和libmad包(libmad-0.15.1b.tar.gz) 1.安装libmad (1)解压libmad 解压libmad包(libmad-0.15.1b.tar.gz); $ tar zxvf libmad-0.15.1b.tar.gz -C libmad
[单片机]
tslib移植(针对s5pv210,cw210开发板
tslib移植:   tslib是为了控制触摸屏的开源程序,那么为了用于我的开发板(cortex-a8系列的cw210开发板),那么要有特定的配置才能用于指定的开发板。 1.下载tslib-1.4.tar.gz 2.解压: ##tar zxvf tslib-1.4.tar.gz 3.配置: ##cd tslib ##./autogen.sh ##./configure --prefix=$(pwd)/_install --host=arm-linux ac_cv_func_malloc_0_nonnull=yes ps:--prefix=$(pwd)/_install是指定安装目录为当前目录的_install目录 --host
[单片机]
tslib<font color='red'>移植</font>(针对<font color='red'>s5pv210</font>,cw210<font color='red'>开发板</font>)
ARM移植MPlayer
奋斗了一晚上,多方查找资料,终于将MPlayer交叉编译成功了,小记经验于此。 MPlayer版本:MPlayer-1.0rc2.tar.bz2; 交叉编译器:cross-3.2.tar.bz2 1 在我的主目录中解压Mplayer 2 安装交叉编译器,将cross-3.2.tar.bz2以root权限拷贝到/目录执行解压操作 3 cd Mplayer目录 4 修改stream.c,注释掉 //#ifdef USE_DVDREAD //extern stream_info_t stream_info_dvd; //#endif //#ifdef USE_DVDREAD // &stream_info_dvd, //#endif 原
[单片机]
ARM64架构硬件中断处理流程深度剖析
一、先搞懂:什么是硬件中断? 你正在用刷视频,突然收到微信消息 —— 这就是生活中的 “ 中断 ” 。对 64 (手机、服务器、设备的核心)来说, 硬件中断是外设(如键盘、网卡、)向 发送的 “ 紧急请求 ” :比如网卡收到数据要处理、到点要触发任务、按键被按下要响应,这些都需要 CPU 暂停当前工作,优先处理紧急事务。 没有中断机制的话, CPU 只能 “ 轮询 ” 外设(挨个问 “ 有没有事? ” ),既浪费资源又反应迟钝。而中断就像 “ 快递敲门 ” , CPU 不用一直等,收到再
[嵌入式]
<font color='red'>ARM</font>64架构硬件中断处理流程深度剖析
Arm 扩展与清华大学合作,共筑产学研融合与人才培养新范式
Arm 控股有限公司(以下简称 Arm)昨日(12 日)与清华大学经济管理学院在北京正式签署合作协议 ,该协议是基于双方长期合作的基础,进一步扩大教学科研的实践和 AI 人才的培养。在此次合作协议中,双方不仅将在授课项目、教材开发、人才交流等方面展开合作,同时 Arm 捐赠专项资金,用于采购搭载 Arm 架构的国产服务器等科研资源,从基础设施底层支撑学院开展教学科研、大模型部署及数据推理分析工作。这一举措不仅将 Arm 与清华大学的合作拓展至技术应用层面,更标志着 Arm 在中国产学研生态建设的又一重要落地,为中国科技和产业人才成长注入新动能。 Arm 战略与中国副总裁 Philip Stanbury-Jones(左) 和
[嵌入式]
<font color='red'>Arm</font> 扩展与清华大学合作,共筑产学研融合与人才培养新范式
ARM64硬件中断处理机制深度解析
一、先搞懂:什么是硬件中断? 你正在用刷视频,突然收到微信消息 —— 这就是生活中的 “ 中断 ” 。对 64 (手机、服务器、设备的核心)来说, 硬件中断是外设(如键盘、网卡、)向 发送的 “ 紧急请求 ” :比如网卡收到数据要处理、到点要触发任务、按键被按下要响应,这些都需要 CPU 暂停当前工作,优先处理紧急事务。 没有中断机制的话, CPU 只能 “ 轮询 ” 外设(挨个问 “ 有没有事? ” ),既浪费资源又反应迟钝。而中断就像 “ 快递敲门 ” , CPU 不用一直等,收到再
[嵌入式]
<font color='red'>ARM</font>64硬件中断处理机制深度解析
安谋科技发布“AI Arm CHINA”战略,“周易”NPU引领端侧大模型落地
2025年11月20日,ICCAD-Expo 2025在成都盛大开幕。安谋科技CEO陈锋受邀出席高峰论坛,正式对外发布“AI Arm CHINA”战略发展方向,陈锋明确提出了“全力投入AI,连接Arm全球生态,深耕中国本土创新”的核心定位。 安谋科技产品总监鲍敏祺则在媒体采访中,详细解读了作为战略核心载体的“周易”NPU IP的技术优势与落地路径,以“周易”为代表的高性能NPU IP,标志着安谋科技以自研IP为支点、赋能中国AI计算生态的战略全面启动。 在ICCAD大会外, “AI Arm CHINA”的标语成为了亮点 产业全面迎来AI+,“AI Arm CHINA”的独特之处 “AI正重塑产业逻辑,半导体行业将
[半导体设计/制造]
安谋科技发布“AI <font color='red'>Arm</font> CHINA”战略,“周易”NPU引领端侧大模型落地
Arm Neoverse 平台集成 NVIDIA NVLink Fusion,加速 AI 数据中心应用落地
Arm 与 NVIDIA 持续深化合作,在 AI 时代推动协同设计与合作迈向新高度。 生态系统合作伙伴可将高效的 Arm 架构计算能力集成至 NVIDIA NVLink Fusion 生态系统,实现全缓存一致性与高带宽互连。 随着 AI 数据中心对 Neoverse 的需求持续增长,客户在将工作负载加速器连接至 Arm 平台时拥有更多选择。 人工智能 (AI) 正在重塑数据中心计算架构,推动一场划时代的架构变革。随着 AI 模型与工作负载呈指数级增长,能耗已成为性能瓶颈,这使得高能效计算成为开启下一波 AI 创新浪潮的关键。在这一全新时代, 成功的衡量标准不再局限于原始性能,而是“每瓦智能”,即单位能耗下能够输出的有效
[网络通信]
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved