7.3. КАК извлечь кодек из Win32

7.3.1. VFW кодеки

VFW (Video for Windows[Видео для Windows]) - это старые Видео API для Windows. У этих кодеков расширения .DLL или (реже) .DRV. Если MPlayer не может проигрывать Ваш AVI с такого рода сообщением:

UNKNOWN video codec: HFYU (0x55594648)

Это значит, что Ваш AVI закодирован кодеком с fourcc HFYU (HFYU = HuffYUV кодек, DIV3 = DivX Low Motion, и т.п.). Теперь, когда Вы это знаете, Вы должны найти DLL, которую Windows загружает для проигрывания этого файла. В нашем случае, в файле system.ini есть эта информация, в этой строке:

VIDC.HFYU=huffyuv.dll

Значит, Вам нужен файл huffyuv.dll. Заметьте, что аудио кодеки используют префикс MSACM:

msacm.l3acm=L3codeca.acm

Это MP3 кодек. Теперь у Вас есть вся необходимая информация (fourcc, файл с кодеком, пример AVI), представьте на рассмотрение запрос о поддержке Вашего кодека по почте и загрузите эти файлы на FTP сайт: ftp://upload.mplayerhq.hu/MPlayer/incoming/<codecname>/

Замечание

Под Windows NT/2000/XP ищите эту информацию в реестре, например, ищите "VIDC.HFYU". Чтобы узнать, как это делать, см. ниже старый метод DirectShow.

7.3.2. DirectShow кодеки

DirectShow - это более новый Video API, которые даже хуже, чем его предшественник. Все сложнее с DirectShow, поскольку

  • system.ini не содержит необходимую информацию, вместо этого она хранится в реестре и

  • нам нужен GUID этого кодека.

Новый Метод:

Используя Microsoft GraphEdit (быстро)

  1. Получите GraphEdit или из DirectX SDK или doom9.

  2. Запустите graphedit.exe.

  3. В меню выберите GraphInsert Filters.

  4. Щёлкните DirectShow Filters.

  5. Выберите нужное имя кодека и щёлкните по нему.

  6. В поле DisplayName обратите внимание на текст в фигурных скобках после обратного слэша и выпишете их (пять разделённых дефисами блоков, GUID).

  7. Бинарный файл кодека - это файл, указанный в поле Filename.

Замечание

Если там нет Filename и DisplayName содержит что-то в духе device:dmo, то это - DMO-Кодек.

Старый метод:

Сделайте глубокий вдох и начните искать в реестре...

  1. Запустите regedit.

  2. Нажмите Ctrl-F, отключите первые две галочки и включите третью. Наберите fourcc Вашего кодека (например, TM20).

  3. Вы должны увидеть поле, содержащее путь и имя файла (например, C:\WINDOWS\SYSTEM\TM20DEC.AX).

  4. Теперь, когда у Вас есть файл, нам нужен GUID. Попробуйте поискать снова, но теперь ищите имя кодека, а не fourcc. Это имя может быть получено, когда Media Player проигрывает файл, проверив FilePropertiesAdvanced. Если нет, Вам не повезло. Попробуйте угадать (например, ищите TrueMotion).

  5. Если GUID найден, Вы должны видеть поля FriendlyName и CLSID. Выпишите 16-ти байтовый CLSID, это GUID, который нам нужен.

Замечание

Если поиск не удаётся, попробуйте включить все галочки. Вы можете получить ложные значения, но Вам может повести...

Теперь у Вас есть вся необходимая информация (fourcc, GUID, файл с кодеком, пример AVI), представьте на рассмотрение запрос о поддержке Вашего кодека по почте и загрузите эти файлы на FTP сайт: ftp://upload.mplayerhq.hu/MPlayer/incoming/<codecname>/

Если вы хотите добавить кодек самостоятельно, прочтите DOCS/tech/codecs.conf.txt.