摘要:本文论述了MPlayer在嵌入式开发系统中的应用,说明了如何在嵌入式开发板的平台上实现MPlayer的配置、编译、安装及调试过程。
  关键词:嵌入式系统;MPlayer;MEncoder

  引言
  嵌入式系统是以应用为中心、以计算机技术为基础,软件硬件可裁剪,适应于应用系统的功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。我们将MPlayer移植到嵌入式系统中,是因为MPlayer播放器是Linux下最优秀的多媒体播放器之一,它的播放速度最快,支持的文件格式也最多。随着技术的不断进步,媒体播放器已越来越多,选择一款多功能播放器,实在不容易。MPlayer就是个好的媒体播放器,资源占用率极低,支持格式极广,输出设备支持极多,所以值得移植到嵌入式系统中。

  配置与编译安装MPlayer
  MPlayer是Linux上的电影播放器,它的功能十分强大,能够播放众多格式的文件,在X86 PC机上运行很稳定,也可以把它移植到非X86CPU上的嵌入式系统中来。我们就是将MPlayer软件移植到ARM9开发板中,让MPlayer运行在ARM核上。MPlayer能使用众多本地的Xanim,RealPlayer和Win32 DLL编解码器,播放大多数MPEG、VOB、AVI、OGG、VIVO、ASF/WMV、QT/MOV、FLI、RM、NuppelVideo、yuv4mpeg、FILM、RoQ文件。借助于MPlayer你能观看VideoCD、SVCD、DVD、3ivx、RealMedia和DivX格式的电影。MPlayer的另一个大的特色是支持广泛的输出设备,它可以在X11、Xv、DGA、OpenGL、SVGAlib、fbdev、Aalib、DirectFB下工作,而且你也能使用GGI和SDL(由此使用它们支持的各种驱动模式)和一些低级的硬件相关的驱动模式。这个播放器能很稳定地播放被破坏的MPEG文件,并且它能播放Windows media player都打不开的有损坏的AVI文件,甚至,没有索引部分的AVI文件也可以播放。

  MEncoder的使用
  MPlayer采用的编解码器包是libavcodec,这个编解码器包可以在多种平台上对H263/MPES/RV10/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流进行解码,它同时也是已知完成这些任务最快的解码器。MEncoder(MPlayer电影解码器)可以生成MPEG(MPEG-PS)格式的输出文件。它们只能用于libavcodec的mpeg1video编解码器,因为一般播放器(除了MPlayer) 为MPEG文件中包含的是MPEG1视频流和MPEG1 layer 2(MP2)音频流。要改变MEncoder的输出文件格式,可以使用-of mpeg选项。例如:mencoder -of mpeg -ovc lavc -lavcopts vcodec-mpeg1video -oac copy media.avi -o output.mpg。
  MEncoder能用两种方式处理输入流:编码和复制。
  ?视频流(一ovc copy选项):MEncoder可以把FLI或者VIVO或者MPEG1的视频放到AVI文件中;还可以将视频流复制用于只有音频流需要被编码的情况。
  ?音频流(-oac copy选项):可以把一个外部音频文件(MP3,Vorbis)传到输出流中。使用-audiofile选择来实现这个功能。
  MEncoder可以修复交错损坏的AVI文件,我们可以简单地复制视频和音频流,并用MEncoder产生索引。命令为:mencoder -idx input.avi -ovc copy -oac copy -o output.avi。
  MEncoder还可以用来修复两个或多个AVI文件并将其合并成一个文件。
  如果需要GUI图形用户界面,就要安装gtk并且必须在运行./ configure时使用_enable-gui来编译代码,然后在config文件中添加gui=yes;或者用-s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer,之后运行gmpalyer即可。目前MPlayer 不自带skin,所以要使用GUI,就必须到网上下载,将下载回来的文件解压到$HOME/.mpslayer/skin下。
  MPlayer有一个用户定义的OSD菜单接口,在编译MPlayer时,在./configure加上_enable-menu参数,这样确保安装了OSD字体;把etc/menu.conf复制到./mplayer目录下;把etc/input.conf复制到./mplayer目录下;检查并编辑input.conf来启动菜单控制键;键入mplayer –menu file.avi,来使用mplayer。
  将上述步骤做好后,就可以编译MPlayer,先到网上下载MPlayer0.91版本:
  tar xzvf mplayer-0.91.tgz
  ./configure
  make
  make install
  如果进行顺利的话,就可以运行你想看到的图像和声音了。

  MPlayer在开发板上的实现

  不过以上这些都是在X86 PC上实现的,要想在以ARM(开发板CPU为S3C2410)为核心嵌人式开发板上实现此过程,还需要做下面的工作。首先要在交叉编译环境中对MPlayer进行编译,将Mplayer源代码中关于视、音频部分以及驱动部分写入Makefile文件里。由于开发板只有64MB的SDRAM及16MB的FLASH,而且应用程序一般都烧写到FLASH中,应用程序大概有16MB左右,所以直接将应用程序烧写到开发板里的FLASH中的做法不可行,这样开发板会因空间太小而拒绝运行应用程序。当要在嵌入式系统中调试某个软件时,可以将软件应用代码拷贝到移动存储中,再将移动存储里的文件加载到嵌入式开发板上进行调试,也可以将软件应用代码通过PC机上的Linux操作系统挂载到嵌入式系统的开发板中进行调试,运行正常后再将软件应用代码烧写到开发板中,这样就可以避免应用程序在FLASH上的重复擦写。我们所采用的方法是将宿主机和嵌入式开发板之间用以太网连接,在宿主机的Linux操作系统下的终端中运行minicom作为开发板的显示终端,通过Linux下的NFS网络文件系统将宿主机的硬盘安装到开发板上的某个目录下,然后再运行MPlayer的可执行文件./mplayer。将你想要播放的图像文件1.avi也放到宿主机的某个目录下(如:/home/1.avi),同时将mplayer可执行文件也拷贝到此目录下/home/mplayer。假设宿主机的IP地址为192.168.2.122,在目标板上输入mount -o nolock 192.168.2.122:/home /mnt进入目标板的mnt目录:cd/mnt,然后运行./mplayer 1.avi,即可以观看在开发板的LCD上显示1.avi的内容。当然最后不要忘了播放完成后要从目标板上卸载宿主机的目录,键入umount/mnt即可。如果没有NFS网络系统的支持,也可以自己做一个10MB的文件系统,开发板的FLASH为16MB,系统资源占去4MB左右FLASH的空间,而将ramdisk文件系统作为系统运行的最小文件系统,容量大概限定在2MB以内,剩下的10MB左右的FLASH可以做成Cramfs文件系统,它是一个压缩文件系统,实际容量可达到12MB~15MB,基本上满足了用户的应用要求。改变内核的配置,将支持Cramfs文件系统的功能编译到内核中,重新编写驱动程序并加到Makefile文件中,然后进行编译,在烧写ramdisk文件系统之后继续烧写Cramfs文件系统。烧写完毕后启动开发板,Cramfs就会作为ramdisk的子目录出现,直接调用该目录下的应用文件即可。

  此开发板可用于掌上PDA的前期设计和应用。嵌入式系统软件的发展是以应用为中心,所以我们要利用国内巨大的应用市场资源,将我国的软件业发展成嵌入式系统软件、支撑软件、应用软件共同发展的格局。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9403012/viewspace-1648/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9403012/viewspace-1648/

