mpv/DOCS/ru/cd-dvd.html

234 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<LINK REL="stylesheet" TYPE="text/css" HREF="../default.css">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=koi8-r">
</HEAD>
<BODY>
<P><B><A NAME=drives>4.1. Дисководы CD-ROM</A></B></P>
<P>Из Linux'овской документации:</P>
<P>Некоторые CD-ROM'ы способны регулировать скорость чтения. Несколько
аргументов в пользу использования этой возможности:</P>
<UL>
<LI>При высоких оборотах возрастает вероятность ошибки при чтении,
особенно с неправильно записанных дисков.</LI>
<LI>Уровень шума, возрастающий с оборотами, может оказаться весьма
существенным.</LI>
</UL>
<P>Рекомендуется использования программ 'hdparm' или 'setcd'.</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [скорость] [дисковод]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>setcd -x [скорость] [дисковод]</CODE></P>
<P>Альтернативный метод:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo current_speed:4 &gt;/proc/ide/[дисковод]/settings</CODE></P>
<P>но для этого требуются привилегии администратора. Следующая команда
тоже может быть полезна:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo file_readahead:2000000 &gt;/proc/ide/[дисковод]/settings</CODE></P>
<P>Таким образом предварительно cчитывается 2 мегабайта (полезно при
дисках с царапинами). Если поставить слишком высокое значение, то постоянный
запуск и остановка вращения диска драматически снизят эффективность.
Предлагается также использовать программу 'hdparm':</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 [дисковод]</CODE></P>
<P>Таким образом включается непосредственный доступ к памяти[DMA], предварительное
чтение и размаскировка IRQ (если это непонятно, <EM>прочти man-страницу
'hdparm'</EM>)</P>
<P>Можешь поэкспериментировать файлом <CODE>/proc/ide/[дисковод]/settings</CODE>
для прочих настроек.</P>
<P>FreeBSD:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;Скорость: <CODE>cdcontrol [-f дисковод] speed [скорость]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>
<P><B><A NAME=dvd>4.2. Просмотр DVD</A></B></P>
<P>Полный список возможных опций можно прочитать в man.</P>
<H4>Новая поддержка DVD (mpdvdkit2)</H4>
<P><B>MPlayer</B> использует библиотеки <CODE>libdvdread</CODE> и
<CODE>libdvdcss</CODE> для расшифровки и просмотра DVD. Эти две программы
находятся в субдиректории <CODE>libmpdvdkit/</CODE>, так что отдельно
устанавливать их не нужно (и бесполезно). Мы выбрали такое решение потому,
что нам пришлось исправить ошибку в <CODE>libdvdread</CODE> и добавить патч
к <CODE>libdvdcss</CODE> для поддержки <B>сохранения взломанных ключей
CSS</B>, что в свою очередь предотвращает повторного взлома ключа при каждом
просмотре, существенно увеличивая скорость.</P>
<P><B>MPlayer</B> способен использовать <CODE>libdvdread</CODE> и
<CODE>libdvdcss</CODE> установленные отдельно, но такое решение <B>не
рекомендуется</B>, так как может приводить к ошибкам, несовместимости и
потере скорости.</P>
<H4>Навигация DVD (dvdnav)</H4>
<P>Работы по поддержке <CODE>libdvdnav</CODE> проводились, но эта часть кода
никогда не была доведена до ума, и на данном этапе заброшена, не работает.</P>
<P><B>Старая поддержка DVD - <I>ОПЦИОНАЛЬНО</I></B></P>
<P>Это может оказаться полезным, например, при просмотре зашифрованных
VOB-файлов с <B>жесткого диска</B>. Cкомпилируй и установи <B>libcss</B>
(версию 0.0.1, не в коем случае не более позднюю). Если <B>MPlayer</B> ее не
обнаружит, добавь <CODE>-csslib /path/to/libcss.so</CODE>. Для использования
необходимы привилегии администратора или suid root на выполняемом файле.</P>
<H4>Структура DVD</H4>
<P>Диски DVD используют сектора размером в 2048 байтов с ECC/CRC. На них обычно
единственная файловая система UDF на одной дорожке, которая содержит
различные файлы (коротенькие .IFO и .BUK и длинные (порядка гигабайта)
.VOB). Это настоящие файлы, которые можно просматривать/переписывать сo
онтированного не зашифрованного DVD.</P>
<P>Файлы .IFO содержат информацию для навигации (раздел/ролик/угол/язык и
пр.), необходимую для интерпретации содержания .VOB (кино). Файлы .BUK
&mdash; их дубли. Эти файлы содержат адреса в <B>секторах</B>, так что для
исполнения навигации и расшифровки DVD, нужен доступ к файлам на уровне
секторов.</P>
<P>Из-за этого старая поддержка DVD нуждается в cмонтированной файловой
системе и посекторному доступу к устройству. К сожалению, для этого нужны
привилегии администратора (под Linux). Проблема решается двумя способами:</P>
<UL>
<LI>Привилегированный доступ или исполняемый файл с suid root.</LI>
<LI>Исполнение файловой системы UDF в userspace. Именно это делают
libdvdread 0.9.x и libmpdvdkit (новая поддержка DVD). В таком случае
драйвер UDF в ядре не нужен, как и монтирование DVD, так как
используется исключительно посекторное чтение.</LI>
</UL>
<P>Иногда пользователям закрыт доступ к /dev/dvd, так что авторы libdvdread
исполнили некий эмуляционный слой, который конвертирует секторные
адреса в названия файла и офсет, таким образом эмулируя непосредственный
доступ на монтированной файловой системе или на жестком диске.</P>
<P>libdvdread также принимает точку монтирования вместо устройства, и получает
его название из <CODE>/proc/mounts</CODE>. Этот метод придуман для
Solaris-ов, где данные названия присваиваются динамически.</P>
<P>Устройство DVD по умолчанию &mdash; <CODE>/dev/dvd</CODE>. Если у тебя это не
так, то сделай символический линк или добавь правильное название в командной
строке после ключа <CODE>-dvd-device</CODE>.</P>
<H4>DVD аутентификация</H4>
<P>Это, как и взлом ключей зашифрованных DVD происходит при помощи
отпатченого libdvdcss. Выбор метода осуществляется через переменную
окружения <CODE>DVDCSS_METHOD</CODE>. Возможные значения: <CODE>key</CODE>,
<CODE>disk</CODE>, или <CODE>title</CODE>.</P>
<P>Если ничего не предписано, делаются следующие попытки (по умолчанию: key,
title request):</P>
<OL>
<LI><B>bus key:</B> этот ключ вырабатывается в процессе аутентификации
(множество ioctl вперемешку с обменами ключами &mdash;
криптографические процедуры), и при его помощи шифруются ключи диска и
роликов передаваемые по открытой шине (во избежания подслушивания). Он
необходим для получения и предварительной расшифровки ключа диска.</LI>
<LI><B>cached key:</B> MPlayer подбирает подходящий взломанный ключ из директории
<CODE>~/.mplayer/DVDKeys</CODE> (быстро ;-)</LI>
<LI><B>key:</B> При отсутствии подходящего ключа, MPlayer пытается
расшифровать диск при помощи набора ключей проигрывателя.</LI>
<LI><B>disk:</B> В случае неудачи (на пример при отсутствии ключей
проигрывателя) ключ диска форсируется. Этот метод интенсивно использует
процессор и нуждается в 64 мегабайтах памяти (хэш-таблица из 16 миллионов 32-разрядных
записей). Работает наверняка (но медленно).</LI>
<LI><B>title request:</B> Используя ключ диска MPlayer получает
зашифрованные ключи роликов находящиеся в <I>скрытых секторах</I> при
помощи <CODE>ioctl()</CODE>. Региональная защита проигрывателей RPC-2
осуществляется именно на этом этапе; может не сработать на подобных
проигрывателях. При удачи, ключи роликов расшифровываются при помощи
ключа диска и ключа шины.</LI>
<LI><B>title:</B> Данный метод используется если title request не
срабатывает. Он не опирается на обмен ключами с дисководом. Ключи роликов
непосредственно атакуются криптографически, исходя из избыточности
расшифрованного содержания .VOB файлов. Метод также известен под названиями
"атака с известным открытым текстом" или "DeCSSPlus". В редких случаях
этот метод проваливается, по причине недостаточности зашифрованного
содержания для статистической атаки или изменения ключа в середине
ролика. Это единственный метод расшифровать содержания DVD на жестком
диске или на диске из неподходящего региона на проигрывателе RPC-2.
(медленный метод)</LI>
</OL>
<P>С дисководами RPC-1, региональная защита осуществляется программно.
Дисководы RPC-2 защищены аппаратными средствами, разрешающими менять регион
всего 5 раз. Рекомендуется перегрузить RPC-1 в firmware если у тебя дисковод
RPC-2 с <A HREF="http://www.firmware-flash.com/">этого</A> сайта. Если для
твоего дисковода нет апгрейда, используй для изменения региона дисковода
<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset</A>
(под Linux). <B>Осторожно:</B> Изменить регион можно всего 5 раз.</P>
<P><B><A NAME="vcd">4.3. просмотр VCD</A></B></P>
<P>Полный список возможных опций можно прочитать в man. Синтаксис для обычного
Видео-CD (VCD):</P>
<P><CODE>mplayer -vcd &lt;дорожка&gt; [-cdrom-device &lt;устройство&gt;]</CODE></P>
<P>Пример: <CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE></P>
<P>Устройство VCD по умолчанию &mdash; <CODE>/dev/cdrom</CODE>. Если у тебя это не
так, то сделай символический линк или добавь правильное название в командной
строке после ключа <CODE>-cdrom-device</CODE>.</P>
<P><B>Замечание:</B> Некоторые дисководы SCSI (по крайней мере Plextor
и некоторые изделия Toshiba) работают ужасно плохо при чтении VCD. Это
объясняется неполным исполнением ioctl CDROMREADRAW для этих дисководах.
Если ты имеешь некоторые познания в сфере программирования SCSI, пожалуйста
<A HREF="tech/patches.txt">помоги нам</A> в исполнении общей поддержки
SCSI для VCD.</P>
<H4>Структура VCD</H4>
<P>Диски VCD состоят из одной или нескольких дорожек:</P>
<UL>
<LI>Первая дорожка содержит несколько мегабайтов секторами по 2048 байтов,
с файловой системой iso9660, обычно содержащей проигрыватель VCD для
Windows или прочую информацию, вроде картинок или текста.</LI>
<LI>Вторая и остальные дорожки содержат MPEG-поток секторами по 2324
байта, по одному пакету MPEG PS на сектор вместо файловой системы. Так
же как и дорожки аудио дисков, эти дорожки <B>не монтируются</B>. Так
как большинство фильмов именно на этой дорожке, попробуй сначала
<CODE>-vcd 2</CODE>.</LI>
<LI>Существуют VCD диски без первой дорожки (единственная дорожка без файловой
системы). Они просматриваются, но не монтируются.</LI>
</UL>
<P>Про файлы .DAT:</P>
<P>Файл в примерно 600 мегабайтов на первой дорожке не настоящий. Это так
называемый ISO-переход, для доступа к другим дорожкам, не поддерживаемый
драйвером файловой системы iso9660 в оригинальном ядре Linux. Драйвер для
такого доступа входит в PowerDVD для Linux. Альтернативами для копирования
VCD может послужить новый драйвер cdfs (не входит в официальное ядро)
который показывает дорожки на диске как файлы образов или
<A HREF="http://cdrao.sf.net/">cdrao</A>, приложения для побитного
чтения/копирования CD.</P>
</BODY>
</HTML>