ДЛЯ НАЧАЛА: ЖИВЫЕ

- Knoppix -
Линукс за пять минут
- Puppy Linux -
Хороший друг


ДЛЯ ДЕЛА: ПРОФИ

- Debian -
Он такой один
- Linux Mint -
С родинкой на щеке!
- CentOS -
Копейка рубль бережёт!
- Fedora -
По следам Red Hat
- Ubuntu Linux -
Мы одной крови!
- Mageia -
Красота и удобства
- openSUSE -
Настоящее немецкое качество
- Slackware -
Линукс из кубиков
- ALT Linux -
Что русскому хорошо





ДЛЯ ДЕЛА: РОЛЛЫ

- ArchLinux -
Гениальное - просто!
- PCLinuxOS -
Просто линукс
- Aptosid -
Почувствуй силу!


ДЛЯ ДЕЛА: СОБЕРИ САМ

- Gentoo -
Каждому своё
- LinuxFromScratch -
Линукс с нуля


ДЛЯ ДЕЛА: ЛЁГКИЕ

- DeLiCate -
Старость в радость!
- SLAX -
Тысяча и один модуль


ЗАЩИТА

- OpenWall -
Не стучите, закрыто!
- Kali -
Вам, хакеры!


ПРИЛОЖЕНИЯ

- Planet CCRMA -
Работа со звуком
- VegaStrike -
Каждому по планете!


ЭКСПЕРИМЕНТ

- коЛинуксы -
Не выходя из Виндоус
- GoboLinux -
Очевидно и вероятно
- ReactOS -
Освободите Виндоус!


РОДНЯ

- BSD-семейство -
На плечах гигантов
- OpenIndiana -
До звёзд рукой подать


АРХИВ (2003-2016)
ФОРУМ




НАШИ ПРОЕКТЫ

MATRIX GL
ПОЛЕЗНЫЕ СОВЕТЫ
ПИНГВИН В КАРМАНЕ
ЗАКЛАДКИ
СТАТЬИ
КОНТАКТЫ


ПОМОЧЬ






Личный архив ЕЗ