Linux播放器MPlayer嵌入式开发系统中的应用相关推荐

  1. 嵌入式linux播放视频 mplayer,嵌入式linux中mplayer播放视频编程实践

    用android或是QT来开发视频播放程序相对来说比较简单,如果是在linux用纯C语言来进行开发,就显得比较麻烦,好在现在有很多开源项目能够帮助我们做什么事情,mplayer就是音视频播放开源项目中 ...

  2. 机器视觉:嵌入式视觉系统中的接口

    机器视觉:嵌入式视觉系统中的接口 现在我们要构建一个自动割草机,割草机的空间定位需要通过相机扫描环境来获得,这个场景下传统的机器视觉系统满足不了,但嵌入式系统可以满足.为什么?因为割草机是用电池供电的 ...

  3. Linux下搭建Cortex-M嵌入式开发环境

    Linux下搭建Cortex-M嵌入式开发环境 终于换上了Linux,更换之前考虑良久,最后选定了Ubuntu15(PS:自己家里用的是Fedora),主要是考虑Ubuntu确实更易用(但明显没有De ...

  4. 搭建rtmp直播流服务之4:videojs和ckPlayer开源播放器二次开发(播放rtmp、hls直播流及普通视频)...

    前面几章讲解了使用 nginx-rtmp搭建直播流媒体服务器; ffmpeg推流到nginx-rtmp服务器; java通过命令行调用ffmpeg实现推流服务; 从数据源获取,到使用ffmpeg推流, ...

  5. 万能播放器mplayer

    1)万能播放器mplayer 这是个linux下面很流行的播放器,系统安装完后自带的有音频和视频播放器,但是都没有很全的解码器,所以很多东西都不能播放. 从源上下载并安装mplayer: sudo a ...

  6. linux视频播放器mplayer,ubuntu 视频播放器mplayer

    简介 Mplayer的特点是支持的格式相当多(当然,需要安装win32×××,这样xine也可以支持更多格式),采用与WinDVD类似的界面,可以更换面板(换肤). Mplayer 是一款自由的多媒体 ...

  7. 战斗机嵌入式训练系统中的智能虚拟陪练

    战斗机嵌入式训练系统中的智能虚拟陪练 人工智能技术与咨询 来源:<航空学报> ,作者陈斌等 摘 要:智能化"实虚"对抗是现代先进战斗机嵌入式训练系统的重要功能需求.自主 ...

  8. android音乐播放器ppt,基于Android音乐播放器设计与开发.ppt

    基于Android音乐播放器设计与开发 毕业设计 基于Android的音乐播放器 设计与开发 设计概述 研究背景 研究意义 研究目标 系统演示 研究背景 随着Android智能手机的普及,用户越来越能 ...

  9. 基于linux的软plc设计,Linux环境下软PLC开发系统的设计与实现

    文章主要介绍了在Linux操作系统环境下,软PLC梯形图的编辑技术.采用基于面向对象的方法,在分析了梯形图组成元素的基础上,阐述了设计过程中使用的类层次结构,并根据梯形图动态存储的特点,描述了存储梯形 ...

