设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> Linux应用技巧 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux中的Ftp客户端──…
Linux操作系统下APE格式…
教你在Linux操作系统下也…
配置VNC 使window下vnc访…
浅谈Linux操作系统KDE桌…
在Linux操作系统下用Win…
linux虚拟光驱介绍
用语言控制Linux:Linux…
用语言控制Linux:Linux…
Windows打印机管理向Lin…
  Fine-tuning MPlayer HOWTO         
Fine-tuning MPlayer HOWTO
 

MPlayer是一个电影播放器.它主要是写给linux系统的,但它可以在大部份的类unix系统上运行,甚至在一些其他类型系统,譬如OSX,QNX,(不知何故)甚至Windows.虽然它是一个 桌面/最终面向用户 的应用程序,但它还达不到应有的友善程度.以前,我甚至告诉一些新手(刚从windows系统转过来的),让他们尝试使用xine而不是命令行方式的MPlayer.




MPlayer发展神速.最新的MPlayer 0.90 RC系列拥有一个非常漂亮,可换皮肤,有着通常GUI功能的GUI操作界面,并带有一些隐藏(文档中未公开)的功能和复活节彩蛋(译者注:复活节彩蛋是指程序员在程序里加入的一些和程序无关的譬如小游戏之类的有趣功能,通常是不公开的,靠用户使用过程中发现).譬如,最新的playbar功能是独一无二的,在全屏模式播放时移动鼠标到屏幕的底部中间,你会看到一个小图形化窗口,上面滚动着一些最重要的控制功能.(注意:现在只在使用default skin时才有)




虽然现在mplayer的使用更简单了,但配置你的MPlayer运行环境有时并不轻松.这是一篇小文章,它尝试概述在linux上通常配置mplayer并获得最好性能(和质量)的步骤.注意的是,下面的大部分信息都可以在(MPlayer自带的)文档找到更详细的描述.




声卡驱动.




你可能觉得奇怪,为什么我先说声卡驱动呢.这是因为它是导致性能问题的最常见原因.这个原因不明显.只播放音频(譬如mp3)和播放电影很不同.后者播放器不得不同步视频和音频的输出.由于大部分声卡/驱动都有某些形式的缓冲,这种不同步得到补偿.乍一看,这个并不是什么大问题;ALSA和OSS的APIs都有查询缓冲,音频延时状态的功能.不幸的是,很多声卡驱动(主要是包括进内核里的OSS驱动)没有实现这些"额外"(驱动作者看来把回放mp3不需要的任何功能都当作额外的...)功能,或者,甚至更糟的是,用杂乱/错误的方法来实现,导致返回错误的(状态)值.我甚至听说某些驱动在查询音频延时状态时会导致内核崩溃!




因此,正如你看到的.我(遗憾地??)将声卡驱动放在第一位.这不是MPlayer的问题;它影响大部分播放器和游戏(!).MPlayer可能更敏感,所以它将所有的东西都同步到音频来避免声卡驱动导致的急速回放,程序失去响应甚至崩溃问题.急速回放(声卡驱动中错误的缓冲区延时返回值导致的)在MPlayer上可以用新的参数-autosync来解决,但对于一些更严重的混乱驱动,你只好自己修改驱动本身了.我强烈建议使用ALSA0.9;它证明比内核自带的OSS驱动更加稳定和可靠,甚至比它们的模拟层更稳定(译者注:不懂翻译这句!!!请自己参考原文).如果ALSA不支持你的声卡,那么可以尝试4Front公司的商业OSS驱动.它们需要一些 $,但值得;相对于免费的驱动,它们能正确地实现全部的OSS API函数和提供(支持)"额外"功能.




显卡




大部份新显卡(过去两年间生产的)支持某种形式的硬件缩放(画面)和直接支持YUV颜色表转换.如果你想实现高质量(画面完美,颜色柔和)和快速(硬件缩放)全屏播放,这些都是很重要的功能.注意的是,仅仅显卡(硬件)支持这些功能是不够的.你还需要稳定的,快速的Linux驱动来支持.后者被证明更加重要;只有少量的显卡得到完美的支持,少量的显卡有不完美的,但至少可稳定工作的驱动.对于Matrox和ATI显卡,你可以使用VIDIX驱动.其他的,你只好期待XFree 4.x支持你的显卡并且支持Xvideo扩展功能(运行"xvinfo"命令来测试).S3 Savage,Trident和Neomagic芯片组显卡已经知道有严重的Xv问题,一些其他的显卡(像nVidia和3dfx)大部分时间可以工作,有时有小问题或限制.MPlayer使用-vo参数来选择视频播放输出模式;用-vo help参数可以看到当前可用的视频播放模式.每种都尝试一下,找出最合适的模式(质量/速度).




