7.1. Видео кодеки
Пред. | Глава 7. Поддерживаемые кодеки | След.

## 7.1. Видео кодеки

Таблица статуса кодеков содержит полный, ежедневно обновляющийся список всех поддерживаемых кодеков. Некоторые бинарные кодеки, которые можно использовать в MPlayer, доступны в разделе закачки нашего сайта.

Наиболее важные кодеки:

- MPEG1 (VCD) и MPEG2 (DVD) видео

- "родные" декодеры для всех вариантов DivX, 3ivX, M$ MPEG-4 v1, v2 и других вариантов MPEG-4.

- "родной" декодер для Windows Media Video 7/8 (WMV1/WMV2), и Win32 DLL декодер для Windows Media Video 9 (WMV3), оба используются в `.wmv` файлах

- "родной" Sorenson 1 (SVQ1) декодер

- "родной" Sorenson 3 (SVQ3) декодер

- 3ivx v1, v2 декодер

- Cinepak и Intel Indeo кодеки (3.1,3.2,4.1,5.0)

- MJPEG, AVID, VCR2, ASV2 и другие аппаратные форматы

- VIVO 1.0, 2.0, I263 и другие h263(+) варианты

- FLI/FLC

- RealVideo 1.0 & 2.0 из `libavcodec`, и RealVideo 3.0 & 4.0 кодеки, используя библиотеки RealPlayer

- "родной" декодер для HuffYUV

- Различные старые, простые, похожие на RLE форматы

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

### 7.1.1. FFmpeg/libavcodec

FFmpeg содержит `libavcodec` - ведущую библиотеку аудио и видео кодеков с открытым исходным кодом. Она способна декодировать большинство мультимедиа форматов, обычно быстрее альтернатив, и периодически добавляется поддержка оставшихся. Это декодер по-умолчанию для большинства кодеков, поддерживаемых MPlayer. Кодирование также возможно для некоторых форматов и поддерживается в Mencoder.

Полный список поддерживаемых видео и аудио кодеков доступен на домашней странице FFmpeg.

MPlayer содержит `libavcodec`. Просто запустите `./configure` и компилируйте как обычно.

### 7.1.2. Xvid

Xvid свободный, MPEG-4 ASP совместимый видео кодек, особенностями которого являются двухпроходное кодирование и полная поддержка MPEG-4 ASP, делающая его намного более эффективным, чем хорошо известный DivX. Он предоставляет видео отменного качества и хорошую производительность, в силу оптимизаций под большинство современных процессоров.

Он начался как ответвление OpenDivX кодека. Это произошло, когда ProjectMayo сделал исходный код OpenDivX закрытым DivX4, и разработчики OpenDivX не из ProjectMayo разозлились, и взялись за Xvid. Поэтому у обоих проектов общие корни.

Имейте в виду, что Xvid не нужен для декодирования Xvid-кодированного видео. `libavcodec` используется по-умолчанию, т.к. обеспечивает более высокую скорость.

Установка `Xvid`

Как и большинство ПО с открытым исходным кодом, он доступен как в виде официальных релизов, так и в виде CVS версии. Как правило, CVS версия достаточно стабильна для использования, т.к. в большинстве случаев ее особенностью является отсутствие ошибок, присутствующих в релизах. Далее описывается как заставить работать `Xvid` CVS с MEncoder'ом (необходимы, как минимум, autoconf 2.50, automake и libtool):

1.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login

2.     cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore

3.     cd xvidcore/build/generic

4.     ./bootstrap.sh

5.     ./configure

   Вам может потребоваться добавить некоторые опции (посмотрите вывод ./configure --help).

6.     make && make install

7. Если Вы указали `--enable-divxcompat`, скопируйте `../../src/divx4.h` в `/usr/local/include/`.

8. Перекомпилируйте MPlayer с `--with-xvidlibdir=`/path/to/`libxvidcore.a` `--with-xvidincdir=`/path/to/`xvid.h`.

### 7.1.3. `x264`

#### 7.1.3.1. Что такое `x264`?

`x264` - это библиотека для создания видеопотоков H.264. Она не завершена на 100%, но, по крайней мере, имеет поддержку большинства возможностей H.264, влияющих на качество. В спецификации H.264 присутствует множество дополнительных возможностей, которые сами по себе никак не влияют на качество видео и до сих в `x264` не реализованы.

