📄 video-playback.html
字号:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta name="generator" content="HTML Tidy, see www.w3.org" /><title>视频回放</title><meta name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.7" /><link rel="HOME" title="FreeBSD 使用手册" href="index.html" /><link rel="UP" title="多媒体" href="multimedia.html" /><link rel="PREVIOUS" title="MP3音频" href="sound-mp3.html" /><link rel="NEXT" title="安装电视卡" href="tvcard.html" /><link rel="STYLESHEET" type="text/css" href="docbook.css" /><meta http-equiv="Content-Type" content="text/html; charset=GB2312" /></head><body class="SECT1" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#840084"alink="#0000FF"><div class="NAVHEADER"><table summary="Header navigation table" width="100%" border="0" cellpadding="0"cellspacing="0"><tr><th colspan="3" align="center">FreeBSD 使用手册</th></tr><tr><td width="10%" align="left" valign="bottom"><a href="sound-mp3.html"accesskey="P">后退</a></td><td width="80%" align="center" valign="bottom">章 7. 多媒体</td><td width="10%" align="right" valign="bottom"><a href="tvcard.html"accesskey="N">前进</a></td></tr></table><hr align="LEFT" width="100%" /></div><div class="SECT1"><h1 class="SECT1"><a id="VIDEO-PLAYBACK" name="VIDEO-PLAYBACK">7.4. 视频回放</a></h1><i class="AUTHORGROUP"><span class="CONTRIB">贡献者</span>Ross Lippert.</i> <p>视频回放是个很新并且迅速发展中的应用领域。一定要有耐心,因为不是所有的事情都象处音频那么顺利。</p><p>在开始之前,你要了解显卡的类型以及它所用的芯片的类型。虽然<b class="APPLICATION"><spanclass="TRADEMARK">XFree86</span>™</b>支持大量的显卡,但能达到好的回放效果的却寥寥无几。在X11运行时,你可以使用命令 <spanclass="CITEREFENTRY"><spanclass="REFENTRYTITLE">xdpyinfo</span>(1)</span>,获得使用你的显卡的X服务器(Xserver)所支持的扩展列表。</p><p>为了评估各种播放器和设置,你须要有一小段用作测试的MPEG文件。由于一些DVD播放器会默认地在<ttclass="FILENAME">/dev/dvd</tt>里去找DVD文件,因此,你会发样建立符号链接到恰当的设备会很有用:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ln -sf /dev/acd0c /dev/dvd</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ln -sf /dev/racd0c /dev/rdvd</kbd></pre><p>在使用了<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>的FreeBSD 5.X里,有一个略微不同的推荐链接集:</p><pre class="SCREEN"><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ln -sf /dev/acd0c /dev/dvd</kbd><samp class="PROMPT">#</samp> <kbd class="USERINPUT">ln -sf /dev/acd0c /dev/rdvd</kbd></pre><p>注意:由于<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">devfs</span>(5)</span>本身的原因,象这样手工建立的链接在重启后将不会存在。想要无论什么时候你启动系统都能自动建立符号链接,那就把下边这行加到<tt class="FILENAME">/etc/devfs.conf</tt>里边:</p><pre class="PROGRAMLISTING">link acd0 dvdlink acd0 rdvd</pre><p>另外,DVD解密要求调用专用的DVD-ROM函数,要求把许可定到DVD设备里。</p><p>一些未定的ports(portsdiscussed)要正确地建立(build)有赖于下列内核的选项设置。在试图建立之前,把这些选项增加到内核配置文件中去,建立新的内核,重启系统:</p><pre class="PROGRAMLISTING">option CPU_ENABLE_SSEoption USER_LDT</pre><div class="NOTE"><blockquote class="NOTE"><p><b>注:</b> <var class="LITERAL">option USER_LDT</var>在FreeBSD 5.X里并不存在。</p></blockquote></div><p>为了增强用于共享内存的X11接口,推荐增加一些<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">sysctl</span>(8)</span> 参数的值:</p><pre class="PROGRAMLISTING">kern.ipc.shmmax=67108864kern.ipc.shmall=32768</pre><div class="SECT2"><h2 class="SECT2"><a id="VIDEO-INTERFACE" name="VIDEO-INTERFACE">7.4.1.测定视频的性能</a></h2><p>在X11下有几种可以显示图像的方式。倒底哪个能工作很大程序上依赖于硬件。首先,下边描述的每一种方法在不同的硬件上都会有不同的品质。其次,在X11里的图像显示近来引起普遍的关注,随着<b class="APPLICATION"><span class="TRADEMARK">XFree86</span></b>的每一个版本,都会有很大的突破。</p><p>常见图像接口列表:</p><ol type="1"><li><p>X11: 一般性的使用共享内存的X11输出。</p></li><li><p>XVideo: 一种X11接口扩展,支持任何X11图像的可拖拉。</p></li><li><p>SDL: 简单直接媒体层。</p></li><li><p>DGA: 直接图片存取。</p></li><li><p>SVGAlib: 低层次掌控图片层。</p></li></ol><div class="SECT3"><h3 class="SECT3"><a id="VIDEO-INTERFACE-XVIDEO" name="VIDEO-INTERFACE-XVIDEO">7.4.1.1.XVideo</a></h3><p><b class="APPLICATION"><span class="TRADEMARK">XFree86</span> 4.X</b>有种扩展叫做<spanclass="emphasis"><i class="EMPHASIS">XVideo</i></span> (或称Xvideo, Xv, xv),它可以通过一个特殊的加速器直接把图像显示在可拖拉的对象里。即使在底端机器里(例如我的PIII 400 Mhz膝上电脑),这个扩展也提供了很好的播放质量。可惜的是支持这种功能的卡中找去找来就只有目前的几种:</p><ol type="1"><li><p>3DFX Voodoo 3</p></li><li><p><span class="TRADEMARK">Intel</span>® i810 and i815</p></li><li><p>部份 S3 芯片组(such as Savage/IX and Savage/MX)</p></li></ol><p>即使你的显卡不在其中,你也不要失望。<b class="APPLICATION"><spanclass="TRADEMARK">XFree86</span> 4.X</b> 每一次出品都会增加新的xv能力 <a id="AEN8671"name="AEN8671" href="#FTN.AEN8671"><span class="footnote">[1]</span></a>.要检查扩展功能是否在运行,可以使用命令<tt class="COMMAND">xvinfo</tt>:</p><pre class="SCREEN"><samp class="PROMPT">%</samp> <kbd class="USERINPUT">xvinfo</kbd></pre><p>如果显示结果如下,那你的显卡就支持XVideo:</p><pre class="SCREEN">X-Video Extension version 2.2screen #0 Adaptor #0: "Savage Streams Engine" number of ports: 1 port base: 43 operations supported: PutImage supported visuals: depth 16, visualID 0x22 depth 16, visualID 0x23 number of attributes: 5 "XV_COLORKEY" (range 0 to 16777215) client settable attribute client gettable attribute (current value is 2110) "XV_BRIGHTNESS" (range -128 to 127) client settable attribute client gettable attribute (current value is 0) "XV_CONTRAST" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_SATURATION" (range 0 to 255) client settable attribute client gettable attribute (current value is 128) "XV_HUE" (range -180 to 180) client settable attribute client gettable attribute (current value is 0) maximum XvImage size: 1024 x 1024 Number of image formats: 7 id: 0x32595559 (YUY2) guid: 59555932-0000-0010-8000-00aa00389b71 bits per pixel: 16 number of planes: 1 type: YUV (packed) id: 0x32315659 (YV12) guid: 59563132-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x30323449 (I420) guid: 49343230-0000-0010-8000-00aa00389b71 bits per pixel: 12 number of planes: 3 type: YUV (planar) id: 0x36315652 (RV16) guid: 52563135-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x3e0, 0x7c00 id: 0x35315652 (RV15) guid: 52563136-0000-0000-0000-000000000000 bits per pixel: 16 number of planes: 1 type: RGB (packed) depth: 0 red, green, blue masks: 0x1f, 0x7e0, 0xf800 id: 0x31313259 (Y211) guid: 59323131-0000-0010-8000-00aa00389b71 bits per pixel: 6 number of planes: 3 type: YUV (packed) id: 0x0 guid: 00000000-0000-0000-0000-000000000000 bits per pixel: 0 number of planes: 0 type: RGB (packed) depth: 1 red, green, blue masks: 0x0, 0x0, 0x0</pre><p>同时注意:列出来的格式(YUV2, YUV12,等等)并不总是随着XVdieo的每一次执行而存在。没有它们可能或迷惑有些人。</p><p>如果结果看起来是这样:</p><pre class="SCREEN">X-Video Extension version 2.2screen #0no adaptors present</pre><p>那么你的显卡可以就不支持XVideo功能。</p><p>如果你的卡不支持XVideo,则只是说明你的显示器在满足刷新图像的计算要求上存在更大的因难。尽管显卡和处理器很重要,你仍然会有个不错的显示效果。You should probably read about ways of improving performance in the advanced reading <ahref="video-playback.html#VIDEO-FURTHER-READING">µÚ 7.4.3 节</a>.</p></div><div class="SECT3"><h3 class="SECT3"><a id="VIDEO-INTERFACE-SDL" name="VIDEO-INTERFACE-SDL">7.4.1.2.简单直接媒体层</a></h3><p>简单直接媒体层(SDL),原意是做为<spanclass="TRADEMARK">Microsoft</span>® <span class="TRADEMARK">Windows</span>®,BeOS, 和 <spanclass="TRADEMARK">UNIX</span>®之间的端口层,允许跨平台应用发展,更高效地利用声卡和图形卡。SDL层可以在低层访问硬件,有时这样做就比X11接口层更为高效。</p><p>关于SDL可以参考<ahref="http://www.FreeBSD.org/cgi/url.cgi?ports/devel/sdl12/pkg-descr"><ttclass="FILENAME">devel/sdl12</tt></a>。</p></div><div class="SECT3"><h3 class="SECT3"><a id="VIDEO-INTERFACE-DGA" name="VIDEO-INTERFACE-DGA">7.4.1.3.直接图形存取</a></h3><p>“直接图形存取”是<b class="APPLICATION"><spanclass="TRADEMARK">XFree86</span></b>的扩展,它允许一个程序迂回Xserver和直接改变帖缓冲(framebuffer)。因为它依靠一个底层的交换存储器来影响这种共享,程序必须以<tt class="USERNAME">root</tt>来执行。</p><p>DGA扩展可以能过<span class="CITEREFENTRY"><spanclass="REFENTRYTITLE">dga</span>(1)</span>来测试和衡量。在<ttclass="COMMAND">dga</tt>执行时,一当有按键被按到,它就会改变显示的颜色。按<bclass="KEYCAP">q</b>退出。</p></div></div><div class="SECT2"><h2 class="SECT2"><a id="VIDEO-PORTS" name="VIDEO-PORTS">7.4.2. Ports 和 包(Packages)对视频的解决</a></h2><p>这部份主要讨论在FreeBSDPorts集中提供的可用于视频回放的软件。视频回放在软件发展中是个很活跃的领域,并且各种不同程序的功能可能与这里的描述不尽相同。</p><p>首先,要弄清楚的重要一点是在FreeBSD上使用的视频程序其发展与在Linux里使用的是一样的。大部份程序都还处在β阶段。使用FreeBSD的包可能面对的问题:</p><ol type="1"><li><p>一个应用程序不能播放其它程序制作的文件。</p></li><li><p>一个应用程序不能播放其自已制作的文件。</p></li><li><p>不同机上的同样的程序,各自重新建立(rebuild)了一次,播放同一个文件结果也会有不同。</p></li><li><p>一个看起来没什么的过滤器,如图像尺寸的调整,也有可能因为一个调整例程的问题变得很不象样。</p></li><li><p>应用程序频繁地留下垃圾(dumps core)。</p></li><li><p>文档如没有随着port一起安装,实际上也可以上网找到,或者去port的<ttclass="FILENAME">work</tt>目录下找。</p></li></ol><p>这些程序中许多也体现了``Linux主义''。即,有些问题来自于(程序)使用的标准库存在于Linux的发行版中,或者有些是Linux内核的功能,而该程序的作者事先所假定了的是Linux内核。这些问题并不总是被prot编护人员注意到或处理过,这也就可能导致如下问题:</p><ol type="1"><li><p>使用<tt class="FILENAME">/proc/cpuinfo</tt>去检测处理器的特性。</p></li><li><p>滥用线程可能导致一个程序悬挂完成,而不是完全中止。</p></li><li><p>软件还不属于FreeBSD Ports集,而又与其它程序经常地一起使用。</p></li></ol><p>现在,这些程序的开发人员也已同port的维护人员进行了联合,以减少制作port(port-ing)时出错。</p><div class="SECT3"><h3 class="SECT3"><a id="VIDEO-MPLAYER" name="VIDEO-MPLAYER">7.4.2.1. MPlayer</a></h3><p><b class="APPLICATION">MPlayer</b>是近来开发的同时也正迅速发展着的一个视频播放器。<bclass="APPLICATION">MPlayer</b>团队的目标是在Linux和其它UNIX系统中的速度和机动性能。在团队的创始人实在受不了当时可用的播放器的性能时,这个计划就开始了。有人也许会说图形接口已经成为新型设计的牺牲品。但是一但你习惯了命令行选项和按键控制方式,它就能表现得很好。</p><div class="SECT4">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -