MPlayer在ARM上的移植(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
(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上的移植(S5PV210开发板)的更多相关文章
- OpenCV在ARM上的移植
OpenCV在ARM上的移植 与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方 ...
- 【团购活动】接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!
接口最全最好用的S5PV210开发板Sate210-F 开发板开始团购活动了,一起学习linux!http://bbs.eeworld.com.cn/forum.php?mod=viewthread& ...
- 【转】Vsftpd-3.0.2服务器arm-linux移植—mini2440开发板
Vsftpd-3.0.2服务器arm-linux移植—mini2440开发板 开发板:mini2440(2011.04.21)环境:ubuntu9.10 为方便的将文件上传到开发板,采用vsftpd, ...
- S5PV210开发板 VGA测试【转】
本文转载自:http://www.cnblogs.com/endlessli/archive/2011/07/07/2099865.html 不断努力 不断努力 S5PV210开发板 VGA测试 WY ...
- opus在arm的嵌入式平台上的移植和开发
最近产品中要用到opus,圣上一声令下,把opus移植到我们平台上,什么?opus?opus是什么?在一脸 茫然中,我这特种兵码农就赤手空拳上战场了. 废话少说,赶紧在网站:https://opus- ...
- 【Linux开发】OpenCV在ARM上的移植
与X86 Linux类似,请参考:Linux 下编译安装OpenCV 本文在此基础上进行进一步操作. 网络上很多移植编译的方法比较老,多数针对OpenCV 1.0,而且方法很麻烦,不仔细操作很容易出错 ...
- 移植tslib和Qt5.6到三星s5pv210开发板
tslib1.4移植 下载tslib1.4后 1.cp tslib-1.4.tar.bz2 /home/gec 2.tar jxvf tslib-1.4.tar.bz2 3.sudo -s 4.cd ...
- QT5.3.2在ARM上的移植
ubuntu10.04 准备移植phonon,4.5移植失败.播放声音就出错...没办法.转移到QtMutimedia 安装交叉编译工具这里就不提了... 1.下载QT5.3.2:http://dow ...
- rt3070无线网卡移植到开发板
Rt3070无线网卡AP功能移植到GEC210一.平台开发板:GEC210 无线网卡:RT3070主机:VMWare--Ubuntu 10.04 LTS内核版本:linux-2.6.35.7编译器:a ...
随机推荐
- 简单了解ddos攻击
1.一种为流量攻击,主要是针对网络带宽的攻击,即大量攻击包导致网络带宽被阻塞,合法网络包被虚假的攻击包淹没而无法到达主机: 2.另一种为资源耗尽攻击,主要是针对服务器主机的攻击,即通过大量攻击包导致主 ...
- RMAN备份与恢复之表空间
通过以下事例来说明表空间的恢复,删除表空间内的数据文件,删除后在针对位于该表空间的表进行插入记录以及实施检查点进程 SQL> select a.tablespace_name from dba_ ...
- Android SDK Manager 更新失败的解决方法
Android SDK Manager 更新失败的解决方法 原文地址 最近使用Android SDK Manager 更新Android SDK tools 发现经常更新失败,获取不到更新信息: Fe ...
- 从一次异常中浅谈Hibernate的flush机制
摘自http://www.niwozhi.net/demo_c70_i1482.html http://blog.itpub.net/1586/viewspace-829613/ 这是在一次事务提交时 ...
- Python基础教程【读书笔记】 - 2016/7/10
希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第五波:第1章 基础知识 [总览] 介绍如何得到所需的软件,然后讲一点点算法及其主要的组成.学习变量variable ...
- VB中判断空的几种方法,Null, Missing, Empty, Nothing, vbNullString区别
vb6中存在几个虚幻的值:Null.Missing.Empty.Nothing.vbNullString.除了最后一个之外,每一个值都不能直接用“a=值”来判断.下面分别解释一下这几个值的含义. 1. ...
- WeX5和BeX5比较
http://wex5.com/cn/wex5和bex5比较/ WeX5和BeX5比较 许多对WeX5和BeX5略有了解得人都知道,WeX5和BeX5是完全共用前端框架技术的.但是WeX5和BeX5是 ...
- Bellman-Ford & SPFA 算法——求解单源点最短路径问题
Bellman-Ford算法与另一个非常著名的Dijkstra算法一样,用于求解单源点最短路径问题.Bellman-ford算法除了可求解边权均非负的问题外,还可以解决存在负权边的问题(意义是什么,好 ...
- (WCF) WCF and Service Debug
需要做一个多程序间的通讯,采用WCF和WCF Service是目前的选择. 需求:和产品进行通讯,和用户有交互操作,并将最后结果传送个DB 基本思路: 1. 用WPF客户端程序和产品进行通讯,获取必要 ...
- C# 通过委托控制进度条以及多线程更新控件
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...