Mercurial > mplayer.hg
view DOCS/xml/ru/video.xml @ 25180:48fe4b6e3bab
Support double buffering, fix osd flicker.
author | ulion |
---|---|
date | Fri, 30 Nov 2007 04:20:38 +0000 |
parents | 4edeff353edc |
children | 5d7679358a53 |
line wrap: on
line source
<?xml version="1.0" encoding="utf-8"?> <!-- synced with r25017 --> <chapter id="video"> <title>Устройства вывода видео</title> <sect1 id="mtrr"> <title>Настройка MTRR</title> <para> ОЧЕНЬ важно проверить, правильно ли установлены MTRR регистры, поскольку они могут дать большой прирост производительности. </para> <para> Выполните <command>cat /proc/mtrr</command>: <screen> <prompt>--($:~)--</prompt> cat /proc/mtrr reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9 reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1<!-- --></screen> </para> <para> Здесь все верно, показана моя Matrox G400 с 16Мб памяти. Я выполнил это из-под XFree 4.x.x, который автоматически устанавливает регистры MTRR. </para> <para> Если ничего не сработало, вам придется сделать это вручную. Во-первых, вы должны определить базовый адрес. Существует три способа выяснить его: <orderedlist> <listitem><para> из сообщений запуска X11, например: <screen> (--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000 (--) SVGA: Linear framebuffer at 0xD8000000<!-- --></screen> </para></listitem> <listitem><para> из <filename>/proc/pci</filename> (используйте команду <command>lspci -v</command>): <screen> 01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525 Memory at d8000000 (32-bit, prefetchable)<!-- --></screen> </para></listitem> <listitem><para> из сообщений драйвера ядра mga_vid (используйте <command>dmesg</command>): <screen>mga_mem_base = d8000000</screen> </para></listitem> </orderedlist> </para> <para> Теперь давайте найдем объем памяти. Это очень просто, просто преобразуйте размер видео памяти в шестнадцатеричный формат, или используйте таблицу: <informaltable frame="none"> <tgroup cols="2"> <tbody> <row><entry>1 MB</entry><entry>0x100000</entry></row> <row><entry>2 MB</entry><entry>0x200000</entry></row> <row><entry>4 MB</entry><entry>0x400000</entry></row> <row><entry>8 MB</entry><entry>0x800000</entry></row> <row><entry>16 MB</entry><entry>0x1000000</entry></row> <row><entry>32 MB</entry><entry>0x2000000</entry></row> </tbody> </tgroup> </informaltable> </para> <para> Вы знаете базовый адрес и размер памяти, так давайте настроим регистры MTRR! Например, для вышеуказанной карты Matrox (<literal>base=0xd8000000</literal>) с 32Мб памяти (<literal>size=0x2000000</literal>) просто выполните: <screen> echo "base=0xd8000000 size=0x2000000 type=write-combining" > /proc/mtrr </screen> </para> <para> Не все CPU имеют MTRR. Например, старый K6-2 (около 266MHz, степпинг 0) не имеет MTRR, но у степпинга 12 они уже есть (запустите <command>cat /proc/cpuinfo</command> чтобы это проверить). </para> </sect1> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="xv"> <title>Xv</title> <para> Под XFree86 4.0.2 или новее, вы можете использовать функции работы с YUV[YUV routines] вашей видеокарты, используя расширение XVideo, то, которое используется при указании опциии <option>-vo xv</option>. <!-- FIXME Also, this driver supports adjusting brightness/contrast/hue/etc (unless you use the old, slow DirectShow DivX codec, which supports it everywhere), see the man page. --> К тому же этот драйвер поддерживает управление яркостью/контрастностью/цветностью/и т.д. (кроме случая использования старого ,медленного DivX кодека DirectShow, который везде это поддерживает), смотрите страницу man. </para> <para> Чтобы заставить его работать, убедитесь, что выполняется следующее: <orderedlist> <listitem><para> Требуется использовать XFree86 4.0.2 или новее (предыдущие версии не меют XVideo) </para></listitem> <listitem><para> Ваша карта действительно поддерживает аппаратное ускорение (современные - да) </para></listitem> <listitem><para> X загружают расширение XVideo, это похоже на: <programlisting>(II) Loading extension XVideo</programlisting> в <filename>/var/log/XFree86.0.log</filename> <note><para> Это всего лишь загружается расширение XVideo. При нормальной установке оно грузится всегда, это не означает, что загружена <emphasis role="bold">аппаратная</emphasis> поддержка XVideo. </para></note> </para></listitem> <listitem><para> Ваша карта имеет поддержку Xv для Linux. Чтобы это проверить, запустите <command>xvinfo</command>, являющуюся частью дистрибутива XFree86. Она должна выдать на экран длинный текст, похожий на этот: <screen> X-Video Extension version 2.2 screen #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 (...) 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) (...и т.д....)<!-- --></screen> Карта должна поддерживать YUY2 пакованные и YUV12 планарные[planar] форматы пикселов, чтобы быть полезной в <application>MPlayer</application>. </para></listitem> <listitem><para> И, наконец, проверьте, что <application>MPlayer</application> собран с поддержкой 'xv'. Выполните <command>mplayer -vo help | grep xv </command>. Если поддержка 'xv' включена, то увидите похожую строку: <screen> xv X11/Xv</screen> </para></listitem> </orderedlist> </para> <sect2 id="tdfx"> <title>3dfx карты</title> <para> Хорошо известно, что старые 3dfx драйвера имеют проблемы с ускорением XVideo, они не поддерживают ни YUY2 ни YV12, ни т.п. Проверьте, что у вас XFree86 версии 4.2.0 или новее, он может работать с YV12 и YUY2, в то время как предыдущие версии, включая 4.1.0, <emphasis role="bold">с YV12 приводят к краху</emphasis>. Если вы столкнулись со странными эффектами при использовании <option>-vo xv</option>, попробуйте SDL (он тоже имеет поддержку XVideo), и посмотрите поможет ли это. Обратитесь к разделу <link linkend="sdl">SDL</link> за подробностями. </para> <para> <emphasis role="bold">ИЛИ</emphasis>, попробуйте НОВЫЙ <option>-vo tdfxfb</option> драйвер! Смотрите раздел <link linkend="tdfxfb">tdfxfb</link>. </para> </sect2> <sect2 id="s3"> <title>S3 карты</title> <para> S3 Savage3D, должны прекрасно работать, но для Savage4 используйте XFree86 версии 4.0.3 или выше (в случае проблем с изображением попробуйте 16bpp). По поводу S3 Virge: она поддерживает xv, но карта сама по себе слишком медленная, так что лучше будет ее продать. </para> <para> Существует родной драйвер фреймбуфера для карт S3 Virge, аналогичный tdfxfb. Настройте ваш фреймбуфер (например, укажите ядру "<option>vga=792 video=vesa:mtrr</option>") и воспользуйтесь <option>-vo s3fb</option> (<option>-vf yuy2</option> и <option>-dr</option> тоже помогут). </para> <note><para> Пока не ясно в каких моделях Savage отсутствует поддержка YV12, и преобразование осуществляется драйвером (медленно). Если вы грешите на свою карту, возьмите свежий драйвер иди вежливо спросите в списке рассылки MPlayer-users о драйвере с поддержкой MMX/3DNow!. </para></note> </sect2> <sect2 id="nvidia"> <title>nVidia карты</title> <para> nVidia под Linux - не всегда хороший выбор ... Открытые драйвера XFree86 поддерживают большинство этих карт, но в некоторых случаях придется использовать закрытый бинарный драйвер от nVidia, доступный на <ulink url="http://www.nvidia.com/object/linux.html">сайте nVidia</ulink>. Этот драйвер также всегда необходим для задействования 3D ускорения. </para> <para> Карты Riva128 не имеют поддержки XVideo с драйвером nVidia от XFree86 :( Подайте жалобу nVidia. </para> <para> Тем не менее, <application>MPlayer</application> имеет <link linkend="vidix">VIDIX</link> драйвер для большинства карт nVidia. Сейчас он в стадии беты и имеет некоторые недостатки. За подробостями обращайтесь к разделу <link linkend="vidix-nvidia">nVidia VIDIX</link>. </para> </sect2> <sect2 id="ati"> <title>ATI карты</title> <para> <ulink url="http://gatos.sf.net">Драйвер GATOS</ulink> (который стоит использовать, если у вас не Rage128 или Radeon) по-умолчанию имеет включенную опцию VSYNC. Это значит, что скорость декодирования (!) синхронизирована с частотой обновления монитора. Если воспроизведение кажется медленным, попробуйте как-нибудь отключить VSYNC или установите частоту обновления в n*(fps[кадров/с] фильма) Гц. </para> <para> Radeon VE - если нужен X, используйте XFree86 4.2.0 или новее. Нет поддержки TV-выхода. Конечно, с <application>MPlayer</application> вы можете успешно получить <emphasis role="bold">ускоренное</emphasis> отображение, с или без <emphasis role="bold">TV-выхода</emphasis>, без каких-либо библиотек X. Читайте раздел <link linkend="vidix">VIDIX</link>. </para> </sect2> <sect2 id="neomagic"> <title>NeoMagic карты</title> <para> Эти карты можно найти во многих ноутбуках. Вы должны использовать XFree86 4.3.0 или более новый, или использовать <ulink url="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/">Xv-совместимые драйвера</ulink>. от Stefan Seyfried. Просто выберите подходящий для вашей версии XFree86. </para> <para> XFree86 4.3.0 включает поддержку Xv, недавно Bohdan Horst отослал небольшой <ulink url="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/neo_driver.patch">патч</ulink> для исходников XFree86, ускоряющий операции с фреймбуфером (и XVideo) в четыре раза. Патч был включен в XFree86 CVS и должен быть в следующем релизе после 4.3.0. </para> <para> Чтобы сделать возможным воспроизведение фильмов DVD разрешения поправьте ваш XF86Config как указано здесь: <programlisting> Section "Device" [...] Driver "neomagic" <emphasis>Option "OverlayMem" "829440"</emphasis> [...] EndSection<!-- --></programlisting> </para> </sect2> <sect2 id="trident"> <title>Trident карты</title> <para> Если хотите использовать Xv с картой Trident, учитывая, что они не работают с 4.1.0, установите XFree 4.2.0. 4.2.0 добавляет поддержку полноэкранного Xv с картой Cyberblade XP. </para> <para> Другой вариант: <application>MPlayer</application> имеет <link linkend="vidix">VIDIX</link> драйвер для карт Cyberblade/i1. </para> </sect2> <sect2 id="kyro"> <title>Kyro/PowerVR карты</title> <para> Если хотите использовать Xv с картами на базе Kyro (например, Hercules Prophet 4000XT), следует скачать драйверы с <ulink url="http://www.powervr.com/">сайта PowerVR</ulink>. </para> </sect2> <sect2 id="intel"> <title>Карты Intel</title> <para> Эти карты можно обнаружить во многих ноутбуках. Рекомендуется Xorg последней версии. </para> <para> Для воспроизведения контента размера DVD (и более) поправьте ваш XF86Config/xorg.conf как указано здесь: <programlisting> Section "Device" [...] Driver "intel" <emphasis>Option "LinearAlloc" "6144"</emphasis> [...] EndSection </programlisting> Отсутствие этой опции скорее всего приведет к появлению ошибки <screen>X11 error: BadAlloc (insufficient resources for operation)</screen> при попытке использовать <option>-vo xv</option>. </para> </sect2> </sect1> <!-- ********** --> <sect1 id="dga"> <title>DGA</title> <formalpara> <title>ПРЕАМБУЛА</title> <para> Этот документ пытается сказать несколько слов о том, что такое DGA в целом и что можт сделать DGA драйвер для <application>MPlayer</application> (а что нет). </para> </formalpara> <formalpara> <title>ЧТО ТАКОЕ DGA</title> <para> <acronym>DGA</acronym> это сокращение от <emphasis>Direct Graphics Access[Прямой Доступ к Графике]</emphasis> и означает обход программами X сервера и прямое изменение ими памяти фреймбуфера. Говоря техническим языком, это происходит при помощи отображения[mapping] памяти фреймбуфера в адресное пространство вашего процесса. Это позволяется ядром, только если у вас есть привилегии суперпользователя. Вы можете получить их либо войдя в систему под именем <systemitem class="username">root</systemitem>, либо установив SUID бит на исполняемый файл <application>MPlayer</application> (<emphasis role="bold">не рекомендуется</emphasis>). </para> </formalpara> <para> Есть две версии DGA: DGA1 используется XFree 3.x.x и DGA2, появившийся в XFree 4.0.1. </para> <para> DGA1 предоставляет только прямой доступ в фреймбуферу, как описано выше. Для переключения видеорежимов придется обратиться в расширению XVidMode. </para> <para> DGA2 объединяет возможности расширения XVidMode и, к тому же, позволяет изменять глубину цвета отображения. Таким образом, вы можете,работая, в основном, в X с 32-х битной глубиной цвета, переключиться на глубину 15 бит и наоборот. </para> <para> Однако DGA имеет некоторые недостатки. Похоже, оно каким-то образом зависит от используемого графического чипа и реализации видеодрайвера сервера X, управляющего этим чипом. Так что он работает не на всех системах. </para> <formalpara> <title>УСТАНОВКА ПОДДЕРЖКИ DGA ДЛЯ MPLAYER</title> <para> Во-первых, убедитесь, что X загружает расширение DGA, смотрите в <filename>/var/log/XFree86.0.log</filename>: <programlisting>(II) Loading extension XFree86-DGA</programlisting> Смотрите, <emphasis role="bold">крайне рекомендуется</emphasis> XFree86 4.0.x или старше! DGA драйвер программы <application>MPlayer</application> определяется автоматически скриптом <filename>./configure</filename>, или можете принудительно указать его использование опцией <option>--enable-dga</option>. </para> </formalpara> <para> Если драйвер не смог переключиться на меньшее разрешение, поэкспериментируйте с опциями <option>-vm</option> (только для X 3.3.x), <option>-fs</option>, <option>-bpp</option>, <option>-zoom</option> чтобы найти видеорежим в который поместиться фильм. Конвертера Пока что нет :( </para> <para> Получите права <systemitem class="username">root</systemitem>. DGA требует права root для прямой записи в видеопамять. Если хотите запускать от имени обычного пользователя, установите бит SUID на <application>MPlayer</application>: <screen> chown root <replaceable>/usr/local/bin/mplayer</replaceable> chmod 750 <replaceable>/usr/local/bin/mplayer</replaceable> chmod +s <replaceable>/usr/local/bin/mplayer</replaceable> </screen> Теперь это работает и под обычным пользователем. </para> <caution> <title>Риск безопасности</title> <para> В этом заключается <emphasis role="bold">большой</emphasis> риск безопасности! <emphasis role="bold">Никогда</emphasis> не делайте этого на сервере или комппьютере, к которому имеют доступ другие люди, т.к. они могут получить права root через <application>MPlayer</application> с битом SUID. </para> </caution> <para> Теперь используйте опцию <option>-vo dga</option>, и вперед! (мы надеемся :) Можете попробовать, работает ли у вас опция <option>-vo sdl:driver=dga</option>! Это намного быстрее! </para> <formalpara id="dga-modelines"> <title>ПЕРЕКЛЮЧЕНИЕ РЕЖИМОВ</title> <para> DGA драйвер позволяет переключать режимы (менять разрешение) выходного сигнала. Это позволяет избежать (медленного) программного масштабирования и в то же время предоставить полноэкранное изображение. В идеале следует переключаться в режим с таким же (необязательно с сохранением пропорций) как у видеоданных разрешением, но X сервер позволяет переключаться в режимы, предопределенные в <filename>/etc/X11/XF86Config</filename> (<filename>/etc/X11/XF86Config-4</filename> для XFree 4.X.X соответственно). Они определяются так называемыми моделайнами[modelines] и зависят возможностей вашей видеокарты. X сервер читает этот файл при старте и отключает режимы, недопустимые для вашего оборудования. Вы можете определить какие режимы остались, посмотрев лог файл X11. Он может быть найден в: <filename>/var/log/XFree86.0.log</filename>. </para> </formalpara> <para> Вот значения, про которые известно, что они работают с чипом Riva128 при использовании X драйвера nv.o. </para> <para><programlisting> Section "Modes" Identifier "Modes[0]" Modeline "800x600" 40 800 840 968 1056 600 601 605 628 Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan EndSection </programlisting></para> <formalpara> <title>DGA & MPLAYER</title> <para> DGA используется программой <application>MPlayer</application> двумя способами: можно указать SDL использовать его (<option>-vo sdl:driver=dga</option>) и с помощью DGA драйвера (<option>-vo dga</option>). Все сказанное выше верно для обоих; в следующих разделах будет рассказано как работает DGA драйвер для <application>MPlayer</application>. </para> </formalpara> <formalpara> <title>ВОЗМОЖНОСТИ</title> <para> DGA запускается указанием <option>-vo dga</option> в командной строке. По-умолчанию, он пытается переключить режим с ближайшим к оригинальному видео разрешением. Он преднамеренно игнорирует опции <option>-vm</option> и <option>-fs</option> (переключение видеорежимов и полноэкранный режим) - он всегда старается занять как можно большую площадь экрана переключением видеорежима, избегая таким образом использования дополнительных тактов CPU для масштабирования изображения. Если выбранный режим вам не нравится, можете принудительно указать использовать разрешение ближайшее к указанному вами опциями <option>-x</option> и <option>-y</option>. При указании опции <option>-v</option>, DGA драйвер выведет, кроме множества других вещей, список всех поддерживаемых режимов, указанных в <filename>XF86Config</filename>. Имея DGA2 вы также можете указать использование определенной глубины цвета при помощи опции <option>-bpp</option>. Допустимыми значениями являются 15, 16, 24 и 32. Зависит от оборудования, какие значения поддерживаются аппаратно, а для каких необходимо производить (возможно медленное) преобразование. </para> </formalpara> <para> <!--FIXME offscreen memory --> Если вам повезло иметь достаточно свободной памяти[offscreen memory], чтобы поместить туда изображение целиком, DGA драйвер будет использовать двойную буферизацию, что приведет к более плавному воспроизведению фильма. Он сообщит вам включена ли двойная буферизация или нет. </para> <para> Двойная буферизация означает, что каждый следующий кадр вашего фильма рисуется в некоторую память[offscreen memory], пока отображается текущий кадр. Когда следующий кадр готов, графическому чипу сообщается его расположение в памяти, и чип просто выбирает оттуда данные для отображения. В это время новыми видео данными заполняется другой участок буфера. </para> <para> Двойная буферизация может быть задействована опцией <option>-double</option> и отключена при помощи <option>-nodouble</option>. В данный момент двойной буфер по-умолчанию отключен. При использовании DGA драйвера, экранное отображение (OSD) работает только с двойной буферизацией. Однако, включение двойной буферизации может привести к существенному снижению скорости (на моем K6-II+ 525 оно использует дополнительные 20% времени CPU!) в зависимости от реализации DGA для вашего оборудования. </para> <formalpara> <title>ПРОБЛЕМЫ БЫСТРОДЕЙСТВИЯ</title> <para> <!-- FIXME как-то криво звучит --> Проще говоря, DGA доступ к фреймбуферу должен быть настолько быстр, насколько быстр используемый X11 драйвер c дополнительной выгодой[benefit] получения полноэкранного изображения. Процентные значения скорости, выводимые <application>MPlayer</application>, должны интерпретироваться с некоторой осторожностью, например, с драйвером X11 они не включают время, используемое сервером X11 непосредственно для прорисовки. Подключите терминал к последовательному порту и запустите <command>top</command>, чтобы увидеть, что на самом деле происходит. </para> </formalpara> <para> Проще говоря, ускорение, полученное от использования DGA относительно 'обычного' использования X11, сильно зависит от видео карты и того, насколько хорошо оптимизирован модуль X11 для него. </para> <para> Если у вас медленная система, лучше использовать глубину 15 или 16 бит, поскольку это потребует половину пропускной способности памяти 32-х битного дисплея. </para> <para> Использование глубины 24 бита - хорошая идея, даже если ваша карта аппаратно поддерживает только 32 бита, поскольку передается на 25% меньше данных по сравнению с режимом 32/32. </para> <para> Приходилось видеть, как некоторые AVI файлы воспроизводились на Pentium MMX 266. AMD K6-2 CPU может работать начиная с 400 МГц и выше. </para> <formalpara> <title>ИЗВЕСТНЫЕ ОШИБКИ</title> <para> Ну, по мнению некоторых разработчиков XFree, DGA - это немного монстр. Они говорят, что лучше его не использовать. Его реализация не безупречна для любого существующего драйвера XFree. изъянов. </para> </formalpara> <itemizedlist> <listitem><para> С XFree 4.0.3 и <filename>nv.o</filename> существует ошибка приводящая к странным цветам. </para></listitem> <listitem><para> ATI драйвер требует неоднократного переключения режима после завершения использования DGA. </para></listitem> <listitem><para> Некоторые драйвера просто не в состоянии переключиться обратно в нормальный режим (используйте <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad +</keycap></keycombo> и <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Keypad -</keycap></keycombo> для нормального переключения). </para></listitem> <listitem><para> Некоторые драйвера просто отображают странные цвета. </para></listitem> <listitem><para> Некоторые драйвера неверно сообщают о количестве памяти, которое они отобразили в адресное пространство процесса, так что vo_dga не будет использовать двойную буферизацию (SIS?). </para></listitem> <listitem><para> Некоторые драйвера, похоже, не могут сообщить даже об одном верном режиме. В этом случае DGA рухнет, сообщая о невероятном режиме 100000x100000 или о чем-нибудь похожем. </para></listitem> <listitem><para> OSD работает только с задействованным двойным буфером (иначе он моргает). </para></listitem> </itemizedlist> </sect1> <!-- ********** --> <sect1 id="sdl"> <title>SDL</title> <para> <acronym>SDL</acronym> (Simple Directmedia Layer) - это, в основном, унифицированный видео/аудио интерфейс. Программы, его использующие, знают только про SDL, а не про то, какой видео или аудио драйвер реально используется. Например, порт игры Doom, используя SDL, может запуститься на svgalib, aalib, X, fbdev и других, вам придется только указать (для примера) используемый видеодрайвер при помощи переменной окружения <envar>SDL_VIDEODRIVER</envar>. Ну, в теории. </para> <para> <!-- FIXME is translation correct ? With <application>MPlayer</application>, we used its X11 driver's software scaler ability for cards/drivers that doesn't support XVideo, until we made our own (faster, nicer) software scaler. Also we used its aalib output, but now we have ours which is more comfortable. Its DGA mode was better than ours, until recently. Get it now? :) --> Для карт/драйверов, не поддерживающих XVideo, мы использовали в <application>MPlayer</application> собственные возможности программного масштабирования SDL'вских X11 драйверов, пока не написали наш собственный (более быстрый и изящный) программный модуль масштабирования. Также мы использовали его aalib вывод, но теперь у нас есть свой, более удобный. До некоторых пор его DGA режим был лучше нашего. Хотите получить его прямо сейчас ? :) </para> <para> Он также помогает с некоторыми сбоящими драйверами/картами, если видео прерывается (если это не проблема недостаточного быстродействия), или заикается звук. </para> <para> SDL видео вывод поддерживает отображения субтитров внизу, на черной полосе (если она есть). </para> </sect1> <!-- ********** --> <sect1 id="svgalib"> <title>SVGAlib</title> <formalpara> <title>УСТАНОВКА</title> <para> потребуется установить svgalib и ее пакет разработки, чтобы <application>MPlayer</application> собрал свой SVGAlib драйвер (определяется автоматически, но можко включить принудительно), и отредактировать <filename>/etc/vga/libvga.config</filename> в соответствии с вашией картой и монитором. </para> </formalpara> <note><para> Убедитесь, что не используете опцию <option>-fs</option>, поскольку она включает использование программного масштабирования и работает медленно. Если вам действительно это необходимо, используйте опцию <option>-sws 4</option>, которая будет давать плохое качество, но несколько быстрее. </para></note> <formalpara> <title>ПОДДЕРЖКА EGA (4BPP)</title> <para> SVGAlib включает в себя EGAlib, и <application>MPlayer</application> имеет возможность выводить любой фильм в 16-ти цветах. Используется в таких вариантах: </para> </formalpara> <itemizedlist> <listitem><para> EGA карта с EGA монитором: 320x200x4bpp, 640x200x4bpp, 640x350x4bpp </para></listitem> <listitem><para> EGA карта с CGA монитором: 320x200x4bpp, 640x200x4bpp </para></listitem> </itemizedlist> <para> Значение bpp (бит на пиксел) должно быть вручную установлено в 4: <option>-bpp 4</option> </para> <para> Возможно потребуется отмасштабировать фильм, чтобы уместить в размеры EGA режима: <screen>-vf scale=640:350</screen> or <screen>-vf scale=320:200</screen> </para> <para> Для масштабирования требуется быстрый алгоритм с плохим качеством: <screen>-sws 4</screen> </para> <para> Возможно надо отключить автоматическую коррекцию пропорций: <screen>-noaspect</screen> </para> <note><para> Как показывает мой опыт, лучшее качество на EGA экране получается при небольшом уменьшении яркости: <option>-vf eq=-20:0</option>. Мне также пришлось уменьшить частоту дискретизации [samplerate] на моей машине, поскольку звук не работал на 44kГц. <option>-srate 22050</option>. </para></note> <para> ВЫ можете включить OSD и субтитры только с плагином <option>expand</option>, смотрите страницу руководства man для точных параметров. </para> </sect1> <!-- ********** --> <sect1 id="fbdev"> <title>Вывод во фреймбуфер (FBdev)</title> <para> Надо ли собирать FBdev автоматически определяется скриптом <filename>./configure</filename>. Прочтите документацию на фреймбуйер в исходниках ядра (<filename>Documentation/fb/*</filename>) для более подробной информации. </para> <para> Если ваша карта не поддерживает стандарт VBE 2.0 (старые ISA/PCI карты, такие как S3 Trio64), а только VBE 1.2 (или еще старее?): ну, VESAfb все же будет доступна, но вам потребуется загрузить SciTech Display Doctor (она же UniVBE) до загрузки Linux. Используйте загрузочный диск DOS или что либо другое. И не забудьте зарегистрировать ваш UniVBE ;)) </para> <para> Драйвер FBdev вместе с прочими принимает несколько дополнительных параметров: </para> <variablelist> <varlistentry> <term><option>-fb</option></term> <listitem><para> указывает какой устройство фреймбуфера использовать (по-умолчанию: <filename>/dev/fb0</filename>) </para></listitem> </varlistentry> <varlistentry> <term><option>-fbmode</option></term> <listitem><para> название используемого режима (в соответствии с <filename>/etc/fb.modes</filename>) </para></listitem> </varlistentry> <varlistentry> <term><option>-fbmodeconfig</option></term> <listitem><para> конфигурационный файл с режимами (по-умолчанию: <filename>/etc/fb.modes</filename>) </para></listitem> </varlistentry> <varlistentry> <term><option>-monitor-hfreq</option></term> <term><option>-monitor-vfreq</option></term> <term><option>-monitor-dotclock</option></term> <listitem><para> <emphasis role="bold">важные</emphasis> знаячения, смотрите <filename>example.conf</filename> </para></listitem> </varlistentry> </variablelist> <para> При желании переключиться в особый режим используйте: <screen> mplayer -vm -fbmode <replaceable>название_режима</replaceable> <replaceable>имя_файла</replaceable> </screen> </para> <itemizedlist> <listitem><para> <option>-vm</option> в одиночку выберет наиболее подходящий режим из <filename>/etc/fb.modes</filename>. Также может использоваться совместно с <option>-x</option> и <option>-y</option>. Опция <option>-flip</option> поддерживается, только если формат точки фильма совпадает с форматом точки видеорежима. Обратите внимание на значение bpp, fbdev пытается использовать текущий или указанный вами опцией <option>-bpp</option>. </para></listitem> <listitem><para> Опция <option>-zoom</option> не поддерживается (используйте <option>-vf scale</option>). Вы не можете использовать режимы с 8bpp (или меньше). </para></listitem> <listitem><para> Вы, возможно, захотите отключить курсор: <screen>echo -e '\033[?25l'</screen> или <screen>setterm -cursor off</screen> и хранитель экрана: <screen>setterm -blank 0</screen> Чтобы снова включить курсор: <screen>echo -e '\033[?25h'</screen> или <screen>setterm -cursor on</screen> </para></listitem> </itemizedlist> <note><para> Смена режимов FBdev <emphasis>не работает</emphasis> с VESA фреймбуфером. Не просите об этом, т.к. это не ограничения <application>MPlayer</application>. </para></note> </sect1> <!-- ********** --> <sect1 id="mga_vid"> <title>Matrox фреймбуфер (mga_vid)</title> <para> <systemitem>mga_vid</systemitem> - это комбинация драйвера вывода и модуля ядра Linux, использующая модуль видео масштабирования/оверлея Matrox G200/G400/G450/G550 для выполнения YUV->RGB преобразования цветового пространства и произвольного масштабирования. <systemitem>mga_vid</systemitem> имеет аппаратную поддержку VSYNC с тройной буферизацией. Работает как во фреймбуфер консоли, так и под X, но только с Linux 2.4.x. </para> <para> Версию этого драйверя для Linux 2.6.x ищите на <ulink url="http://attila.kinali.ch/mga/"/>. </para> <procedure> <title>Установка:</title> <step><para> чтобы использовать его, придется, во-первых, скомпилировать <filename>mga_vid.o</filename>: <screen> cd drivers make<!-- --></screen> </para></step> <step><para> Затем запустите (под <systemitem class="username">root</systemitem>) <screen>make install</screen> что должно установить модуль и создать для Вас файл устройства. Загрузите драйвер: <screen>insmod mga_vid.o</screen> </para></step> <step><para> Вам следует проверить определение размера памяти, используя команду <command>dmesg</command>. Если он неверен, укажите опцию <option>mga_ram_size</option> (но сначала <command>rmmod mga_vid</command>), указав размер памяти в Мб: <screen>insmod mga_vid.o mga_ram_size=16</screen> </para></step> <step><para> чтобы в случае необходимости загружать его автоматической, сначала добавьте следующую строку в конец файла <filename>/etc/modules.conf</filename>: <programlisting>alias char-major-178 mga_vid</programlisting> </para></step> <step><para> Теперь надо (пере)скомпилировать <application>MPlayer</application>, <command>./configure</command> определит <filename>/dev/mga_vid</filename> и соберет драйвер 'mga'. Использование его в <application>MPlayer</application> осуществляется опцией <option>-vo mga</option>, если используете консоль matroxfb, или опцией <option>-vo xmga</option> из-под XFree86 3.x.x или 4.x.x. </para></step> </procedure> <para> Драйвер mga_vid работает совместно с Xv. </para> <para> Из файла устройства <filename>/dev/mga_vid</filename> можно получать некоторую информацию, например, командой <screen>cat /dev/mga_vid</screen> В него можно писать для изменения яркости: <screen>echo "brightness=120" > /dev/mga_vid</screen> </para> <para> В том же каталоге есть тестовая программа, называющаяся <command>mga_vid_test</command>. Если все работает нормально, она должна рисовать на экране изображения 256x256. </para> </sect1> <!-- ********** --> <sect1 id="tdfxfb" xreflabel="3Dfx YUV support (tdfxfb)"> <title>Поддержка 3Dfx YUV</title> <para> Этот драйвер использует ядерный драйвер фреймбуфера tdfx для воспроизведения фильмой с YUV ускорением. Вам потребуется ядро с поддержкой tdfxfb и перекомпиляция с <screen>./configure --enable-tdfxfb</screen> </para> </sect1> <!-- ********** --> <sect1 id="tdfx_vid"> <title>tdfx_vid</title> <para> Это комбинация модуля Linux ядра и драйвера вывода видео, аналогичный <link linkend="mga_vid">mga_vid</link>. Вам потребуется 2.4.x ядро с драйвером <systemitem>agpgart</systemitem>, поскольку <systemitem>tdfx_vid</systemitem> использует AGP. Укажите <command>configure</command> опцию <option>--enable-tdfxfb</option> для сборки драйвера вывода видео и соберите модуль ядра, как указано далее. </para> <procedure> <title>Установка tdfx_vid.o модуля ядра:</title> <step><para> Скомпилируйте <filename>tdfx_vid.o</filename> <screen> cd drivers make</screen> </para></step> <step><para> Запустите (от <systemitem class="username">root</systemitem>): <screen>make install</screen> что должно установить модуль и создать для Вас файл устройства. Загрузите драйвер: <screen>insmod tdfx_vid.o</screen> </para></step> <step><para> Чтобы сделать его загружающимся/выгружающимся автоматически, сначала вставьте следующую строку в конец <filename>/etc/modules.conf</filename>: <programlisting>alias char-major-178 tdfx_vid</programlisting> </para></step> </procedure> <para> В том же каталоге есть тестовая программа, называющаяся <command>tdfx_vid_test</command>. Она должна вывести некоторую полезную информацию, если все работает нормально. </para> </sect1> <!-- ********** --> <sect1 id="opengl"> <title>OpenGL вывод</title> <para> <application>MPlayer</application> поддерживает воспроизведение фильмов через OpenGL, но если ваша платформа/драйвер поддерживает xv, как в случае PC с Linux, лучше используйте xv, производительность OpenGL значительно ниже. Если у вас реализация X11 без поддержки xv, OpenGL жизнеспособная замена. </para> <para> К сожалению, не все драйвера поддерживают эту возможность. Драйвера Utah-GLX (для XFree86 3.3.6) имеют ее для всех карт. Подробности установки смотрите <ulink url="http://utah-glx.sf.net"/>. </para> <para> XFree86(DRI) 4.0.3 или новее поддерживает OpenGL с картами Matrox и Radeon, 4.2.0 или более поздние поддерживают и Rage128. Инструкции по закачиванию и установке смотрите на <ulink url="http://dri.sf.net"/> . </para> <para> Подсказка от одного из наших пользователей: видео вывод GL может использоваться для получения синхронизированного по вертикали TV вывода. Необходимо установить переменную окружения (как минимум для nVidia): </para> <para> <command>export __GL_SYNC_TO_VBLANK=1</command> </para> </sect1> <!-- ********** --> <sect1 id="aalib"> <title>AAlib - отображение в текстовом режиме</title> <para> AAlib - это библиотека для отображения графики в текстовом режиме, используя мощный ASCII рендерер[renderer]. Существует <emphasis>множество</emphasis> программ уже поддерживающих ее, такие как Doom, Quake, и т.д. <application>MPlayer</application> содержит очень удобный драйвер для нее. Если <filename>./configure</filename> обнаруживает установленную aalib, будет собран libvo драйвер для aalib. </para> <para> В AA Window можно использовать некоторые клавиши для изменения настроек рендеринга: </para> <informaltable> <tgroup cols="2"> <thead> <row><entry>Клавиша</entry><entry>Действие</entry></row> </thead> <tbody> <row><entry><keycap>1</keycap></entry><entry> уменьшить контрастность </entry></row> <row><entry><keycap>2</keycap></entry><entry> увеличить контрастность </entry></row> <row><entry><keycap>3</keycap></entry><entry> уменьшить яркость </entry></row> <row><entry><keycap>4</keycap></entry><entry> увеличить яркость </entry></row> <row><entry><keycap>5</keycap></entry><entry> включение/отключение быстрого рендеринга </entry></row> <row><entry><keycap>6</keycap></entry><entry> установка режима зашумления[dithering] (отсутствие, распределение ошибки[error distribution], Floyd Steinberg) </entry></row> <row><entry><keycap>7</keycap></entry><entry> инвертировать изображение </entry></row> <row><entry><keycap>8</keycap></entry><entry> переключение между управлением aa и <application>MPlayer</application> </entry></row> </tbody> </tgroup> </informaltable> <variablelist> <title>Могут быть использованы следующие опции командной строки:</title> <varlistentry> <term><option>-aaosdcolor=<replaceable>V</replaceable></option></term> <listitem><para> Смена цвета OSD </para></listitem> </varlistentry> <varlistentry> <term><option>-aasubcolor=<replaceable>V</replaceable></option></term> <listitem><para> Смена цвета субтитров </para><para> где <replaceable>V</replaceable> может быть: <literal>0</literal> (нормальный), <literal>1</literal> (темный), <literal>2</literal> (жирный), <literal>3</literal> (жирный шрифт), <literal>4</literal> (реверсный[reverse]), <literal>5</literal> (специальный). </para></listitem> </varlistentry> </variablelist> <variablelist> <title>AAlib сама предоставляет большое количество опций. Вот некоторые из важных::</title> <varlistentry> <term><option>-aadriver</option></term> <listitem><para> Установить рекомендуемый aa драйвер (X11, curses, Linux). </para></listitem> </varlistentry> <varlistentry> <term><option>-aaextended</option></term> <listitem><para> Использовать все 256 символов. </para></listitem> </varlistentry> <varlistentry> <term><option>-aaeight</option></term> <listitem><para> Использовать восьмибитную ASCII. </para></listitem> </varlistentry> <varlistentry> <term><option>-aahelp</option></term> <listitem><para> Выводит все опции aalib. </para></listitem> </varlistentry> </variablelist> <note><para> Рандеринг очень сильно загружает CPU, особенно при использовании AA-on-X (использование aalib под X), и меньше при использовании стандартной не-фреймбуфер консоли. Используйте SVGATextMode, чтобы настроить большой текстовый режим и наслаждайтесь! (второй выход карт Hercules рулит[secondary head Hercules cards rock] :) ), но, IMHO, вы можете использовать опцию <option>-vf 1bpp</option>, чтобы получить графику на hgafb :) </para></note> <para> Используйте опцию <option>-framedrop</option>, если ваш компьютер недостаточно быстр для отрисовки всех кадров! </para> <para> При воспроизведении на терминале, вы получите лучшую скорость и качество при использовании драйвера Linux, а не curses(<option>-aadriver linux</option>). Но при этом вы долны иметь право записи в <filename>/dev/vcsa<replaceable><терминал></replaceable></filename>! Это не определяется aalib автоматически, но vo_aa вместо нее пытается определить лучший режим. Смотрите <ulink url="http://aa-project.sf.net/tune"/> для дальнейших задач тюнинга. </para> </sect1> <!-- ********** --> <sect1 id="caca"> <title> <systemitem class="library">libcaca</systemitem> - Цветная ASCII Art библиотека </title> <para> Библиотека <ulink url="http://sam.zoy.org/projects/libcaca/"><systemitem class="library">libcaca</systemitem></ulink> - это графическая библиотека, выводящая чекст вместо пикселов, так что она может работать на старых видео картах или текстовых терминалах. Она не такая, как знаменитая <systemitem class="library">AAlib</systemitem>. <systemitem class="library">libcaca</systemitem> требует терминал для своей работы, так что она будет работать на всех unix системах (включая Max OS X), используя библиотеку <systemitem class="library">slang</systemitem> или <systemitem class="library">ncurses</systemitem>, под DOS используя библиотеку <systemitem class="library">conio.h</systemitem>, и под windows, используя либо <systemitem class="library">slang</systemitem>, либо <systemitem class="library">ncurses</systemitem> (через Cygwin эмуляцию), либо <systemitem class="library">conio.h</systemitem>. Если скрипт <filename>./configure</filename> определяет <systemitem class="library">libcaca</systemitem>, то caca libvo драйвер будет собран. </para> <itemizedlist> <title>Отличия от <systemitem class="library">AAlib</systemitem> следующие:</title> <listitem><para> 16 доступных цветов для вывода символов (256 цветовых пар) </para></listitem> <listitem><para> зашумление[dithering] цветного изображения </para></listitem> </itemizedlist> <itemizedlist> <title>Но <systemitem class="library">libcaca</systemitem> также имеет следующие ограничения:</title> <listitem><para> нет поддержки яркости, контрастности, гаммы </para></listitem> </itemizedlist> <para> ВЫ можете использовать следующие клавиши в окне caca для изменения опций рендеринга: </para> <informaltable> <tgroup cols="2"> <thead> <row><entry>Клавиша</entry><entry>Действие</entry></row> </thead> <tbody> <row><entry><keycap>d</keycap></entry><entry> Перключение методов зашумления[dithering] <systemitem class="library">libcaca</systemitem>. </entry></row> <row><entry><keycap>a</keycap></entry><entry> Перекллючение сглаживания[antialiasing] <systemitem class="library">libcaca</systemitem>. </entry></row> <row><entry><keycap>b</keycap></entry><entry> Переключение фона <systemitem class="library">libcaca</systemitem>. </entry></row> </tbody> </tgroup> </informaltable> <variablelist> <title><systemitem class="library">libcaca</systemitem> также анализирует следующие переменные окружения:</title> <varlistentry> <term><option>CACA_DRIVER</option></term> <listitem><para> Установить рекомендуемый caca драйвер, например ncurses, slang, x11. </para></listitem> </varlistentry> <varlistentry> <term><option>CACA_GEOMETRY (только X11)</option></term> <listitem><para> Указывает количество строк и столбцов, например, 128x50. </para></listitem> </varlistentry> <varlistentry> <term><option>CACA_FONT (только X11)</option></term> <listitem><para> Указывает используемый шрифт, например, fixed, nexus. </para></listitem> </varlistentry> </variablelist> <para> Используйте опцию <option>-framedrop</option>, если ваш компьютер недостаточно быстр для рендеринга всех кадров. </para> </sect1> <!-- ********** --> <sect1 id="vesa"> <title>VESA - вывод в VESA BIOS</title> <para> Этот драйвер был разработатн и представлен как <emphasis role="bold">универсальный драйвер</emphasis> для любых карт с VESA VBE 2.0 совместимым BIOS. Другое преимущество этого драйвера заключается в том ,что он пытается принудительно включить TV вывод. <citetitle>VESA BIOS EXTENSION (VBE) Версия 3.0 Дата: 16 сентября, 1998</citetitle> (Страница 70) гласит: </para> <blockquote> <formalpara><title>Dual-Controller Designs</title> <para> VBE 3.0 поддерживает дизайн с двумя контроллерами, предполагая, что поскольку оба контроллера обычно имеют одного производителя, и управляются единственной BIOS ROM на той же карте, то возможно скрыть от приложения факт наличия на самом деле двух контроллеров. Это ограничивает их независимое одновременное использование, но позволяет приложениям, выпущенным до VBE 3.0 нормально работать. VBE функция 00h (Вернуть информацию о контроллере) возвращает комбинированную информацию двух контроллеров, включая объединенный список доступных режимов. Когда приложение выбирает режим, активируется соответствующий контроллер. Каждая из остальных VBE функций затем работает с активным контроллером. </para> </formalpara> </blockquote> <para> Так что у вас ест шанс получить работающий TV выход, используя этот драйвер. (Предполагается, что TV-выход - отдельный контроллер[standalone head] или отдельный выход как минимум.) </para> <itemizedlist spacing="compact"> <title>ПРЕИМУЩЕСТВА</title> <listitem><para> У вас есть шанс смотреть фильмы, <emphasis role="bold">даже если Linux не знает</emphasis> ваше видео оборудование. </para></listitem> <listitem><para> Вам не требуется устанавливать в Linux ничего, относящегося к графике (вроде X11 (он же XFree86), fbdev и т.п.). Этот драйвер может запускаться из <emphasis role="bold">текстового режима</emphasis>. </para></listitem> <listitem><para> У вас есть шанс получить <emphasis role="bold">работающий TV-выход</emphasis>. (Это известно как минимум для ATI карт). </para></listitem> <listitem><para> Этот драйвер вызывает обработчик <function>int 10h</function>, так что это не эмуляция - он вызывает <emphasis role="bold">реальные</emphasis> вещи <emphasis>реального</emphasis> BIOS в <emphasis>реальном режиме</emphasis> (на самом деле vm86 режим). </para></listitem> <listitem><para> С ним вы можете использовать VIDIX, получая ускоренное отображение видео, <emphasis role="bold">и</emphasis> TV вывод одновременно! (Рекомендуется для ATI карт.) </para></listitem> <listitem><para> Если у вас есть VESA VBE 3.0+, и вы где-то указали <option>monitor-hfreq, monitor-vfreq, monitor-dotclock</option> (в файле конфигурации или в командной строке), то получите наибольшую возможную частоту обновления. (Используя General Timing Formula). Чтобы задействовать эту возможность, вы должны указать <emphasis role="bold">все</emphasis> опции вашего монитора. </para></listitem> </itemizedlist> <itemizedlist spacing="compact"> <title>НЕДОСТАТКИ</title> <listitem><para> Это работает только на <emphasis role="bold">x86 системах</emphasis>. </para></listitem> <listitem><para> Может использоваться только пользователем <systemitem class="username">root</systemitem>. </para></listitem> <listitem><para> В данный момент доступно только для <emphasis role="bold">Linux</emphasis>. </para></listitem> </itemizedlist> <important><para> Не используйте этот драйвер с <emphasis role="bold">GCC 2.96</emphasis>! Он не будет работать! </para></important> <variablelist> <title>ОПЦИИ КОМАНДНОЙ СТРОКИ, ДОСТУПНЫЕ ДЛЯ VESA</title> <varlistentry> <term><option>-vo vesa:<replaceable>опции</replaceable></option></term> <listitem><para> данный момент распознаются: <literal>dga</literal> для включения режима dga и <literal>nodga</literal> для его отключения. В dga режиме вы можете включить двойную буферизацию опцией <option>-double</option>. Замечание: вы можете опустить эти параметры для <emphasis role="bold">автоопределения</emphasis> режима dga. </para></listitem> </varlistentry> </variablelist> <itemizedlist spacing="compact"> <title>ИЗВЕСТНЫЕ ПРОБЛЕМЫ И СПОСОБЫ ИХ РЕШЕНИЯ</title> <listitem><para> Если вы установили <emphasis role="bold">NLS</emphasis> шрифт на вашем Linux и запускаете VESA драйвер из текстового режима, то после завершения <application>MPlayer</application> у вас окажется загруженным <emphasis role="bold">ROM шрифт</emphasis> вместо национального. Вы можете загрузить национальный шрифт снова, воспользовавшись утилитой <command>setsysfont</command> из дистрибутива Mandrake/Mandriva, например. (<emphasis role="bold">Подсказка</emphasis>: Та же утилита используется для локализации fbdev). </para></listitem> <listitem><para> Некоторые <emphasis role="bold">графические драйверы Linux</emphasis> не обновляют активный <emphasis role="bold">BIOS режим</emphasis> в DOS памяти. Таким образом, если у вас подобная проблема - всегда используете VESA драйвер только из <emphasis role="bold">текстового режима</emphasis>. Иначе в любом случае будет активирован текстовый режим (#03) и вам придется перезагружать компьютер.. </para></listitem> <listitem><para> Часто после завершения работы VESA драйвера вы получаете <emphasis role="bold">черный</emphasis> экран. Чтобы вернуться в обычный режим просто переключитесь на другую консоль (нажав <keycombo><keycap>Alt</keycap><keycap>F<x></keycap></keycombo>) затем переключитесь обратно тем же способом. </para></listitem> <listitem><para> Для получения <emphasis role="bold">работающего TV выхода</emphasis> необходимо, чтобы TV разъем был подключен до включения вашего PC, т.к. видео BIOS инициализирует себя только один раз во время POST процедуры. </para></listitem> </itemizedlist> </sect1> <!-- ********** --> <sect1 id="x11"> <title>X11</title> <para> Избегайте, если возможно. Вывод в X11 (используя расширение разделяемой памяти) - без какого-либо ускорения.Поддерживается (MMX/3DNow/SSE ускоренное, но все равно медленное) программное масштабирование, используйте опции <option>-fs -zoom</option>. Большинство карт имеют поддержку масштабирования, для этого используйте вывод <option>-vo xv</option>, или <option>-vo xmga</option> для карт Matrox. </para> <para> Проблема в том, что большинство драйверов карт не поддерживают аппаратное ускорение на втором мониторе/TV. В этом случае вы увидите окно зеленого/синего цвета вместо изображения, и этот драйвер будет полезным, но требуется мощный CPU для программного масштабирования. Не используйте программный вывод+масштабирование SDL драйвера, он имеет худшее качество картинки! </para> <para> Программное масштабирование очень медленное, лучше попробуйте вместо этого изменить видео режим. Это очень просто. Смотрите <link linkend="dga-modelines">раздел DGA режимы</link> и вставьте соответствующие строки в ваш <filename>XF86Config</filename>. <itemizedlist spacing="compact"> <listitem><para> Если у вас XFree86 4.x.x: используйте <option>-vm</option> опцию. Она переключится в режим с подходящим разрешением. Если нет: </para></listitem> <listitem><para> C XFree86 3.x.x: циклически переключайтесь между разными разрешениями с помощью клавиш <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Доп. клавиша плюс</keycap></keycombo> и <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>Доп. клавиша минус</keycap></keycombo>. </para></listitem> </itemizedlist> </para> <para> Если не находите вставленные видео режимамы, просмотрите вывод Xfree86. Некоторые драйверы не могут использовать низкие частоты пикселизации (количество отрисовываемых пикселей в секунду), необходимые для видео режимов с низким разрешением. </para> </sect1> <!-- ********** --> <sect1 id="vidix"> <title>VIDIX</title> <formalpara><title>ПРЕАМБУЛА</title><para> <acronym>VIDIX</acronym> - это аббревиатура для <emphasis role="bold">VID</emphasis>eo <emphasis role="bold">I</emphasis>nterface for *ni<emphasis role="bold">X</emphasis> (Видео интерфейс для Unix). VIDIX разработан и введен как интерфейс для быстрых драйверов пространства пользователя[user-space], обеспечивающих такую же производительность, как mga_vid для карт Matrox. Они к тому же хорошо переносимы. </para> </formalpara> <para> Этот интерфейс был разработан, чтобы уместить существующие интерфейсы ускорения видео (известные как mga_vid, rage128_vid, radeon_vid, pm3_vid) в единую схему. Он предоставляет высокоуровневый интерфейс к чипам, известным как BES (BackEnd scalers) или OV (Video Overlays). Он не предоставляет низкоуровневого интерфейса к вещам, известным как графические серверы (Я не хочу соревноваться с командой X11 в переключении режимов.) Т.е. основная цель интерфейса - ускорить до максимума скорость воспроизведения видео. </para> <itemizedlist spacing="compact"> <title>ИСПОЛЬЗОВАНИЕ</title> <listitem><para> Вы можете использовать отдельный видеодрайвер: <option>-vo xvidix</option>. Этот драйвер был разработан как X11 фронтенд к VIDIX технологии. Он требует X сервер и может работать только под ним. Имейте ввиду, что поскольку этот драйвер напрямую обращается к оборудованию в обход драйвера X, то могут быть повреждены растровые изображения, кешированные в памяти видеокарты. Вы можете предотвратить это, ограничив размер видеопамяти, используемой X, XF86Config опцией "VideoRam" в разделе устройств. Вам следует установить этот параметр в количество установленной видеопамяти минус 4Мб. Если у вас меньше 8Мб видеопамяти, вместо этого можно использовать опцию "XaaNoPixmapCache" в разделе экранов. </para></listitem> <listitem> <para> Существует консольный VIDIX драйвер: <option>-vo cvidix</option>. Для большинства карт требуется работающий и инициализированный фреймбуфер (в противном случае просто испортите изображение на экране), и вы будете иметь тот же эффект, что и с <option>-vo mga</option> или <option>-vo fbdev</option>. Карты nVidia, тем не менее, способны выводить полностью графическое видео в настоящей текстовой консоли. Смотрите раздел <link linkend="vidix-nvidia">nvidia_vid</link> для более подробной информации. Чтобы избавиться от такста на полях и мерцающего курсора попробуйте нечто подобное </para> <screen>setterm -cursor off > /dev/tty9</screen> <para> (предполагая, что <systemitem>tty9</systemitem> ранее не использовался) и затем переключитесь на <systemitem>tty9</systemitem>. С другой стороны, <option>-colorkey 0</option> должна дать вам видео, работающее "на фоне", однако правильность работы этого зависит от функцинальности colorkey. </para> </listitem> <listitem><para> Вы можете использовать подустройство VIDIX, примененное к различным драйверам видео вывода, например: <option>-vo vesa:vidix</option> (<emphasis role="bold">только Linux</emphasis>) и <option>-vo fbdev:vidix</option>. </para></listitem> </itemizedlist> <para> Это действительно неважно, какой драйвер вывода видео используется с <emphasis role="bold">VIDIX</emphasis>. </para> <itemizedlist spacing="compact"> <title>ТРЕБОВАНИЯ</title> <listitem><para> Видеокарта должна находиться в графическом режиме (кроме карт nVidia с драйвером <option>-vo cvidix</option>). </para></listitem> <listitem><para> Драйвер вывода видео <application>MPlayer</application> должен знать текущий видеорежим и быть способным сообщить VIDIX некоторые видео характеристики сервера. </para></listitem> </itemizedlist> <formalpara><title>СПОСОБЫ ИСПОЛЬЗОВАНИЯ</title><para> Когда VIDIX используется в качестве <emphasis role="bold">подустройства</emphasis> (<option>-vo vesa:vidix</option>), настройка видеорежима производится драйвером вывода видео (короче говоря <emphasis role="bold">vo_server</emphasis>). Следовательно, вы можете передать в командную строку <application>MPlayer</application> те же ключи, что и для vo_server. Дополнительно он понимает ключ <option>-double</option> как глобально видимый параметр. (Я рекомендую использовать этот ключ с VIDIX как минимум для карт ATI). <option>-vo xvidix</option> дополнительно понимает следующие опции: <option>-fs -zoom -x -y -double</option>. </para> </formalpara> <para> Вы можете напрямую указать VIDIX драйвер третьим параметром к командной строке: <screen> mplayer -vo xvidix:mga_vid.so -fs -zoom -double <replaceable>file.avi</replaceable> </screen> или <screen> mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp 32 <replaceable>file.avi</replaceable> </screen> Но это опасно, и вам не следует этого делать. В этом случае принудительно запускается указанный драйвер и результат может быть непредсказуемым (он может <emphasis role="bold">подвесить</emphasis> ваш компьютер). Вам следует это делать ТОЛЬКО если вы абсолютно уверены, что он работает и <application>MPlayer</application> не использует его автоматически. Пожалуйста, сообщите об этом разработчикам. Правильный путь - использование VIDIX без аргументов для задействования автоопределения драйвера. </para> <para> Поскольку VIDIX требует прямой доступ к оборудованию, вы можете либо запускать его от имени root, либо установить SUID бит на исполняемый файл <application>MPlayer</application> ((<emphasis role="bold">Внимание: Это большой риск безопасности</emphasis>). Как вариант, вы можете использовать специальный модуль ядра, как этот: </para> <procedure> <step><para> <!-- FIXME correct translation of 'development version' --> Скачайте <ulink url="http://www.arava.co.il/matan/svgalib/">разрабатываемую версию</ulink> svgalib (например 1.9.17), <emphasis role="bold">ИЛИ</emphasis> версию, созданную Alex специально для использования с <application>MPlayer</application> (она не требует наличия исходников svgalib для компиляции) <ulink url="http://www.mplayerhq.hu/MPlayer/contrib/svgalib/svgalib_helper-1.9.17-mplayer.tar.bz2">отсюда</ulink>. </para></step> <step><para> Скомпилируйте модуль в каталоге <filename class="directory">svgalib_helper</filename> (он может быть найден внутри каталога <filename class="directory">svgalib-1.9.17/kernel/</filename>, если вы скачали исходники с сайта svgalib) и выполните insmod для него. </para></step> <step><para> Для создания необходимых устройств в каталоге <filename class="directory">/dev</filename>, выполните от имени root команду <screen>make device</screen> в <filename class="directory">svgalib_helper</filename>. </para></step> <step><para> Переместите каталог <filename class="directory">svgalib_helper</filename> в подкаталог <filename class="directory">vidix</filename> дерева исходных текстов <application>MPlayer</application>. </para></step> <step><para> Удалите комментарий перед строкой CFLAGS, содержащий строку "svgalib_helper" в файле <filename class="directory">vidix/Makefile</filename>. </para></step> <step><para> Перекомпилируйте. </para></step> </procedure> <sect2 id="vidix-ati"> <title>ATI карты</title> <para> В даный момент для большинства карт ATI, начиная от Mach64 и заканчивая последними Radeon, имеется встроенная поддержка. </para> <para> Существует два скомпилрованных бинарных файла: <filename>radeon_vid</filename> для Radeon и <filename>rage128_vid</filename> для карт Rage 128. Вы можете принудительно использовать один из них или позволить VIDIX автоматически опробовать все доступные драйверы. </para> </sect2> <sect2 id="vidix-mga"> <title>Matrox карты</title> <para> Сообщалось, что работают Matrox G200, G400, G450 и G550. </para> <para> <!-- FIXME what is 'video equalizers ' ? --> Драйвер поддерживает видео эквалайзеры и должем быть столь же быстр, как и <link linkend="mga_vid">Matrox фреймбуфер</link> </para> </sect2> <sect2 id="vidix-trident"> <title>Trident карты</title> <para> Существует драйвер для чипсета Trident Cyberblade/i1, который можно найти на материнских платах VIA Epia. </para> <para> Драйвер написан и поддерживается <ulink url="http://www.blackfiveservices.co.uk/EPIAVidix.shtml">Alastair M. Robinson</ulink>. </para> </sect2> <sect2 id="vidix-3dlabs"> <title>3DLabs карты</title> <para> Хотя драйвер для чипов 3DLabs GLINT R3 и Permedia3 существует, никто его не тестировал, так что отчеты приветствуются. </para> </sect2> <sect2 id="vidix-nvidia"> <title>nVidia карты</title> <para> Уникальная особенность драйвера nvidia_vid заключается в способности отображать видео в <emphasis role="bold">простой, чисто текстовой консоли</emphasis> - без какого бы то ни было фреймбуфера или магии с X. Для этой цели мы будем использовать драйвер вывода видео <option>cvidix</option>, как показывет следующий пример: <screen>mplayer -vo cvidix <replaceable>example.avi</replaceable></screen> </para> </sect2> <sect2 id="vidix-sis"> <title>SiS карты</title> <para> Это, как и nvidia_vid, весьма экспериментальный код. </para> <para> Он тестировался на SiS 650/651/740 (наиболее распространный чипсет, используемый в SiS версиях байрбонов[barebones] "Shuttle XPC") </para> <para> Отчеты ожидаются! </para> </sect2> </sect1> <!-- ********** --> <sect1 id="directfb"> <title>DirectFB</title> <blockquote><para> "DirectFB - это графическая библиотека, которая была разработана с учетом особенностей встроенных систем. Она предоставляет максимум производительности при минимуме используемых ресурсов и накладных расходов." - процитировано с <ulink url="http://www.directfb.org"/> </para></blockquote> <para>Я исключу описание возможностей DirectFB из этого раздела.</para> <para> Несмотря на то, что <application>MPlayer</application> не поддерживается в DirectFB как "video провайдер", этот драйвер вывода видео задействует воспроизведение видео через DirectFB. Он будет - конечно - работать с ускорением, на моей Matrox G400 скорость DirectFB такая же как у XVideo. </para> <para> Всегда старайтесь использовать последнюю версию DirectFB. Вы можете использовать опции DirectFB в командной строке, при помощи <option>-dfbopts</option>. Выбор слоя производится методом подустройства, например.: <option>-vo directfb:2</option> (по-умолчанию -1: автоопределение) </para> </sect1> <!-- ********** --> <sect1 id="dfbmga"> <title>DirectFB/Matrox (dfbmga)</title> <para> Прочтите <link linkend="directfb">основной DirectFB</link> раздел для общей информации. </para> <para> Этот драйвер вывода видео задействует CRTC2 (на втором мониторе[second head]) на картах Matrox G400/G450/G550, отображающий видео <emphasis role="bold">независимо</emphasis> от первого монитора[first head]. </para> <para> Ville Syrjala имеет <ulink url="http://www.sci.fi/~syrjala/directfb/Matrox_TV-out_README.txt">README</ulink> и <ulink url="http://www.sci.fi/~syrjala/directfb/matrox-tv-out-howto">HOWTO</ulink> на своей странице, описывающие как задействовать вывод DirectFB TV на картах Matrox. </para> <note><para> Первая версия DirectFB, на которой удалось это сделать, была 0.9.17 (имеющая ошибки, требует <systemitem>surfacemanager</systemitem> патч с указанного выше URL). Портирование кода CRTC2 в <link linkend="mga_vid">mga_vid</link> планируется уже несколько лет, <ulink url="../../tech/patches.txt">патчи</ulink> приветствуются. </para></note> </sect1> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="mpeg_decoders"> <title>MPEG декодеры</title> <sect2 id="dvb"> <title>DVB ввод и вывод</title> <para> <application>MPlayer</application> поддерживает карты с чипсетом Siemens DVB и таких производителей, как Siemens, Technotrend, Galaxis или Hauppauge. Последние DVB драйверы доступны с <ulink url="http://www.linuxtv.org">сайта Linux TV</ulink>. Если вы собираетесь делать программное транскодирование, у вас должен быть как минимум 1ГГц CPU. </para> <para> Скрипт configure должен определить вашу DVB карту. Если нет, принудительно укажите определение с помошью <screen>./configure --enable-dvb</screen> Если заголовочные файлы ost находятся не в стандартных каталогах, укажите путь с <screen> ./configure --with-extraincdir=<replaceable>каталог исходников DVB</replaceable>/ost/include </screen> Затем компилируйте и устанавливайте как обычно. </para> <formalpara> <title>ИСПОЛЬЗОВАНИЕ</title> <para> Аппаратное декодирование потоков, содержащих MPEG-1/2 видео и/или MPEG аудио, может быть выполнено следующей командой: <screen>mplayer -ao mpegpes -vo mpegpes <replaceable>file.mpg|vob</replaceable></screen> </para> </formalpara> <para> Декодирование любых других видео потоков требует транскодирования в MPEG-1, поэтому оно медленно и, возможно, не стоит неприятностей, особенно если ваш компьютер медленный. Его можно добиться, используя команду: <screen> mplayer -ao mpegpes -vo mpegpes <replaceable>yourfile.ext</replaceable> mplayer -ao mpegpes -vo mpegpes -vf expand <replaceable>yourfile.ext</replaceable> </screen></para> <para> Имейте в виду, что DVB карты поддерживают высоту изображения только 288 и 576 для PAL и 240 и 480 для NTSC. Для других значений высоты вы <emphasis role="bold">должны</emphasis> отмасштабировать изображение, добавив <option>scale=ширина:высота</option> к опции <option>-vf</option> с желаемыми значениями ширины и высоты. DVB карты допускают различные значения ширины: 720, 704, 640, 512, 480, 352 и т.д. и производят аппаратное масштабирование по горизонтали, так что в большинстве случаев масштабировать по горизонтали не нужно. Для 512x384 (пропорции 4:3) MPEG-4 (DivX) попробуйте: </para> <para>Если у вас есть широкоформатный фильм и вы не хотите растягивать его на полную высоту, используйте плагин <option>expand=w:h</option> для добавления черных полос. Чтобы посмотреть 640x384 MPEG-4 (DivX), попробуйте: <screen> mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 <replaceable>file.avi</replaceable> </screen> </para> <para> Если ваш CPU слишком слаб для полноразмерного 720x576 MPEG-4 (DivX), попробуйте уменьшить размер: <screen>mplayer -ao mpegpes -vo mpegpes -vf scale=352:576 <replaceable>file.avi</replaceable> </screen> </para> <para>Если скорость не увеличилась, попробуйте уменьшить размер по вертикали тоже: <screen> mplayer -ao mpegpes -vo mpegpes -vf scale=352:288 <replaceable>file.avi</replaceable> </screen> </para> <para> Для OSD и субтитров используйте возможности OSD плагина expand. Так, вместо <option>expand=w:h</option> или <option>expand=w:h:x:y</option>, используйте <option>expand=w:h:x:y:1</option> (5-й параметр <option>:1</option> в конце для включения OSD рендеринга). Вы можете слегка подвинуть изображение вверх, чтобы получить большую черную область для субтитров. Вы также можете переместить субтитры вверх, если они выходят за пределы TV экрана, используйте для этого <option>-subpos <0-100></option> (<option>-subpos 80</option> - хороший выбор). </para> <para> Чтобы воспроизвести не-25fps фильмы на PAL TV или на машине со слабым CPU, добавьте опцию <option>-framedrop</option>. </para> <para> Для сохранения пропорций MPEG-4 (DivX) файлов и получения оптимальных параметров масштабирования (аппаратное горизонтальное и программное вертикальное масштабирование с сохранением пропорций), используйте плагин dvbscale: <screen> for a 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 for a 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1 </screen> </para> <formalpara><title>Цифровое TV (DVB драйвер ввода )</title> <para>Вы можете использовать DVB карту для просмотра Цифрового TV.</para> </formalpara> <para> Вы должны иметь установленные программы <command>scan</command> и <command>szap/tzap/czap/azap</command>; все они входят в пакет драйверов. </para> <para> Проверьте, что ваши драйверы правильно работают с такими программами, как <ulink url="http://sf.net/projects/dvbtools/"><command>dvbstream</command></ulink> (это основа DVB драйвера ввода). </para> <para> Теперь вам следует создать файл <filename>~/.mplayer/channels.conf</filename>, с понятным <command>szap/tzap/czap/azap</command> синтаксисом, или позволить <command>scan</command> сделать это для вас. </para> <para> Если у вас несколько разнотипных карт (например, для спутникового TV, наземного , кабельного и ATSC), можете сохранить файлы как <filename>~/.mplayer/channels.conf.sat</filename>, <filename>~/.mplayer/channels.conf.ter</filename>, <filename>~/.mplayer/channels.conf.cbl</filename>, и <filename>~/.mplayer/channels.conf.atsc</filename>, соответственно, с тем, чтобы можно было явно указать <application>MPlayer</application> какой файл использовать вместо стандартного <filename>~/.mplayer/channels.conf</filename>, и какую карту с ним использовать. </para> <para> Убедитесь, что в <filename>channels.conf</filename> находятся каналы !-- FIXME Free to Air --> <emphasis>только</emphasis> для обычного телевидения[Free to Air], иначе <application>MPlayer</application> будет ожидать передачи незашифрованных данных. </para> <para> В полях аудио и видео вы можете использовать расширенный синтаксис: <option>...:pid[+pid]:...</option> (в каждом максимум 6 pid'ов); в этом случае <application>MPlayer</application> включит в поток все указанные pid плюс pid 0 (содержащий PAT). Поощряется указание (если вы его знаете) PMD pid в каждой строке для соответствующего канала. Также можно указать 8192, при этом будут выбраны все pid на этой частоте, и Вы сможете потом переключаться между программами при помощи TAB. Это может потребовать большей пропускной способности, однако дешевые карты всегда пересылают все каналы как минимум до ядра, так что в этом случае разница будет небольшой. Другие возможные применения: телетекст pid, второая аудио дорожка, и т.д. </para> <para> Если <application>MPlayer</application> часто жалуется на <screen>Too many video/audio packets in the buffer</screen> или если вы заметили растущую рассинхронизацию между звуком и видео попробуйте воспользоваться libavformat MPEG-TS декодером, добавив <option>-demuxer lavf -lavfdopts probesize=128</option> в командную строку. </para> <para> Для показа первого из доступных каналов, запустите <screen>mplayer dvb://</screen> </para> <para> Если вы хотите посмотреть определенный канал, например R1, запустите <screen>mplayer dvb://R1</screen> </para> <para> Если у вас больше одной карты, также надо указать номер той, с которой доступен канал: <screen>mplayer dvb://2@R1</screen> </para> <para> Для смены канала, нажимайте клавиши <keycap>h</keycap> (следующий) и <keycap>k</keycap> (предыдущий), или используйте <link linkend="osdmenu">OSD меню</link>. </para> <para> Для временного отключения аудио или видео потока скопируйте следующие строки в <filename>~/.mplayer/input.conf</filename>: <screen> % set_property switch_video -2 & step_property switch_video ? set_property switch_audio -2 ^ step_property switch_audio </screen> (Заменяя горячие клавиши по своему усмотрению.) При нажатии на клавишу, соответствующую switch_x -2, поток будет закрыт; при нажатии на клавишу, соответствующую step_x, поток будет открыт снова. Имейте в виду, что этот механизм переключения не будет работать как следует, когда в мультиплексоре присутствует несколько аудио или видео потоков. </para> <para> Во время воспроизведения (не во время записи) для предотвращения заикания и таких ошибок, как 'Your system is too slow', имеет смысл добавить <screen> -mc 10 -speed 0.97 -af scaletempo </screen> к опциям командной строки, исправив параметры scaletempo по своему усмотрению. </para> <para> Если ваш <filename>~/.mplayer/menu.conf</filename> содержит запись <literal><dvbsel></literal>, как в файле с примерами <filename>etc/dvb-menu.conf</filename> (можете использовать его чтобы перезаписать <filename>~/.mplayer/menu.conf</filename>), главное меню будет отображать подменю, позволяющее вам выбрать один из присутствующих в <filename>channels.conf</filename> каналов, возможно, с предшествующим ему подменю с DVB выбором карт, доступных <application>MPlayer</application>. </para> <para> Если хотите записать какую-то программу на диск, используйте <screen>mplayer -dumpfile r1.ts -dumpstream dvb://R1</screen> </para> <para> Если хотите вместо этого записать ее в другом формате (перекодировать), следует использовать такую команду: <screen> mencoder -o <replaceable>r1.avi</replaceable> -ovc xvid -xvidencopts bitrate=800 \ -oac mp3lame -lameopts cbr:br=128 -pp=ci dvb://R1 </screen> </para> <para> Полный список опций для DVB драйвера ввода можно найти на странице руководства man. </para> <formalpara><title>БУДУЩЕЕ</title> <para> Если у вас есть вопросы, или вы хотите получать сообщения о новых возможностях и принять участие в дискуссиях на эту тему, подпишитесь на список рассылки <ulink url="http://lists.mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</ulink>. Помните, что язык рассылки - Английский. </para> </formalpara> <para> В будущем вы можете рассчитывать на возможность отображения OSD и субтитров, используя встроенные OSD возможности DVB карт, также как и более плавное воспроизведение не-25fps фильмов и транскодирование в реальном времени между MPEG-2 и MPEG-4 (частичная декомпрессия). </para> </sect2> <!-- ********** --> <sect2 id="dxr2"> <title>DXR2</title> <para> <application>MPlayer</application> поддерживает аппаратное ускорение воспроизведения с картами Creative DXR2. </para> <para> Прежде всего вам потребуется правильно установленные DXR2 драйверы. Их и руководство по установке можно найти на сайте <ulink url="http://dxr2.sf.net/">Ресурсного Центра DXR2</ulink>. </para> <variablelist> <title>ИСПОЛЬЗОВАНИЕ</title> <varlistentry> <term><option>-vo dxr2</option></term> <listitem><para>Включить TV выход.</para></listitem> </varlistentry> <varlistentry> <term><option>-vo dxr2:x11</option> or <option>-vo dxr2:xv</option></term> <listitem><para>Включить вывод через оверлей в X11.</para></listitem> </varlistentry> <varlistentry> <term><option>-dxr2 <option1:option2:...></option></term> <listitem><para>Эта опция используется для управления драйвером DXR2.</para></listitem> </varlistentry> </variablelist> <para> Чипсет оверлея, использовавшийся на DXR2 довольно плохого качества, но с настройками по-умолчанию будет работать у всех. OSD может работать с оверлеем (не на TV), отрисовывая себя в ключевом цвете[colorkey]. С настройками ключевого цвета[colorkey] по-умолчанию, вы можете получить разные результаты, скорее всего увидите ключевой цвет[colorkey] вокруг символов или другие забавные эффекты. Но при правильных настройках, можно получить вполне приемлемый результат. </para> <para>Смотрите страницу man руководства для списка доступных опций.</para> </sect2> <!-- ********** --> <sect2 id="dxr3"> <title>DXR3/Hollywood+</title> <para> <application>MPlayer</application> поддерживает аппаратно ускоренное воспроизведение картами Creative DXR3 и Sigma Designs Hollywood Plus. Обе эти карты используют MPEG декодер на чипе em8300 от Sigma Designs </para> <para> Прежде всего вам потребуются правильно установленные драйвера DXR3/H+, версии 0.12.0 или выше. Драйверы и инструкции по установке могут быть найдены на сайте <ulink url="http://dxr3.sf.net/">DXR3 & Hollywood Plus для Linux</ulink> <filename>configure</filename> должен автоматически определить вашу карту, компиляция должна пройти без проблем. </para> <!-- FIXME: find a more clear presentation --> <variablelist> <title>ИСПОЛЬЗОВАНИЕ</title> <varlistentry> <term><option>-vo dxr3:prebuf:sync:norm=x:<replaceable>device</replaceable></option></term> <listitem><para> Опция <option>overlay</option> активирует оверлей вместо TVOut. Для корректной работы она требует его правильной настройки. Самый простой способ правильно его настроить - сначала запустить autocal, затем запустить mplayer с драйвером dxr3 и выключенным оверлеем, потом запустить dxr3view. В dxr3view вы можете менять настройки оверлея и видеть результат в реальном времени, может быть, в будущем эта возможность будет поддерживаться в <application>MPlayer</application> GUI. После того как оверлей правильно настроен, надобность в dxr3view отпадает. Опция <option>prebuf</option> включает пребуферинг. Пребуферинг - это возможность чипа em8300, позволяющая ему хранить более одного кадра видео в каждый момент времени. Это значит, что при включенном пребуферинге <application>MPlayer</application> будет пытаться всегда держать буфер заполненным данными. Если у вас медленная машина, то <application>MPlayer</application> будет забирать практически 100% CPU. Это особенно часто случается, если вы воспроизводите чистые MPEG потоки (DVD, SVCD и т.д.), т.к., поскольку <application>MPlayer</application> не должен перекодировать их в MPEG, то он заполняет буфер очень быстро. С пребуферингом воспроизведение видео <emphasis role="bold">значительно</emphasis> меньше зависит от остальных программ, прибирающих к рукам CPU, он не будет терять кадры, кроме случая, когда приложения захватит CPU на довольно длительное время. При запуске без пребуферинга, em8300 намного более чувствителен к загрузке CPU, так что настоятельно рекомендуется включить <option>-framedrop</option> опцию <application>MPlayer</application> для избежания потери синхронизации. <option>sync</option> включит алгоритм синхронизации. Пока что это еще экспериментальная возможность. С включенной sync возможностью будут постоянно проверяться встроенные часы em8300, и если начинается отклонение от часов <application>MPlayer</application> чип будет сброшен, что приведет к пропуску всех запаздывающих кадров. </para><para> <option>norm=x</option> установит TV стандарт DXR3 карты без необходимости использования внешних утилит вроде em8300setup. Допустимые стандарты: 5 = NTSC, 4 = PAL-60, 3 = PAL. Специальные стандарты 2 (автонастройка, используя PAL/PAL-60) и 1 (автонастройка используя PAL/NTSC) решают какой стандарт использовать на основе частоты кадров. because they decide which norm to use by looking at the frame rate of the movie. norm = 0 (по-умолчанию) не изменяет текущий стандарт. </para><para> <option><replaceable>device</replaceable></option> = номер устройства, если их у вас несколько em8300 карт. Любые из этих опций могут быть опущены. </para><para> <option>:prebuf:sync</option>, похоже, отлично работает при воспроизведении фильмов MPEG-4 (DivX). Пользователи сообщали о проблемах при использования prebuf опции при воспроизведении файлов MPEG-1/2. Вы можете попробовать запустить программу сначала вообще без указания опций, если же имеете проблемы с синхронизацией или с DVD субтитрами, попытайтесь с <option>:sync</option>. </para></listitem> </varlistentry> <varlistentry> <term><option>-ao oss:/dev/em8300_ma-<replaceable>X</replaceable></option></term> <listitem><para> Для вывода звука, где <replaceable>X</replaceable> - номер устройства (0, если карта одна). </para></listitem> </varlistentry> <varlistentry> <term><option>-af resample=<replaceable>xxxxx</replaceable></option></term> <listitem><para> em8300 не может воспроизводить частоты дискретизации ниже 44100Hz. Если частота ниже 44100Hz, выберите либо 44100Hz, либо 48000Hz в зависимости от того, какая частота ближайшая. Т.е. если фильм использует 22050Hz укажите 44100Hz, т.к. 44100 / 2 = 22050, если 24000Hz, используйте 48000Hz, т.к. 48000 / 2 = 24000 и т.д. Это не работает с цифровым выводом звука (<option>-ac hwac3</option>). </para></listitem> </varlistentry> <varlistentry> <term><option>-vf lavc</option></term> <listitem><para> Для просмотра не-MPEG контента на em8300 (напрмер MPEG-4 (DivX) или RealVideo) вы должны указать MPEG-1 видеоплагин, такой как <systemitem class="library">libavcodec</systemitem> (lavc). Дополнительную информацию о <option>-vf lavc</option> смотрите на странице руководства man. На данный момент неизвестно способа установить значение fps для em8300, что означает фиксированную величину, равную 30000/1001 fps, поэтому крайне рекомендуется использовать <option>-vf lavc=<replaceable>quality</replaceable>:25</option>, особенно, если используете пребуферинг. Почему 25, а не 30000/1001? Ну, причина в том, что при использовании 30000/1001 изображение начинает слегка дрожать. Причина нам неизвестна. Если вы ставите это значение где-то между 25 и 27 картинка стабилизируется. Пока что мы можем только принять это как факт </para></listitem> </varlistentry> <varlistentry> <term><option>-vf expand=-1:-1:-1:-1:1</option></term> <listitem><para> Хотя драйвер DXR3 может помещать некоторый OSD в MPEG-1/2/4 видео, он имеет намного более плохое качество, чем традиционный OSD <application>MPlayer</application>, и имеет несколько проблем при обновлении к тому же. Команда, указанная выше, сначала отконвертирует входное видео в MPEG-4 (это обязательно, извините), затем применит плагин expand, который не будет ничего расширять (-1: по-умоляанию), но наложит нормальное OSD на картинку (это все, что делает "1" в конце строки). </para></listitem> </varlistentry> <varlistentry> <term><option>-ac hwac3</option></term> <listitem><para> em8300 поддерживает воспроизведение звука AC-3 (окружающий звук) через цифровой аудио выход карты.Смотрите опцию <option>-ao oss</option> выше, она должна использоваться для указания вывода через DXR3 вместо звуковой карты. </para></listitem> </varlistentry> </variablelist> </sect2> </sect1> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="other"> <title>Другое оборудование вывода видео</title> <sect2 id="zr"> <title>Zr</title> <para> Это видеодрайвер (<option>-vo zr</option>) для некоторого количества MJPEG карт захвата/воспроизведения (тестировался на DC10+ и Buz, но также должен работать для LML33, DC10). Драйвер работает, кодируя кадр в JPEG, и отправляя его карте. Для кодирования JPEG используется и требуется библиотека <systemitem class="library">libavcodec</systemitem>. Со специальным режимом <emphasis>cinerama</emphasis>, вы можете смотреть фильмы на действительно широком экране, который можно получить, иемя два проектора и две MJPEG карты. В зависимости от разрешения и настроек качества, этот драйвер может потребовать существенной мощности CPU, не забывайте указывать <option>-framedrop</option>, если маша машина слишком медленная. Замечание: Мой AMD K6-2 350МГц является (с <option>-framedrop</option>) вполне подходящим для просмотра материала размера VCD, и фильмов с уменьшенным разрешением. </para> <para> Этот драйвер общается с драйвером ядра, доступном на <ulink url="http://mjpeg.sf.net"/>, так что сначала должен корректно заработать второй. Наличие MJPEG карты автоматически определяется скриптом <filename>configure</filename>, если этого не происходит, включите принудительное определение при помощи <screen>./configure --enable-zr</screen> </para> <para> Вывод может управляться несколькими опциями, подробные описания можно найти на странице руководства man, короткий список опций получите, выполнив <screen>mplayer -zrhelp</screen> </para> <para> Такие вещи как масштабирование и OSD не осуществляются этим драйвером, но могут быть сделаны, используя видеоплагины. Например, предположим, что вы имеете фильм с разрешением 512x272 и хотите просмотреть эго в полноэкранном режиме на DC10+. Есть три главные возможности: вы можете отмасштабировать фильм до ширины 768, 384 или 192. По причинам производительности и качества я бы выбрал масштабирование до 384x204, используя быстрый билинейный программный модуль. Командная строка: <screen> mplayer -vo zr -sws 0 -vf scale=384:204 <replaceable>movie.avi</replaceable> </screen> </para> <para> Обрезка может быть выполнена плагином <option>crop</option> и самим драйвером. Предполагая, что фильм слишком широк для отображения на Buz, и вы хотите использовать <option>-zrcrop</option> для уменьшения ширины, то необходимо применить следующую команду: <screen> mplayer -vo zr -zrcrop 720x320+80+0 <replaceable>benhur.avi</replaceable> </screen> </para> <para> Если вы хотите использовать плагин <option>crop</option>, выполните <screen> mplayer -vo zr -vf crop=720:320:80:0 <replaceable>benhur.avi</replaceable> </screen> </para> <para> Дополнительное указание <option>-zrcrop</option> активизирует режим <emphasis>cinerama</emphasis>, т.е. вы можете распределить фильм на несколько TV или проекторов для создания большего экрана. Предположим у вас два проектора. Левый подключен к Buz на <filename>/dev/video1</filename>,а правый подключен к DC10+ на <filename>/dev/video0</filename>. Фильм имеет разрешение 704x288. Также предположим, что вы хотите выводить на правый проектор в черно-белом цвете, а левый должен иметь JPEG кадры качества 10. в этом случае вы должны указать: <screen> mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 \ <replaceable>movie.avi</replaceable> </screen> </para> <para> Можно видеть, что опции, встречающиеся до второго <option>-zrcrop</option>, применяются только к DC10+, а опции после второго применяются только к Buz. Максимальное количество карт для режима <emphasis>cinerama</emphasis> равно четырем, так что вы можете построить 2x2 видеостену. </para> <para> Наконец важное замечание: Не запускайте и не останавливайте XawTV на устройстве воспроизведения, это может подвесить ваш компьютер. Тем не менее, можно прекрасно <emphasis role="bold">СНАЧАЛА</emphasis> запустить XawTV, <emphasis role="bold">ЗАТЕМ</emphasis> запустить <application>MPlayer</application>, подождать, пока <application>MPlayer</application> завершит работу и <emphasis role="bold">ЗАТЕМ</emphasis> остановить XawTV. </para> </sect2> <!-- ********** --> <sect2 id="blinkenlights"> <title>Blinkenlights[Мерцающие огни?]</title> <para> Этот драйвер способен воспроизводить, используя Blinkenlights UDP протокол. Если не знаете, что такое <ulink url="http://www.blinkenlights.de/">Blinkenlights</ulink> или его преемник <ulink url="http://www.blinkenlights.de/arcade/">Arcade</ulink>, выясните это. Хотя это, возможно, реже всего используемый драйвер, без сомнения, это самая клевая вещь, предлагаемая <application>MPlayer</application>. Просто посмотрите некоторые из <ulink url="http://www.blinkenlights.de/video.en.html">видеороликов документации Blinkenlights</ulink>. На видео Arcade вы можете видеть драйвер видеовывода Blinkenlights в действии в 00:07:50. </para> </sect2> </sect1> <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - --> <sect1 id="tvout"> <title>Поддержка TV-выхода</title> <sect2 id="tvout-mga-g400"> <title>Matrox G400 карты</title> <para> Под Linux есть два способа получить работающий TV выход на G400: </para> <important> <para> инструкции по TV-выходу для Matrox G450/G550, смотрите в следующем разделе! </para> </important> <variablelist> <varlistentry> <term>XFree86</term> <listitem> <para> Используя драйвер и HAL модуль, доступный с <ulink url="http://www.matrox.com">сайта Matrox</ulink>. Это даст вам X на TV. </para> <para> <emphasis role="bold">Этот метод на дает ускоренного воспроизведения</emphasis> как под Windows! Второй выход имеет только YUV фреймбуфер, <emphasis>BES</emphasis> (Back End Scaler, модуль YUV масштабирования на картах G200/G400/G450/G550) на нем не работает! Драйвер windows как-то это обходит, возможно используя 3D движок для масштабирования, а YUV фреймбуфер - для вывода отмасштабированного изображения. Если вы действительно хотите использовать X, используйте опции <option>-vo x11 -fs -zoom</option>, но это будет <emphasis role="bold">МЕДЛЕННО</emphasis>, и будет иметь включенную защиту от копирования <emphasis role="bold">Macrovision</emphasis> (можно "обойти" Macrovision используя этот <ulink url="http://avifile.sf.net/mgamacro.pl">скрипт на perl</ulink>). </para> </listitem> </varlistentry> <varlistentry> <term>Framebuffer</term> <listitem> <para> Используя <emphasis role="bold">модули matroxfb</emphasis> в 2.4 ядрах. 2.2 ядра не имеют в этих модулях возможности работы с TVout, так что для нашего дела непригодны. Вы должны включить ВСЕ matroxfb-относящиеся возможности во время компиляции (кроме MultiHead), и скомпилировать их в <emphasis role="bold">модули</emphasis>! Вам также необходима задействованная I2C. </para> <procedure> <step><para> Войдите в <filename class="directory">TVout</filename> и наберите <command>./compile.sh</command>. Установите <filename>TVout/matroxset/matroxset</filename> куда-нидудь в ваши <envar>PATH</envar>. </para></step> <step><para> Если вы еще не имеете установленного <command>fbset</command>, поместите <filename>TVout/fbset/fbset</filename> куда-нибуть в ваши <envar>PATH</envar>. </para></step> <step><para> Еслы <command>con2fb</command> у вас еще не установлен, поместите <filename>TVout/con2fb/con2fb</filename> куда-нибуть в ваши <envar>PATH</envar>. </para></step> <step><para> Затем войдите в каталог <filename class="directory">TVout/</filename> в исходниках <application>MPlayer</application>, и запустите <filename>./modules</filename> от имени root. Ваша консоль из текстового режима переключится в режим фреймбуфера (обратно не получится!). </para></step> <step><para> Затем, ОТРЕДАКТИРУЙТЕ и запустите скрипт <filename>./matroxtv</filename>. Он покажет вам очень простое меню. Нажмите <keycap>2</keycap> и <keycap>Enter</keycap>. Теперь вы должны иметь одинаковую картинку на мониторе и TV. Если картинка на TV (PAL по-умолчанию) имеет некоторые странные полосы, значит скрипт не смог корректно установить разрешение (на 640x512 по-умолчанию). Попробуйте другие разрешения из меню и/или поэкспериментируйте с fbset. </para></step> <step><para> Йоу. Следующая задача - убрать курсор с tty1 (или где он есть), и выключить гашение экрана. Запустите следующие команды: <screen> echo -e '\033[?25l' setterm -blank 0<!-- --></screen> or <screen> setterm -cursor off setterm -blank 0<!-- --></screen> Возможно вы захотите поместить вышеуказанное в скрипт, добавив очистку экрана. Чтобы вернуть курсор назад <screen>echo -e '\033[?25h'</screen> или <screen>setterm -cursor on</screen> </para></step> <step><para> Готово. Запускайте воспроизведение <screen> mplayer -vo mga -fs -screenw 640 -screenh 512 <replaceable>filename</replaceable><!-- --></screen> (Если используете X, переключитесь теперь в matroxfb при помощи, например <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>.) Замените <literal>640</literal> и <literal>512</literal>, если установили другое разрешение... </para></step> <step><para> <emphasis role="bold">Наслаждайтесь супер-быстрым, супер-навороченным выводом Matrox TV (лучше чем Xv)!</emphasis> </para></step> </procedure> </listitem> </varlistentry> </variablelist> <formalpara><title>Создание кабеля Matrox TV-out</title> <para> Никто не дает никаких гарантий и не несет никакой ответственности за возможное нанесение ущерба, вызванное выполнением инструкций, указанныех в этой документации. </para> </formalpara> <!-- FIXME check for correct translation of cable pins assignments --> <formalpara> <title>Кабель для G400</title> <para> Четвертый контакт CRTC2 коннектора - это композитный видео сигнал. Земля - шестой, седьмой и восьмой контакты. (информация получена от Balázs Rácz) </para> </formalpara> <formalpara><title>Кабель для G450</title> <para> Первый контакт CRTC2 коннектора - это композитный видео сигнал. Земля - пятый, шестой, седьмой и пятнадцатый (5, 6, 7, 15) контакты. (информация получена от Balázs Kerekes) </para> </formalpara> </sect2> <!-- ********** --> <sect2 id="tv-out_matrox_g450"> <title>Matrox G450/G550 карты</title> <para> Поддержка TV выхода для этих карт была добавлена недавно, и пока отсутствует в основном ядре. В данный момент <emphasis role="bold">mga_vid</emphasis> не может быть использован AFAIK, поскольку дрйвер G450/G550 работает только в одной конфигурации: первый чип CRTC (с наибольшим количеством возможностей) на первом экране (мониторе), и второй чип CRTC (без <emphasis role="bold">BES</emphasis> - для объяснения, что такое BES, смотрите раздел о G400 выше) на TV. Так что в настоящий момент вы можете использовать только драйвер вывода <emphasis>fbdev</emphasis> программы <application>MPlayer</application>. </para> <para> Первый CRTC не может быть перенаправлен на второй выход на текущий момент. Автор драйвера ядра matroxfb - Petr Vandrovec - возможно добавит поддержку для этого, отображая вывод первого CRTC одновременно на два выхода, как в данный момент и рекомендуется для G400, смотрите раздел выше. </para> <para> Необходимый патч для ядра и детальное HOWTO можно скачать с <ulink url="http://www.bglug.ca/matrox_tvout/"/> </para> </sect2> <!-- ********** --> <sect2 id="tvout-ati"> <title>ATI карты</title> <formalpara><title>ПРЕАМБУЛА</title> <para> Сейчас ATI не хочет поддерживать ни один из ее TV-out чипов под Linux, по причине технологии лицензированной ими у Macrovision. </para> </formalpara> <itemizedlist> <title>СТАТУС ПОДДЕРЖКИ TV-OUT ДЛЯ КАРТ ATI ПОД LINUX</title> <listitem><para> <emphasis role="bold">ATI Mach64</emphasis>: поддерживается <ulink url="http://gatos.sf.net">GATOS</ulink>. </para></listitem> <listitem><para> <emphasis role="bold">ASIC Radeon VIVO</emphasis>: поддерживается <ulink url="http://gatos.sf.net">GATOS</ulink>. </para></listitem> <listitem><para> <emphasis role="bold">Radeon</emphasis> и <emphasis role="bold">Rage128</emphasis>: поддерживается <application>MPlayer</application>! Смотрите разделы <link linkend="vesa">VESA драйвер</link> и <link linkend="vidix">VIDIX</link>. </para></listitem> <listitem><para> <emphasis role="bold">Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4</emphasis>: поддерживается <ulink url="http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/">atitvout</ulink>. </para></listitem> </itemizedlist> <para> Для других карт просто используйте <link linkend="vesa">VESA</link> драйвер, без VIDIX. Конечно, требуется мощный CPU. </para> <para> Единственная вещь, которую надо сделать - <emphasis role="bold">Иметь TV коннектор подключенным до загрузки вашего PC</emphasis>, поскольку видео BIOS инициализирует себя только один раз во время POST процедуры. </para> </sect2> <!-- ********** --> <sect2 id="tvout-nvidia"> <title>nVidia</title> <para> Во-первых, вы ДОЛЖНЫ скачать закрытые драйверы с <ulink url="http://nvidia.com"/>. Я не буду описывать процесс установки и настройки, поскольку это выходит за рамки данной документации. </para> <para> После того, как XFree86, XVideo, и 3D ускорение заработает правильно, отредактируйте раздел Device для вашей карты в файле <filename>XF86Config</filename>, в соответствии с указанным ниже примером (адаптируйте к вашей карте/TV): <programlisting> Section "Device" Identifier "GeForce" VendorName "ASUS" BoardName "nVidia GeForce2/MX 400" Driver "nvidia" #Option "NvAGP" "1" Option "NoLogo" Option "CursorShadow" "on" Option "TwinView" Option "TwinViewOrientation" "Clone" Option "MetaModes" "1024x768,640x480" Option "ConnectedMonitor" "CRT, TV" Option "TVStandard" "PAL-B" Option "TVOutFormat" "Composite" EndSection </programlisting> </para> <para> Конечно же важная часть - это TwinView. </para> </sect2> <!-- ********** --> <sect2 id="tvout-neomagic"> <title>NeoMagic</title> <para> Чип NeoMagic найден на различных ноутбуках, некоторые из которых оснащаются простым аналоговым TV кодером, некоторые имеют более продвинутый. <itemizedlist> <listitem><para> <emphasis role="bold">Чип аналогового кодера</emphasis>: Сообщалось, что надежный TV выход можно получить, используя <option>-vo fbdev</option> или <option>-vo fbdev2</option>. Вам требуется иметь vesafb скомпилированный в вашем ядре и передать следующие параметры в командной строке ядра: <option>append="video=vesafb:ywrap,mtrr" vga=791</option>. Вам следует запустить <application>X</application>, затем переключитесь в консольный режим при помощи, например, <keycombo><keycap>Ctrl</keycap><keycap>Alt</keycap><keycap>F1</keycap></keycombo>. Если вы не запустите <application>X</application> до запуска <application>MPlayer</application> в консоли, видео станет медленным и дрожащим[choppy] (объяснения приветствуются). Залогиньтесь в консоли и запустите следующую команду: <screen>clear; mplayer -vo fbdev -zoom -cache 8192 dvd://</screen> Теперь вы должны увидеть фильм, запущенный в консольном режиме, заполняющий примерно половину LCD экрана вашего ноутбука. Для переключения в TV нажмите <keycombo><keycap>Fn</keycap><keycap>F5</keycap></keycombo> три раза. Тестировался на Tecra 8000, 2.6.15 ядре с vesafb, ALSA v1.0.10. </para></listitem> <listitem> <para> <emphasis role="bold">Chrontel 70xx чип кодирования</emphasis>: Найден на IBM Thinkpad 390E и, возможно, других Thinkpad или ноутбуках. </para><para> Необходимо использовать <option>-vo vesa:neotv_pal</option> для PAL или <option>-vo vesa:neotv_ntsc</option> для NTSC. Это даст TV выход, работающий в следующих 16 bpp и 8 bpp режимах: </para> <itemizedlist> <listitem><para>NTSC 320x240, 640x480 and maybe 800x600 too.</para></listitem> <listitem><para>PAL 320x240, 400x300, 640x480, 800x600.</para></listitem> </itemizedlist> <para>Режим 512x384 не поддерживается в BIOS. Вы должны масштабировать изображение в другое разрешение для задействования TV выхода. Если вы видите изображение на экране в разрешении 640x480 или 800x600, но не 320x240 или другом меньшем разрешении, вам требуется заменить две таблицы в <filename>vbelib.c</filename>. Смотрите функцию vbeSetTV для подробностей. Пожалуйста, свяжитесь автором в этом случае. </para> <para> Известные проблемы: только VESA, не реализованы различные настройки, такие как яркость, контрастность, уровень черного, фильтр дрожания[flickfilter]. </para> </listitem> </itemizedlist> </para> </sect2> </sect1> </chapter>