Но даже если волшебным образом "отучить" Ahead Nero Burning ROM задавать лишние вопросы и заставить его записывать MPEG4 как Video CD, это ни к чему не приведет, поскольку операционные системы семейства Windows "поддерживают" Video CD-диски весьма оригинальным образом. "Сырой" видеопоток в формате "настоящего" MPEG1/MPEG2 их не устраивает, и они насильно добавляют к нему свой заголовок в формате файла для обмена ресурсами (Resource Interchange File Format, RIFF), явным образом указывающий формат файла. Очевидно, что после таких вмешательств никакой формат воспроизводиться не будет, и попытка проиграть MPEG4 как MPEG1/MPEG2 успехом не увенчается.
Тупик? Вовсе нет! Из всякой ситуации найдутся выходы, и не один, а несколько.
Решение
Решение проблемы MODE2 сводится к записи диска в режиме, отличном от ISO 9660. Самый простой подход состоит в оформлении каждого файла в виде самостоятельного трека, отказавшись от использования файловой системы вообще. Конечно, штатными средствами операционной системы такой диск не прочесть, однако содержимое такого трека без труда может быть "сграблено" на жесткий диск и нормальным образом прочитано оттуда. Единственный минус такого решения заключается в невозможности воспроизвести записанный файл непосредственно на самом диске, что создает определенные проблемы и нервирует пользователей Windows, привыкших открывать всякий файл простым щелчком мыши, без необходимости выполнения каких-либо дополнительных действий. Правда, UNIX-сообщество, умело владеющее клавиатурой, командными файлами и скриптами, решает эту задачу без проблем. Действительно, "грабеж" трека легко автоматизировать (и позже мы покажем, как это делается), причем перед началом проигрывания файла вовсе не обязательно дожидаться извлечения всего трека целиком. Вспомните, ведь и Windows, и UNIX — это многозадачные системы, поэтому и извлечение, и воспроизведение могут выполняться параллельно.
Как вариант, можно записать диск в формате Video CD. Для этого нам потребуется программа, не слишком педантично относящаяся к требованиям Стандарта и послушно записывающая все, что ей указывают. Естественно, если формат записываемых файлов отличен от MPEG1/MPEG2, при попытке их воспроизведения возникнут серьезные проблемы, поскольку операционная система Windows принудительно снабжает их заголовком MPEG1, что вводит штатный проигрыватель в глубокое заблуждение, зачастую граничащее с зависанием. Существует, по меньшей мере, два выхода из этой ситуации. Самый простой и самый универсальный подход состоит в том, чтобы оснастить систему специальным фильтром DirectShow, поддерживающим разбор RIFF/CDXA (parsing). Примером такого фильтра является XCD DirectShow filter/NSIS installer от Alex Noe и DeXT, который может быть найден по следующему адресу: http://peque.homeftp.org/~dext/xcd/riff-cdxa-filter-test6b-nsis.zip. Другой путь заключается в использовании программного обеспечения, игнорирующего "лишний" заголовок (например, Freecom Beatman CD/MP3 Player, см: http://www.vnunet.com/Print/1129594).
Сеанс практической магии в MODE 2
Среди программ, поддерживающих запись диска в режиме MODE 2, в первую очередь следует выделить утилиту CDRWin, пользующуюся неизменной любовью профессионалов. Это — чрезвычайно мощный инструмент, возможности которого ограничены лишь фантазией пользователя, выполняющего запись. Самую свежую версию программы можно скачать, в частности, отсюда: http://www.goldenhawk.com/download_body.htm. Кроме того, пригодится и консольная версия программы, управляемая из командной строки, которая также имеется на сайте http://www.goldenhawk.com.
Процесс прожига диска мы начнем с подготовки исходного файла. Первым и единственным предъявляемым к нему требованием будет выравнивание его длины до целого количества секторов. Пусть длина файла равна 777 990 272 байтам, тогда, чтобы уложиться в целое число 2336-байтных секторов, мы должны либо отрезать 1824 байта от конца файла, либо дописать к нему 512 нулей. Аудио- и видеофайлы безболезненно переносят как усечение своего тела, так и мусор в хвосте. Обе этих операции можно осуществить в любом НЕХ-редакторе, например, HIEW (http://www.softpedia.com/get/Programming/File-Editors/Hiew.shtml). Усечение файлов выполняется очень просто. Открываем файл, запускаем стандартный Windows-калькулятор и, перейдя в инженерный режим, переводим десятичную длину файла в шестнадцатеричный формат:
777990272 - 1824 <ENTER> <b>777988448</b> <F5> <b>2E5F2960</b>
(обычным шрифтом набраны символы, набираемые на клавиатуре, а жирным — ответ калькулятора). Возвращаемся в HIEW, нажимаем <F5>, вводим полученное число (в данном случае:
<b>2E5F2960</b>
) и, подтвердив серьезность своих намерений клавишей <ENTER>, последовательно нажимаем <F3>, <F10> и, наконец, <Y>. Соответственно, заполнение хвоста файла нулями осуществляется так: одновременным нажатием на <Ctrl>+<End> мы перемещаемся в конец файла, а клавишей <F3> переходим в режим редактирования. Теперь дополняем файл нужным количеством нулей. На практике усекать файл намного удобнее, чем расширять. Тот килобайт, который мы от него отрежем, не составит и секунды звучания, поэтому данной потерей легко можно пренебречь.
Переходим ко второму этапу — созданию файла cue sheet, содержащего всю информацию о структуре прожигаемого образа. Типичный файл cue sheet должен выглядеть приблизительно так, как показано в листинге 10.7.
Листинг 10.7. Типичный пример реализации файла cue-sheet
FILE "my_file.dat" BINARY
TRACK 1 MODE2/2336
INDEX 1 00:00:00
Здесь
my_file.dat
— имя записываемого на диск файла,
TRACK 1
— номер трека,
MODE2/2336
— режим записи, a
INDEX 1
— номер индекса внутри файла. Подробнее о синтаксисе файлов cue sheet можно прочесть в документации, прилагаемой к CDRWin.
Вставляем диск CD-R/CD-RW в привод, запускаем CDRWin, нажимаем кнопку Load Cuesheet и указываем путь к только что сформированному файлу. Дождавшись завершения его компиляции, нажимаем кнопку Record Disk, предварительно убедившись, что галочка у опции Raw Mode сброшена (рис. 10.18). Вот, собственно говоря, и все. Несмотря на то, что размер исходного файла намного превышает заявленную емкость диска, процесс прожига протекает без каких-либо проблем.
Рис. 10.18. Запись 800/900 Мбайт диска в режиме MODE 2 средствами CDRWin. Исходные данные могут быть представлены в любом формате, однако штатными средствами операционной системы такой диск не поддерживается
Однако попытка просмотра оглавления только что записанного диска штатными средствами операционной системы ни к чему хорошему не приводит, и нас пытаются убедить в том, что данный диск пуст. Но ведь это не так! Запускаем CDRWin, выбираем Extract Disc/Tracks/Sectors to Image File, и в окне Track Selection видим наш трек TRACK 1 (рис. 10.19). Хотите его проиграть? Установите переключатель Select Track, а в группе Reading Options сбросьте флажок RAW (если этого не сделать, содержимое трека будет читаться в сыром режиме, с перемешиванием полезных данных с заголовками, что никак не входит в наши планы). Выбираем трек, который требуется извлекать, и, выбрав номинальную скорость чтения, нажимаем кнопку START (чтение трека, записанного в MODE 2 на максимальной скорости, зачастую приводит к многочисленным ошибкам).