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

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

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

Если у Вас есть не упомянутый здесь 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.