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. В меню выберите Graph->Insert 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 проигрывает файл, проверив File->Properties->Advanced. Если нет, Вам не повезло. Попробуйте угадать (например, ищите TrueMotion).

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

Замечание

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

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

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