Использование CD/DVD приводы CD/DVD Из Linux'овской документации: Современные приводы CD-ROM могут работать на очень высоких скоростях, некоторые из них способны регулировать скорость чтения. Несколько аргументов "за" использование этой возможности: На высоких оборотах возрастает вероятность ошибки при чтении, особенно с плохо сформованных дисков. Уменьшение скорости может предотвратить потерю данных в некоторых случаях. Многие CD-ROM приводы ужасно шумят, а снижение скорости может привести к уменьшению шума. Вы можете уменьшить скорость вращения IDE CD-ROM приводов программами hdparm или setcd. Это работает так: hdparm -E [скорость] [cdrom устройство] setcd -x [скорость] [cdrom устройство] Если у Вас есть привилегии администратора, следующая команда тоже может оказаться полезной: echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings Таким образом предварительно считывается 2 мегабайта (полезно при дисках с царапинами). Если поставить слишком большое значение, то постоянный запуск и остановка вращения диска ужасно снизят эффективность. Рекомендуется также подстроить привод, используя hdparm: hdparm -d1 -a8 -u1 cdrom устройство Таким образом включается прямой доступ к памяти[DMA], предварительное чтение и размаскировка IRQ (прочтите man-страницу hdparm, с более подробным описанием). Обратитесь к "/proc/ide/cdrom device/settings" для подстройки Вашего CD-ROM привода. У SCSI приводов нет общего способа выставить эти параметры (Вы знаете какой-нибудь? Расскажите нам!) Существует программа для Plextor SCSI приводов. FreeBSD: Скорость: cdcontrol [-f device] speed speed DMA: 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, попробуйте отключить supermount или другие подобные удобства. Структура DVD Диски DVD используют сектора размером в 2048 байтов с ECC/CRC. На них обычно единственная файловая система UDF на одной дорожке, которая содержит различные файлы (коротенькие .IFO и .BUK и длинные (порядка гигабайта) .VOB). Это настоящие файлы, которые можно просматривать/переписывать с замонтированного не зашифрованного DVD. Файлы .IFO содержат информацию для навигации (раздел/ролик/угол/язык и пр.), необходимую для интерпретации содержания .VOB (кино). Файлы .BUK — их дубли. Эти файлы содержат адреса в секторах, так что для исполнения навигации и расшифровки DVD, нужен доступ к файлам на уровне секторов. Для поддержки DVD необходим прямой посекторный доступ к устройству. К сожалению, (под Linux) Вы должны быть root'ом, чтобы получить секторный адрес файла. Поэтому мы вообще не используем драйвер файловой системы из адра, а переписываем его для выполнения в пользовательсмком пространстве. libdvdread 0.9.x и libmpdvdkit так и делают. Драйвер 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'ов. Это объясняется тем, что CDROMREADRAW ioctl на этих приводах осуществлён не целиком. Если Вы имеете некоторые познания в сфере программирования SCSI, пожалуйста помогите нам в написании поддержки SCSI generic для VCD. В настоящий момент Вы можете извлечь данные с VCD'ов, используя readvcd, и воспроизвести получившийся файл MPlayer 'ом. структура VCD Диски VCD состоят из одной или нескольких дорожек: Первая дорожка содержит несколько мегабайт секторами по 2048 байтов, с файловой системой iso9660, обычно содержащей проигрыватель VCD для Windows и, возможно, прочую информацию, вроде картинок или текста. Вторая и остальные дорожки содержат MPEG-поток секторами по 2324 байта, по одному пакету MPEG PS на сектор вместо файловой системы. Как и дорожки аудиоCD, эти дорожки не монтируются (Вы когда-нибудь монтировали аудио диск для того, чтобы его воспроизвести?) Так как большинство фильмов именно на этой дорожке, попробуйте сначала . Существуют 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.