Как добавить новые кодеки в MPlayer (по мотивам Understanding MPlayer's etc/codecs.conf File)

Konstantin Lepikhov, ссылка на оригинал

Введение

------------

Одна из замечательных особенностей MPlayer'а - очень гибкая

архитектура кодеков, которая позволяет ему использовать при

проигрывании собственные кодеки, так же, как и открытые библиотеки, DLL

от Win32 и бинарные модули от XAnim (а еще Real Multimedia и много еще

чего

Блоки кодеков могут располагаться а произвольном порядке, т.к это

не важно для MPlayer'а. Но все таки, лучше располагать их так, чтобы

потом самому было понятно

(Вообще-то любые изменения, вносимые в кодеки *требуют* обновления

codecs.conf и после этого MPlayer перестает воспринимать старую версию

codecs.conf. Не рекомендуется изменять эту строку, до тех пор пока вы

точно не знаете, что делаете.)

Видео кодеки

------------------

А теперь давайте пробежимся по примерам. Вот простой пример блока видео кодека:

Код: ; this is a comment

format 0x34616d69 ; "ima4" (MOV files)

Код: release 20020520

Это полностью поддерживаемый и работающий видео кодек. Ключевое

слово "videocodeс", говорит от том, что это начало описания нового

видео кодека. "indeo5ds" - это уникальное имя кодека, который

использует MPlayer.

Следующая строка начинается с ключего слова "info", которое определяет обычный текстовый комментарий для этого кодека.

Ключевое слово "status" определяет функциональный статус этого

кодека. Сейчас MPlayer понимает 4 статус-уровня: working, buggy,

crashing, untested.

Следущая строка - это список 4х буквенных кодов (FOURCCs), которые

связаны с этим кодеком. Может быть больше одного FOURCC в строке

fourcc, если они разделены запятыми. Также может быть несколько строк

fourcc в блоке, определящем кодек.

Ключевое слово "driver" связывает этот кодек с внутренним модулем

декодера MPlayer'а. Например, у MPlayer есть модуль "dshow", который

обрабатывает данные, закодированные этим кодеком.

Ключевое слово "dll" указывает, какой Win32 или XAnim модуль должен

быть загружен, чтобы оперировать этим media типом данных. Это ключевое

слово обычно используется в сочетании с dshow, vfm, acm и xanim

драйверами, т.к они используют закрытые бинарные модули.

Ключевое слово "guid" определяет 16-битный Microsoft GUID, который используют некоторые media файлы, чтобы обозначить кодек.

Ключевое слово "out" определяет, в какой формат выходных данных

можно декодировать этот кодек. Как и с "fourcc", может быть несколько

out строк и несколько форматов, разделеных запятыми на одной строке.

Выходные форматы должны быть расположены по приоритетности.

Аудио Кодеки

------------------

Простой пример сравнительно полнофункционального работающего кодека:

Код: videocodec

indeo5ds

info "Intel Indeo 5"

status working

fourcc IV50,iv50

driver dshow

dll "ir50_32.dll"

guid 0x30355649, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x7

out YV12

out YUY2

out BGR32,BGR24,BGR16,BGR15

Многие ключевые слова - из videocodec-секции, так что мы не будем

их снова описывать. Но есть и такие, которые мы еще не видели. Это

ключевое слово "comment", по смыслу похожее на "info".

Ключевое слово "format" выполняет такую же функцию, как и строка

fourcc. Но некоторые типы файлов (в основном AVI) определяют аудио

форматы 16-битным номером, в отличие от 32-битных FOURCC's, поэтому

необходимо использовать такое разделение. Но, как показано в этом

примере, FOURCCs могут быть использованы в строке format, т.к они могут

быть переведены в hex представление. Это важное замечание, т.к подобное

может пригодится, если FOURCC содержит пробелы (например кодек "rle "

от Apple).

Ключевое слово "flags" определяет дополнительные возможности этого

кодека. На сегодняшний день, это только флаг seekable (т.е с

возможностью поиска).

О теории к практике

--------------------------

А теперь попробуем самостоятельно добавить новый кодек в MPlayer.

Для примера, возмем Cool codec, которым сейчас сжимают некоторые

фильмы.

Исходные данные:

- под win32 этот кодек работает через закрытый драйвер, который понимает mplayer от windows.

- параметры он хранит в реестре, видимо у него есть GUID. Т.е

внешне все очень похоже на directshow codecs. Также алгоритм сжатия -

mpeg4, только несколько видоизменнный.

Что это нам дало? Перед нами кодек, похожий на dshow, работающий

так же, как и он, но только MPlayer его не понимает. Почему? Т.к он

ничего не знает про fourcc. Если посмотреть файл, пожатый этим кодеком,

то можно увидеть, что внутри вместо привычных DIV3 fourcc'ов там

какой-то странный COL1. Ну что ж, это тоже подходит

теперь можем спокойно смотреть такие фильмы, и никакие закидоны программеров не страшны.

P.S К сожалению не со всеми кодеками проходит такой номер. Если у

него изменился бы еще и GUID, то пришлось бы попотеть, ища его в

бескрайних просторах реестра

При частичной или полной перепечатке, переводе, переработке материалов сайта ссылка на Knoppix.ru обязательна.
(c) Knoppix.ru 2003 - 2016
Код:

audiocodec mp3

info "MPEG layer-2, layer-3"

status working

comment "Optimized to MMX/SSE/3Dnow!"

format 0x50

format 0x55

format 0x33706d2e ; ".mp3" CBR/VBR MP3 (MOV

files)

format 0x5500736d ; "ms0x55" older mp3 fcc (MOV

files)

driver mp3lib

dll "mp3lib (mpglib)"

flags seekable

Код:

videocodec ffdivx

info "FFmpeg DivX ;-) (MS MPEG-4 v3)"

status working

fourcc MPG3,mpg3 div3

fourcc MP43,mp43 div3 ; M$ MPEG4 v3

(fourcc mapping to div3)

fourcc DIV5,div5 div3 ; DivX 3.20

fourcc DIV6,div6 div4 ; -||-

fourcc DIV3,div3,DIV4,div4

fourcc AP41 div3 ; AngelPotion

stuff

fourcc COL1,col1,COL0,col0 ; Cool codec (based on mpg4ds32.ax)

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- это то, что добавили.

driver ffmpeg

dll msmpeg4

out YV12,I420,IYUV