Использование CD/DVDприводы CD/DVD
Из Linux'овской документации:
Современные приводы CD-ROM могут работать на очень высоких скоростях, некоторые
из них способны регулировать скорость чтения. Несколько аргументов в пользу использования этой возможности:
При высоких оборотах возрастает вероятность ошибки при чтении, особенно с
неправильно записанных дисков. Уменьшение скорости может предотвратить потерю
данных в некоторых случаях.
Уровень шума, возрастающий с оборотами, может оказаться весьма существенным
Вы можете уменьшить скорость вращения IDE CD-ROM приводов программами
hdparm или setcd. Это работает так:
hdparm -E [скорость][привод]setcd -x [скорость][привод]
Вы также можете попробовать
echo current_speed:4 > /proc/ide/[cdrom device]/settings
но для этого требуются привилегии администратора. Следующая команда
тоже может быть полезна:
echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings
Таким образом предварительно считывается 2 мегабайта (полезно при
дисках с царапинами). Если поставить слишком высокое значение, то постоянный
запуск и остановка вращения диска драматически снизят эффективность.
Рекомендуется также подстроить привод, используя hdparm:
hdparm -d1 -a8 -u1 привод
Таким образом включается прямой доступ к памяти[DMA], предварительное
чтение и размаскировка IRQ (прочти man-страницу hdparm,
для более подробного описания).
Обратитесь к "/proc/ide/cdrom device/settings"
для подстройки Вашего CD-ROM привода.
У SCSI приводов нет общего способа выставить эти параметры (Вы знаете какой-нибудь?
Расскажите нам!) Существует программа для
Plextor SCSI приводов.
FreeBSD:Скорость: cdcontrol [-f device] speed speedDMA: sysctl hw.ata.atapi_dma=1Воспроизведение DVD
Полный список возможных опций можно прочитать в man.
Синтаксис для стандартных Цифровых Многоцелевых Дисков[Digital Versatile Disc]
(DVD) таков:
mplayer -dvd <ролик> [-dvd-device привод]
Пример:
mplayer -dvd 1 -dvd-device /dev/hdc
Устройство DVD по умолчанию - это /dev/dvd. Если Ваши
настройки отличаются, создайте символическую ссылку или укажите правильное
устройство в командной строке, используя опцию .
Новая поддержка DVD (mpdvdkit2)MPlayer использует библиотеки libdvdread
и libdvdcss для DVD расшифровки и
воспроизведения. Эти две библиотеки содержатся в подкаталоге
libmpdvdkit2/ дерева исходного кода
MPlayer'а, так что отдельно устанавливать их не нужно. Мы выбрали такое решение
потому, что нам пришлось исправить ошибку в libdvdread
и добавить патч к libdvdcss поддержку
сохранения взломанных ключей CSS. Это
предотвращает повторный взлом ключа при каждом просмотре, существенно увеличивая
скорость.
MPlayer способен использовать системные библиотеки
libdvdread и libdvdcss, но это
не рекомендуется, так как может приводить к
ошибкам, несовместимости и потере скорости.
Поддержка DVD навигации (dvdnav)
Поддержка DVD навигации, используя dvdnav была начата,
но никогда не была доведена до ума, и на данном этапе заброшена. Кто знает,
она может даже скомпилироваться.
Старая поддержка DVD - НЕ ОБЯЗАТЕЛЬНО
Это может оказаться полезным, например, при просмотре зашифрованных VOB-файлов
с жёсткого диска. Cкомпилируйте и установите
libcss (версию 0.0.1, ни в коем случае не
более позднюю). Если MPlayer её не
обнаружит, добавьте . Для
использования необходимы привилегии администратора или suid root на исполняемом
файле MPlayer'а или позвольте MPlayer'у запустить suid root обработчик
fibmap_mplayer.
Структура DVD
Диски DVD используют сектора размером в 2048 байтов с ECC/CRC. На них обычно
единственная файловая система UDF на одной дорожке, которая содержит
различные файлы (коротенькие .IFO и .BUK и длинные (порядка гигабайта)
.VOB). Это настоящие файлы, которые можно просматривать/переписывать с
замонтированного не зашифрованного DVD.
Файлы .IFO содержат информацию для навигации (раздел/ролик/угол/язык и пр.),
необходимую для интерпретации содержания .VOB (кино). Файлы .BUK — их
дубли. Эти файлы содержат адреса в секторах,
так что для исполнения навигации и расшифровки DVD, нужен доступ к файлам на
уровне секторов.
Из-за этого старая поддержка DVD c libcss нуждается в
замонтированной файловой системе и посекторному доступу к устройству. К
сожалению, для этого нужны привилегии администратора (под Linux). Проблема
решается тремя способами:
Привилегированный доступ или исполняемый файл MPlayer
'а с suid root.
Позвольте MPlayer'у выполнять the suid-root
обработчик fibmap_mplayer для доступа к DVD (используется в старом методе
воспроизведения DVD через libcss).
Не использовать драйвер файловой системы из ядра и все делать в пространстве
пользователя. libdvdread 0.9.x и
libmpdvdkit так и делают (новая поддержка DVD). Драйвер UDF
файловой системы не нужен, поскольку в них встроенные драйвера файловой системы
UDF. Также DVD не обязан быть замонтированным, поскольку используется
только прямой посекторный доступ.
Иногда пользователи не могут читать /dev/dvd
, поэтому авторы libdvdread написали эмуляционный
уровень, который превращает секторные адреса в названия файла и смещение,
для эмуляции прямого доступа на замонтированной файловой системе или на жёстком
диске.
libdvdread даже принимает точку монтирования вместо
имени устройства для прямого доступа, и получает его название из
/proc/mounts. Этот метод придуман для Solaris-ов, где данные названия
присваиваются динамически.
Устройство DVD по умолчанию — /dev/dvd. Если Ваши
установки отличаются, создайте символическую ссылку или укажите правильное
название в командной строке после опции -dvd-device.
DVD аутентификация
Аутентификация и дешифровка в новом методе поддержки DVD происходит, используя
пропатченную libdvdcss (см. выше). Метод может быть
указан в переменной среды DVDCSS_METHOD, которая может быть
установлена в key, disk or title.
Если ничего не указано, она пробует следующие методы (по умолчанию: key,
title request):
bus key: Этот ключ устанавливается во время
аутентификации (длинная смесь ioctl'ов и различных обменов ключами,
криптографические процедуры) и используется для зашифровки ключей диска и ролика
при передаче по незащищённой шине (во избежания подслушивания). Он необходим для
получения и предварительной расшифровки ключа диска.
cached key: MPlayer
ищет уже взломанный ключ ролика, который сохраняется в каталоге
~/.mplayer/DVDKeys (быстро ;).
key: Если кэшированного ключа нет,
MPlayer пытается расшифровать ключ диска с помощью
включённых ключей плееров.
disk: Если метод key проваливается
(например, при отсутствии ключей плееров) MPlayer
взломает ключ грубой силой. Этот метод интенсивно использует процессор и
нуждается в 64 мегабайтах памяти (хэш-таблица из 16 миллионов 32-разрядных
записей). Работает наверняка (но медленно).
title request: Используя ключ диска
MPlayer запрашивает зашифрованные ключи роликов,
которые находятся в скрытых секторах, используя
ioctl(). Региональная защита RPC-2 приводов
осуществляется именно на этом этапе; может не сработать на подобных приводах.
Если удаётся, ключи роликов будут расшифрованы, используя ключа диска и шины.
title:Данный метод используется если title
request не срабатывает. Он не опирается на обмен ключами с приводом.
Используется криптографическая атака, чтобы угадать ключ непосредственно
(находится повторяющаяся последовательность в расшифрованном содержимом VOB'а
и предполагается, что текст, соответствующий первому зашифрованному байту - это
продолжение этой последовательности). Метод также известен под названиями "
атака с известным открытым текстом" или "DeCSSPlus". В редких
случаях этот метод проваливается, по причине недостаточности зашифрованного
содержания для статистической атаки или из-за изменения ключа в середине
ролика. Это единственный метод расшифровать содержимое DVD на жёстком диске
или на диске из неподходящего региона на проигрывателе RPC-2. (медленный метод).
С дисководами RPC-1, региональная защита осуществляется программно.
Дисководы RPC-2 защищены аппаратными средствами, разрешающими менять регион
всего 5 раз. Рекомендуется обновить прошивку[firmware] до RPC-1 если у тебя
RPC-2 привод. Обновления прошивок могут быть найдены на
странице прошивок. Если
для Вашего дисковода нет обновления, используйте для изменения региона привода
программу regionset (для Linux). Внимание:
Изменить регион можно всего 5 раз.
воспроизведение VCD
Полный список возможных опций можно прочитать в man. Синтаксис для обычного
Видео-CD (VCD):
mplayer -vcd <дорожка> [-cdrom-device <устройство>]
Пример:
mplayer -vcd 2 -cdrom-device /dev/hdc
Устройство VCD по умолчанию — /dev/cdrom. Если Ваши
настройки отличаются, создайте символическую ссылку добавьте правильное название
в командной строке после опции .
По крайней мере Plextor'ы и некоторые Toshiba SCSI CD-ROM приводы показывают
ужасную производительность при чтении VCD'ов. Это объясняется неполным
осуществлением ioctl CDROMREADRAW на этих приводах.
Если Вы имеете некоторые познания в сфере программирования SCSI, пожалуйста
помогите нам в написании поддержки
SCSI generic для VCD.
В настоящий момент Вы можете извлечь данные с VCD'ов, используя
readvcd, и воспроизвести получившийся файл MPlayer
'ом.
структура VCD
Диски VCD состоят из одной или нескольких дорожек:
Первая дорожка содержит несколько мегабайт секторами по 2048 байтов,
с файловой системой iso9660, обычно содержащей проигрыватель VCD для
Windows или прочую информацию, вроде картинок или текста.
Вторая и остальные дорожки содержат MPEG-поток секторами по 2324 байта, по
одному пакету MPEG PS на сектор вместо файловой системы. Эти дорожки не монтируются (Вы когда-нибудь монтировали аудио диск
для того, чтобы его воспроизвести?) Так как большинство фильмов именно на этой
дорожке, попробуй сначала .
Существуют VCD диски без первой дорожки (единственная дорожка без файловой
системы). Они просматриваются, но не монтируются.
Про файлы .DAT
Файл примерно в 600 мегабайт на первой дорожке не настоящий! Это так
называемый ISO-переход, созданный, чтобы позволить Windows обрабатывать эти
дорожки (Windows вообще запрещает приложениям использовать прямой доступ
к устройствам). Под Linux Вы не можете копировать эти файлы (они выглядят, как
мусор). Под Windows это возможно, поскольку из iso9660 эмулирует прямой доступ
к дорожкам через этот файл. Чтобы проигрывать .DAT файл Вам нужен драйвер,
который может быть найден в Linux версии PowerDVD. Это модифицированный драйвер
iso9660 файловой системы (vcdfs/isofs-2.4.X.o), который
способен эмулировать прямой доступ к дорожкам через этот файл. Если Вы
замонтируете диск, используя их драйвер, Вы можете копировать и даже проигрывать
.DAT файлы MPlayer'ом. Но это не будет работать со
стандартным драйвером iso9660 из ядра Linux! Используйте вместо этого опцию
. Альтернативами для копирования VCD может послужить новый
драйвер cdfs (не
входит в официальное ядро) который показывает дорожки[сессии] на диске как файлы
образов и cdrdao, приложение для
побитного чтения/копирования CD.