возможности кодера

- CAVLC/CABAC (Контекстнозависимое адаптивное бинарное арифметическое кодирование / Контестнозависимое адаптивное кодирование с переменной длиной)

- Кадры с несколькими ссылками

- Базовые (I-) кадры: все типы макроблоков (16x16, 8x8 и 4x4 со всеми видами предсказания)

- Предсказуемые (P-) кадры: все дробления (от 16x16 до 4x4)

- Двунаправленные (B-) кадры: дробления от 16x16 до 8x8 (включая SKIP/DIRECT)

- Управление потоком: постоянный квантователь, постоянный битпоток, одинарный или многопроходный ABR, опциональный VBV

- Обнаружение усечения изображения

- Адаптивное расположение B-кадров

- B-кадры как ссылки или в произвольном расположении кадров

- Адаптивные пространственные преобразования 8x8 и 4x4

- Режим кодирования без потерь

- Возможность задания пользовательских матриц квантования

- Параллельное кодирование разных блоков

- Интерлейсинг

#### 7.1.3.2. Что такое H.264?

H.264 - это одно из названий нового цифрового кодека, совместно разрабатываемого ITU и MPEG. Названия "ISO/IEC 14496-10" или "MPEG-4 Part 10" тоже являются корректными, но чаще его называют "MPEG-4 AVC" или просто "AVC".

Как его ни называй, но H.264 стоит попробовать, поскольку он дает то же качество, что и MPEG-4 ASP, но при битрейте меньшем на 5%-30%. Конкретный результат зависит как от исходного материала, так и от кодировщика. Выигрыш не дается просто так: декодирование потока H.264, похоже, имеет существенно повышенные требования к CPU и памяти. В частности, на 1733 MHz Athlon декодирование H.264 потока в 1500кбит/с с DVD-разрешением использует около 35% CPU. Для сравнения, декодирование 1500кбит/с потока MPEG4-ASP с DVD-разрешением требует около 10% CPU. Это означает, что для большинства пользователей практически не может быть и речи о декодировании потоков высокого разрешения. Также это значит, что даже скромный DVD рип может время от времени заикаться на процессорах слабее 2.0 GHz или около того.

По крайней мере, с `x264` требования для кодирования не слишком велики по сравнению с MPEG4-ASP. В частности, на 1733 MHz Athlon кодирование обичного DVD будет идти со скоростью 5-15 fps.

Объяснять все тонкости H.264 не является целью этого документа, но если вас интересует краткий обзор, вы можете прочесть The H.264/AVC Advanced Video Coding Standard: Overview and Introduction to the Fidelity Range Extensions.

#### 7.1.3.3. Как мне посмотреть H.264 при помощи MPlayer?

MPlayer использует H.264 декодер библиотеки `libavcodec`. `libavcodec` получила мало-мальски пригодную для использования возможность декодирования H.264 где-то в июле 2004, однако, с того времени было внесено множество серьезных изменений и улучшений, как с точки зрения поддерживаемых функциональных возможностей, так и улучшенного использования CPU. Для определенности: использование свежей версии Subversion - всегда хорошая идея.

Если нужен быстрый и простой способ узнать какие свежие изменения, относящиеся к H.264, были сделаны в `libavcodec`, Вам следует иметь ввиду Веб-интерфейс к репозиторию FFmpeg Subversion.

#### 7.1.3.4. Как кодировать видео, используя MEncoder и `x264`?

Если у вас установлен клиент subversion, последнюю версию x264 можно загрузить следующей командой:

    svn co svn://svn.videolan.org/x264/trunk x264

Исходный код MPlayer обновляется всякий раз при изменении API `x264`, так что предлагается использовать Subversion версию MPlayer'а. возможно, ситуация изменится с выходом "релиза" `x264` (если он будет). В данный момент `x264` следует рассматривать как очень нестабильный, в свете постоянного изменения интерфейса программирования.

`x264` собирается и устанавливается как обычно:

    ./configure && make && sudo make install

Это установит libx264.a в /usr/local/lib, а x264.h - в /usr/local/include. Сборка MPlayer при установленных в стандартные каталоги библиотеке и заголовочном файле `x264` очень проста. Просто запустите стандартное:

    ./configure && make && sudo make install

Скрипт `./configure` сам определит, выполнены ли необходимые требования для `x264`.

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