CPU速度




你的CPU是否快得足够播放DivX电影?这取绝于你的VGA(显卡)支持.为什么?让我们看看两种截然不同的情况.我有一台奔腾2 250MHz的机器(译者:够低级的!!)可以测试,装有Matrox G200 AGP显卡.它可以全屏播放DVD,甚至是分辨率为720x576的DivX电影.我的一个朋友有一台奔腾3 1GHz,显卡是S3 Trio3D.他无法全屏播放DVD,因为他的显卡没有专用的驱动-甚至不支持Xv,甚至DGA模式都不支持,只有纯X11模式可用.他不得不使用软件缩放画面,这意味着大量的数据需要从低速的AGP总线流过和CPU需要进行大量的(运算)工作.他可以在Windows下以低于50%的CPU占用率播放DVD,这得益于他的良好的Windows驱动.




因此,如果你有一块足够好的显卡和足够好的Linux驱动支持,任何CPU都可以胜任这项工作(译者注:"工作"指全屏播放高分辨率的DVD/DivX电影),假设至少是250-300Mhz的CPU.当然,你可以在支持MMX的奔腾1 166上播放小一点(像512x384)的DivX电影! CPU唯一会着紧的情况是你启用了像后期图象处理,反交错扫描,柔化/锐化,反雪花等等过滤器(-vop参数)时.它们会大量耗费你的CPU时间在处理图象方面.




直接渲染




这里说的直接渲染和XFree 4.x里的DRI功能无关.




直接渲染意味着直接访问显卡的RAM区,绕过所有"无用"的中间操作,包括XFree和/或驱动的操作.从总体来看,直接渲染意味着绕过图象拷贝(那就是,编码器不会分配自己的内存缓冲区,但解码器直接访问显卡的显存(硬件直接渲染)或者显卡驱动的缓冲区(软件直接渲染)).绕过从RAM到RAM拷贝工作不会有很大的性能提升;RAM芯片组使用很少的CPU占用时间就可以足够快地完成这项工作.真正的性能提升来自非整幅的图象在2帧之间变换时的情形(画面中只有部分物体在移动),一般平均只有20%到40%图象在变化(其他的都只是 转动/放大 镜头).这意味着只将图象的20%-40%数据通过较慢的PCI/AGP总线传送到低速的显存就足够了.这给一些低速的机器(像老的AMD K6机器)带来很大的性能提升.你可以用-dr这个参数激活MPlayer的直接渲染功能;它默认是关闭的.注意,即使你激活了直接渲染,它的作用还是有可能被忽略,因为它还要求一大堆因素来相配合,包括编码器,过滤器,颜色表和显卡驱动的功能等.用-v参数执行MPlayer来看看它是否允许直接缓冲或者允许直接渲染.




直接渲染的缺点




它需要一个支持"硬件直接渲染"的显卡驱动(VIDIX,mga_vid,VESA,或者fbdev).它无法和双缓冲一起工作(会导致图象撕裂,图象仿佛流泪水).它有时不支持OSD/Subtitle(divx电影字幕)显示.




平滑播放




Mplayer的默认A-V同步参数没有对特定电影文件优化.它们是针对大部分(常见的)电影文件.如果你有高质量的电影文件,你可能希望限制A-V同步纠正功能以获得平滑的播放.最重要的A-V同步参数是"-mc".它的意思是"最大范围A-V时间纠正/每帧",默认是0.01.要获得良好的效果,你可以将它减小,下限是0.0001,但大多数情况下,用0.001就够了.注意的是,越小的值,播放越平滑,但A-V同步作用也就越弱(引起断续/跳帧等).




当发现出现上面的情形,你就应该留意视频计时器了.确认使用了硬件RTC计时器(检查MPlayer运行时在终端里的输出信息有没有"Linux使用RTC硬件计时"字样).注意,在老版本的内核上,这操作需要root权限.对于2.4.19pre8和更高版本,你可以这样让普通用户也有使用RTC权限:

echo 1024 > /proc/sys/dev/rtc/max-user-freq

(还要注意的是,你的内核必须编译了RTC)