最新文章

  1. cpp中sizeof与指针
  2. 在SQL Server中如何转化长日期形式为短日期格式
  3. 《Science》基因组比对的革命性技术
  4. 左右两个下拉列表框的选项互移及获值效果
  5. 异步编程 In .NET(转载)
  6. flask_mail用法实例
  7. openshift for linux
  8. 跑分cpu_一加8T现身跑分网站:CPU正式敲定 10月15日见
  9. wallpaper怎么导入视频_抖音上爆火的手绘视频怎么做?这篇文章来教你!
  10. leetcode41. First Missing Positive
  11. HashMap中capacity、loadFactor、threshold、size等概念的解释
  12. oralce杀session
  13. Android Studio生成APP方法及其所在位置
  14. 帝友系统:中国P2P网络借贷可否复制Lending Club模式?
  15. 大图书馆 #5 纳瓦尔宝典
  16. 人民币符号是什么 人民币符号怎么打
  17. 在线要饭源码 支付宝个人免签约支付
  18. [笔记]Windows核心编程《十六》线程栈
  19. 硬币面值组合的算法题解
  20. pc控制iphone的软件_太好用了,这个软件可以让你在电脑上自由控制 iPhone和安卓手机!...

热门文章

  1. 麒麟A1手表升级鸿蒙,HUAWEI WATCH GT2首发体验: 首款麒麟A1的手表有多神?14天续航小意思...
  2. 制作CYDIA发布源的DEB文件,详解!
  3. 在Ubuntu系统中修改下载源
  4. 全国大学生信息安全竞赛-创新实践能力赛-SMU
  5. Java8 map转list集合
  6. 傅盛提醒:撤离北京相当危险
  7. Python菜鸟入门基础篇,零基础小白必看
  8. Rufus 制作U盘启动
  9. 【Unity Shader】屏幕后处理2.0:实现Sobel边缘检测
  10. H5网页Canvas画布绘图 图片文字合成