最新版本mplayer移植pxa270成功
1.下载新版本的mplayer,方法可以参见其他版本的README
svn checkout svn://svn.mplayerhq.hu/mplayer/trunk mplayer
下载libavcodec和libavutil,方法
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg
下载的目录中有两个子目录,libavutil和libavcodec,然后把这两个目录拷到Mplayer目录下
note:如果是再windows操作系统下载的话,要把configure和version.sh用linux自带的工具dos2unix转换一下
2.在mplayer主目录下新建一个脚本文件build-arm.sh,主要是写configure设置,内容如下:
#!/bin/sh
./configure --cc=arm-linux-gcc /
--host-cc=gcc /
--enable-cross-compile /
--target=arm-armv4l-linux /
--enable-linux-devfs /
--disable-win32 /
--disable-dvdread /
--enable-fbdev /
--disable-mencoder /
--enable-libavcodec /
--enable-liba52 /
--disable-libmpeg2 /
--enable-liba52 /
--disable-mp3lib /
--enable-static
--disable-live 2>&1 | tee logfile
--with-extraincdir=/opt/crosstool/arm-linux/arm-linux/include/
--with-extralibdir=/opt/crosstool/arm-linux/arm-linux/lib /
下面部分参考网上的资料.
--cc=arm-linux-gcc设置交叉编译器
--host-cc=gcc是用来编译一些需要在host上执行的中间文件的,如codec-cfg,切记不能少了或搞错了!网上的《mplayer在ARM9(s3c2410)上的移植》(以下简称《移》文)一文介绍说遇到提示codec-cfg不能被执行出错时的解决方法是先将codec-cfg编译成i386平台的在再这里停下来时用i386的codec-cfg替代从而使编译继续。通过实验设置了这个参数就不用那么麻烦了,而且整个过程也显得比较幽雅了。
--enable-cross-compile ,允许交叉编译,我是看./configure --help中有这个选项,所以就加入了,对编译有没有影响还不是很清楚.
--enable-linux-devfs set default devices to devfs ones,configure中是这么解释的,具体的含义还不是很清楚,不过这个跟编译有很大的影响,如果没有加上这个选项,在pxa270平台上不能正常运行程序,不能显示.
--target=arm-armv4l-linux这个参数要注意的是一个分三部分,第一部分的arm是指arch,这里设定为arm;第二部分的armv4l是指具体的版本,这个要注意了,一定要跟libavcodec目录下的平台目录名一致,否则为这个平台的优化代码没办法编译进去;第三部分是系统平台。这个主要是用在libavcodec的编译中,libavcodec下面支持很多平台,比如i386,armv4l,ppc,sh,...,你进入libavcodec的目录下就可以看见这些 子目录,里面分别存放跟这些平台相关的优化汇编代码,我们所用的平台是xscale pxa270,跟arm是兼容的 ,所以设置为armv4l,当然在编译的过程中还可以设置为iwmmxt,因为270平台支持无线mmx指令.在这个实验中,我们没有加入.
--enable-static是设定静态连接,不需要一堆乱七八糟的动态库,尤其对我们这些新手来说省了很多的麻烦。如果设置了这个参数就不用设置—prefix了,另外也不用执行make install。
最后的一个2>&1 | tee logfile意思是将执行的情况在输出到屏幕的同时记录到logfile文件中,在控制台下编译比较有用。
剩余的几个参数没什么好介绍的了,记住--disable-mencoder要加上,mencoder在这里编译会有问题,还没有时间去研究呢。如果不清楚其它的参数的意思自己看configure文件(参考help_config)吧,里面都有介绍。(参考,反正mencoder也没什么用,对于解码)
3.接下来心惊肉跳的时刻来了,编译过程是移植中最考验心脏的.有时一个错误出现都让人头痛不已,我也是反反复复经过了好多此编译才成功,具体步骤如下,我所用的编译器是博创提供的交叉编译工具, arm-linux-gcc 3.4.3版本的.具体在交叉编译的编译步骤我也不是很清除,可以用arm-linux-gcc -v来查看
./build-arm.sh #先将这个文件改成可执行,chmod +x build-arm.sh
make
make过程是很漫长的,主要是我们在configure的时候没有把一些没用的codec给disable掉,我在编译的过程中出现了两个错误,第一个错误是在dsputil.c中出现了arm-linux-gcc bug,我后来找到出错的地方,找了一下这个函数的使用情况,直接把函数主体部分给#if 0 #endif 掉了.这个当然是不提倡的做法,但实在找不出错误的原因.
第二个错误是也是同样的.只不果出错的地方在../libaf/af.c中,这个错误在mplayer发布版的编译过程中没有出现,于是我就着到了那个版本中的这个文件,对比发现基本上一致,于是把那边的程序拷贝到这个函数中.再去掉一些参数.如果这个函数没有正确定义,音频解码部分会出错.
好了,大功告成,程序编译能够通过.ll mplayer 发现有5M多.
4.到了最紧张的时候了,在minicom下../mplayer /mnt/yaffs/mm/xyt.avi,8''液晶屏上出现<<逍遥叹>>的画面和声音,ok!
到这里,说明移植过程没有什么问题了,但是对于H.264的视频是否可以流畅播放还得验证.因为在Mplayer 1.0发布版中发现播放.mkv和H.264文件出现内存出错,这应该是程序的问题.最新的版本中不知道有没有改进.
./mplayer test.264.avi
可以播放,而且fps还可以,具体达到多少不是很清楚
./mplayer gudan.mkv
可以播放,但视频部分解码明显没有达到25fps,画面落后声音很多
./mplayer Shivi.avi //D1(720X480)分辨率,DIVX,mplayer出现提示
************************************************
**** Your system is too SLOW to play this! ****
************************************************
Possible reasons, problems, workarounds:
- Most common: broken/buggy _audio_ driver
- Try -ao sdl or use the OSS emulation of ALSA.
- Experiment with different values for -autosync, 30 is a good start.
- Slow video output
- Try a different -vo driver (-vo help for a list) or try -framedrop!
- Slow CPU
- Don't try to play a big DVD/DivX on a slow CPU! Try some of the lavdopts,
e.g. -vfm ffmpeg -lavdopts lowres=1:fast:skiploopfilter=all.
- Broken file
- Try various combinations of -nobps -ni -forceidx -mc 0.
- Slow media (NFS/SMB mounts, DVD, VCD etc)
- Try -cache 8192.
- Are you using -cache to play a non-interleaved AVI file?
- Try -nocache.
看来解码速度还是有待提高,主要是因为这个基本上是c代码,arm汇编代码占的比重很小,另外nfs可能对速度有一定的影响.

