7.3. КАК извлечь кодек из Win32
Пред. | Глава 7. Поддерживаемые кодеки | След.

## 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.

Пред. | Уровень выше | След.
7.2. Аудио кодеки | Начало | Глава 8. TV