如果你的声卡/驱动不是很好(我还没有见到完美的...),你也应该"平滑"一下计时器,试试用-autosync 30参数启动.越高的值越平滑,但避免使用过大的值,因为它会导致声卡的不依赖计时,从而导致A-V不同步.




视频质量/过滤器




如果你的电影质量不好(雪花大,图象交错,色彩不匀...),而且你的CPU还有一些空闲(译者注:意思是CPU没有占用100%),你可以试试MPlayer的一些过滤器.




对于交错扫描的视频(当有镜头快速移动时,你可以看到图象在逐线显示,有头发丝效果),你可以试试用-vop pp=0x20000参数.如果那还不满意,试试0x10000,0x40000和0x80000.对于低质量转换的NTSC格式电影,可以试试-vop dint参数或FFmpeg的过滤器,-vop pp=fd:c或-vop lavcdeint.如果你的CPU被严重占用(反交错扫描运算是一项极耗CPU运算的工作),试试一个差劲点的反交错扫描过滤器,-vop halfpack或者-vop field参数.




对那些颜色不匀的电影(常见于low-bitrate的DivX/WMV或低质量的(S)VCD),试试用deblocking和(可选择的)deringing后期处理过滤器.如果只想deblocking一点,用-vop pp=0x33参数;如果想deblock+dering,用-vop pp=0x77参数.注意,你可以将deblocking参数值和反交错扫描参数值加在一起使用(-vop pp=0x20077,对一些SVCD很有效)从而同时使用两种过滤器.如果你不喜欢二进制码形式,你可以对-vop pp使用更人性化的参数值;用"mplayer -pphelp"命令可获得详细信息.




对于雪花大的电影(甚至一些老DVD发行碟也很多雪花),试试用-vop denoise3d参数.默认值(4:3:6)不是对每种电影都适合;你可能希望增加/减少spatial 和temporal 的数量,这个视雪花的严重程度而定.第一个参数是luma spatial率(值越高越柔和,但图象越模糊;它和强锐化过滤器形成对比);第二个是chroma率,我建议对MPEG电影使用半值(译者注:见原文,这里不懂翻译).最后的参数是temporal过滤,它对有雪花的电影最有效而无需柔化/平滑处理图象,但太高(大于15)的值会导致图象动作急速移动,有时导致锐化效果.如果你的CPU还有空闲时间,尝试-vop hqdn3d参数,它是这个过滤器的高精度版本.(只在"主"CVS版本中提供这个参数)




关于软件缩放:即使你的显卡和显卡驱动都支持硬件缩放,你也可能希望尝试软件缩放来获得更好的播放质量(高CPU占用率).注意,软件缩放可以支持几种过滤器(柔化/锐化,色度变换);用-ssf参数可以查看.你可以用-sws参数选择缩放方法,从nearest-neighbor(pixelized)到bicubic spline(效果很好)




概述:

Mplayer是一个伸缩性很大的媒体播放器.从低端的奔腾1系统到N Ghz CPU的系统,你都可以在你的系统上获得最好的输出质量.它只需要更多的RTFM和实验...




作者小记:

Arpad Gereoffy (A'rpi) 是一个有着25年编程年龄的软件开发者和半职的UNIX系统管理员,从10岁起他就修改过几个软件.他的主要目标是获得一个完整的,任何部分都满意的系统,即使那意味着需要象自由软件那样从最基本的开始重新组建封闭代码元件,或者修改现有的开源项目来满足他的需要.当他没有坐在键盘面前时,那他一定是在睡觉.:)










原文如下:




Fine-tuning Mplayer




by Arpad Gereoffy, in Tutorials - Saturday, March 8th 2003 00:00 PST




MPlayer is a movie player. It's written mainly for Linux, but it works on most Unices and even on other architectures like OSX, QNX, and (somehow) even Windows. Although it's a desktop/end-user application, it is not as user-friendly as it should be. Some time ago, I even told newbies (coming from Windows) to try xine instead of using the commandline MPlayer.




It has improved a lot. The new MPlayer 0.90 RC series comes with a very nice, skinnable, handy GUI with the usual GUI functions and some hidden (undocumented) features and easter eggs. For example, the very new playbar function is unique; move the mouse to the middle bottom of the screen while playing in fullscreen mode, and you'll see a mini-GUI rolling in with the most important control functions. (Note: It's available only with the "default" skin at the moment.Linux联盟收集整理

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-3 3:43:50
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持