最新版本mplayer移植pxa270成功!相关推荐

  1. 最新版本mplayer移植pxa270成功

    最新版本mplayer移植pxa270成功 1.下载新版本的mplayer,方法可以参见其他版本的README cvs -z3 -d:pserver:anonymous@mplayerhq.hu:/c ...

  2. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错

    下线最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错 cmd: mvn -v Exception in thread "main" ja ...

  3. 升级bugzilla 到最新版本成功 bugzilla 3.2

    升级bugzilla 到最新版本成功 bugzilla 3.2 Stable Release (3.2) Bugzilla 3.2 is our current stable release in t ...

  4. Linux:安装最新版本R + Rstudio成功使用最新R

    手把手教你如何在 Linux 上源码安装最新版本 R 下载 R 下载最新版本R(R-4.0.4.tar.gz) 解压后,在 /R-4.0.4目录下运行 $CFLAGS="-O3 -fPIC& ...

  5. 安装kismet2022最新版本步骤以及报错--没装成功,大家不要看啦,应该是缺少了依赖的问题,这里仅作个人记录!!!需要安装的可以参考内页官网

    官网安装步骤链接传送门https://www.kismetwireless.net/docs/readme/installing/linux/ 安装步骤: yum install libpcap yu ...

  6. Windows PsExec 0day 漏洞获免费微补丁,但仅适用于最新版本

     聚焦源代码安全,网罗国内外最新资讯! 编译:代码卫士团队 0patch 平台发布免费微补丁,修复了微软 Windows PsExec 管理工具中的一个本地提权 (LPE) 漏洞.目前该漏洞尚未获得 ...

  7. mysql126_mysql数据库下载-mysql2019最新版本v7.6.9 官方版 - 极光下载站

    mysql是一款强大的数据软件,为中小型企业提供数据库服务,安全性更高,作为关系型数据库,常用到的sql语句也对比其他的更加的简单,可实用性更高,支持平台下载!更多数据库软件尽在极光下载站! jdk环 ...

  8. 好系统U盘启动来说一说win10系统有必要更新到最新版本吗?

    如果你是一个充满好奇心的人,那就可以把win10系统更新到最新版本,每一个版本都有自己的功能和特性,小编相信,喜欢挑战的人更容易接受新的事物,在使用的过程中,也一定会有新发现. 不过比较老的电脑,或者 ...

  9. 将Node.js升级到最新版本

    本文翻译自:Upgrading Node.js to latest version So, I have Node.js installed and now when I tried to insta ...

最新文章

  1. AI 天气预报准确度高于气象台,一张 GPU 1秒预测未来 90 分钟天气
  2. 系统管理模块_部门管理_设计(映射)本模块中的所有实体并总结设计实体的技巧_懒加载异常问题_树状结构...
  3. 各排序算法的C++实现与性能测试(转)
  4. matlab中如何随机排列,科学网—对图片进行拆分并随机排列的快速算法(MATLAB) - 徐磊的博文...
  5. 避坑!gulp-imagemin运行出问题
  6. linux 逻辑卷 pe size 4.00 mib大小怎么改,linux逻辑卷的建立
  7. ASP.NET 1.1与ASP.NET 2.0 应用运行并存
  8. Windows开发时IsWindowVisible返回错误的处理方法
  9. redis的zset类型(有序集合)
  10. 培养创造性思维的20个技巧
  11. ASP敏感词汇过滤函数
  12. UE4项目的命名规则
  13. java 信鸽推送demo_iOS中关于信鸽推送的使用demo详解
  14. C语言利用堆筛选前1000大元素
  15. 计算机网络课程设计,使用MFC实现界面化创建ARP发送与接受程序(一)
  16. JS验证身份证号码合法性
  17. 嵌入式系统开发-麦子学院(12)——ARM Cortex A8 硬件基础(2)
  18. es 一个字段设置多个分词器
  19. 服务监控CAT的使用
  20. 错误:All elements are null

热门文章

  1. 微信小程序调用网易云音乐接口
  2. android常见数据结构的转换
  3. POJ3258River Hopscotch题解
  4. 第三代酷睿i3处理器_十代酷睿CPU的电脑配置单拿去不谢!
  5. 计算机网络(第7版) - 第九章 无线网络和移动网络 - 习题
  6. (10.3)【隐写缓解】隐写防护、隐写干扰、隐写检测
  7. js判断isNumber(obj)
  8. 23种设计模式汇总整理2
  9. 使用WSDD搭建webservice
  10. 怎样使用JPG转PDF转换器转换图片