# Поддерживаемые форматы

Важно разъяснить одну общую ошибку. Когда люди видят файл с расширением `.AVI`, они немедленно заключают, что это - не MPEG файл. Это не так. Во всяком случае не всегда. Супротив популярному мнению такой файл может содержать MPEG видео.

Как видите, кодек — это не то же самое, что и формат файла. Примеры видео кодеков: MPEG1, MPEG2, MPEG4 (DivX), Indeo5, 3ivx. Примеры видео форматов: MPG, AVI, ASF.

В теории, Вы можете поместить OpenDivX видео и MP3 аудио в файл MPG формата. Хотя, большинство плееров не смогут это проиграть, поскольку они ожидают MPEG1 видео и MP2 аудио (в отличие от AVI, в MPG нет нужных полей для описания его видео и аудио потоков). Или Вы можете поместить MPEG1 видео в AVI файл. FFmpeg и MEncoder могут создавать эти файлы.

## Видео форматы

### MPEG файлы

MPEG файлы бывают различных разновидностей:

- MPG: Это наиболее основная форма файлов формата MPEG. Она содержит MPEG1 видео, и MP2 (MPEG-1 layer 2) или реже MP1 аудио.

- DAT: Это почти такой же формат, как MPG, только с другим расширением. Он используется на Video CD. Из-за метода, которым создаются VCD и дизайна Linux'а, DAT файлы не могут проигрываться и копироваться с VCD, как обычные файлы. Для проигрывания Video CD Вы должны использовать `vcd://`.

- VOB: Это формат MPEG файлов на DVD'шниках. Это такой же формат, как и MPG, плюс возможность содержать субтитры и не-MPEG (AC3) аудио. Он содержит кодированное MPEG2 видео и обычно AC3 аудио, но DTS, MP2 и не запакованный LPCM тоже возможны. Читайте секцию DVD!

- TY: Это TiVo MPEG поток. Он содержит как MPEG PES данные аудио и видео потоков, так и дополнительную информацию вроде субтитров. Формат файла - это не программный поток MPEG (MPEG program stream), а некий закрытый формат, созданный TiVo. Более побдробно о формате TiVo можно прочитать на странице TyStudio.

Серии кадров независимо группируются в MPEG файлах. Это значит, что Вы можете разрезать/соединять MPEG фалы стандартными файловыми средствами (такими, как `dd`, `cut`), и он остаётся полностью функциональным.

Одно из основных преимуществ MPG'ов это то, что в них есть поле, описывающее соотношение сторон видео потока. Например, на SVCD содержится видео разрешением 480x480, и заголовок установил его(поле) в 4:3, поэтому это будет проигрываться на 640x480. В AVI файлах такого поля нет, поэтому они должны быть масштабированы при кодировании или проигрываться с опцией `-aspect`.

### AVI файлы

Разработанный Microsoft'ом AVI (Audio Video Interleaved [Аудио Видео 'Слоёные']) - это широко распространённый многоцелевой формат, в настоящий момент чаще всего применяемый для MPEG4 (DivX и DivX4) видео. У него много известных недостатков и недочётов (например в потоках). Он поддерживает 1 видео поток и от 0 до 99 аудио потоков и может быть не более 2 Гб, хотя существует расширениеOpenDML, допускающее большие файлы. В настоящий момент Microsoft сильно отговаривает от его применения и советует использовать ASF/WMV. Никого это не волнует.

Существует хак[hack], позволяющий AVI файлам содержать Ogg Vorbis аудио потоки, но делает их несовместимыми со стандартными AVI. MPlayer поддерживает воспроизведение таких файлов. Перемещение также осуществлено, но затруднено плохо закодированными файлами с запутанными заголовками. К сожалению, эта проблема проявляется у единственного кодировщика, способного создавать такие файлы - NanDub.

DV камеры создают сырые DV потоки, которые средства DV захвата превращают в AVI файлы двух типов. AVI'шники либо будут содержать разделённые аудио и видео потоки, которые MPlayer может воспроизводить, или сырой DV поток, поддержка которого находится в стадии разработки.

Существует два класса AVI файлов:

- 'Слоёные'[Interleaved]: Аудио и видео содержимое 'переплетается'. Это стандартное применение. Рекомендовано и используется чаще всего. Некоторые программы создают слоёные AVI'шники с плохой синхронизацией. MPlayer определяет это как слоёный файл, и затем теряет A/V синхронизацию, вероятно при перемещении по файлу. Такие файлы должны проигрываться как не слоёные (с опцией `-ni`).

- Не слоёные: Сначала идёт весь видео поток, затем весь аудио поток. Это требует огромного количества перемещений по файлу, что делает проигрывание таких файлов по сети или с CD-ROM затруднительным.

MPlayer поддерживает два типа синхронизации для AVI файлов:

- основанный на bps[битпотоке]: Он основан на битпотоке/потоке сэмплов для видео/аудио потоков. Этот метод применяется большинством плееров, включая avifile и Windows Media Player. Файлы с испорченными заголовками и файлы созданные с VBR аудио в не VBR-совместимом кодировщике приведут к A/V десинхронизации при использовании этого метода (по большей части при перемещении по фильму).

- основанный на слоёности: Он не использует значение битпотока из заголовка, вместо этого используется относительная позиция слоёных кусков аудио и видео, что делает воспроизводимыми плохо закодированные с VBR аудио.

Допустимы любые аудио и видео кодеки, но заметьте, что VBR аудио не очень хорошо поддерживается большинством плееров. Формат файла делает возможным использование VBR аудио, но многие плееры ожидают CBR, поэтому они выходят из строя с VBR. VBR редко встречается и Microsoft'овские AVI спецификации описывают только CBR аудио. Я также заметил, что большинство кодировщиков создают плохие файлы при использовании VBR аудио. Известно только два исключения: NanDub и MEncoder.

### ASF/WMV файлы

ASF (Active Streaming Format) исходит от Microsoft. Они разработали два варианта ASF, v1.0 и v2.0. v1.0 используется их медиа средствами (Windows Media Player и Windows Media Encoder) и сильно засекречены. v2.0 опубликована и запатентована :). Конечно они различаются, совсем нет никакой совместимости (это просто другая правовая игра). MPlayer поддерживает только v1.0, поскольку никто никогда не видел v2.0 файлов :). Заметьте, что ASF файлы теперь появляются с расширениями `.WMA` или `.WMV`.

### QuickTime/MOV файлы

Эти форматы файлов были разработаны в Apple и могут содержать любой кодек, CBR или VBR. Обычно у них расширение `.QT` или `.MOV`. Заметьте, что поскольку MPEG4 Group выбрала QuickTime в качестве рекомендованного формата для MPEG4, их MOV файлы идут с расширением `.MPG` или `.MP4` (Интересно, что видео и аудио потоки в этих файлах - настоящие MPG и AAC файлы. Вы даже можете извлечь их, используя опции `-dumpvideo` и `-dumpaudio`.).

### VIVO файлы

MPlayer успешно демультиплексирует VIVO форматы файлов. Огромный недостаток этого формата заключается в том, что в нем нет ни индексных блоков, ни фиксированного размера пакетов или байтов синхронизации и в большинстве файлов нет даже ключевых кадров[keyframes], так что забудьте о перемещении по файлу!

Видео кодек в VIVO/1.0 файлах - это стандартный h.263. Видео кодек в VIVO/2.0 файлах - это модифицированный, нестандартный h.263v2. Аудио в обоих форматах одинаковое, это может быть g.723 (стандарт), или Vivo Siren.

### FLI файлы

FLI это очень старый формат, используемый Autodesk Animator, но это типичный формат для коротких анимационных роликов в сети. MPlayer демультиплексирует и декодирует FLI фильмы и даже способен перемещаться в этих файлах (полезно при цикличном проигрывании с опцией `-loop`). Во FLI файлах нет ключевых кадров[keyframes], поэтому некоторое время после перемещения картинка будет "грязной".

### RealMedia (RM) файлы

Да, MPlayer может читать (демультиплексировать) RealMedia (`.rm`) файлы.

### NuppelVideo файлы

NuppelVideo - это средство захвата с ТВ (AFAIK:). MPlayer может читать его `.NUV` файлы (только NuppelVideo 5.0). Эти файлы могут содержать несжатые YV12, YV12+сжатые RTJpeg, YV12 сжатые RTJpeg+lzo и YV12 + сжатые lzo кадры. MPlayer декодирует (и также кодирует MEncoder 'ом в MPEG4 (DivX) и т. д.!) все это. Перемещение работает.

### yuv4mpeg файлы

yuv4mpeg / yuv4mpeg2 это формат файлов, используемых в программах mjpegtools. Вы можете захватывать, изготовлять, отфильтровывать или кодировать видео в этот формат, используя эти средства. В действительности формат файла - последовательность несжатых YUV 4:2:0 кадров.

### FILM фильмы

Этот формат используется в старых Sega Saturn CD-ROM играх.

### RoQ файлы

RoQ файлы - это мультимедийные файлы используемые в некоторых ID играх, например Quake III и Return to Castle Wolfenstein.

### OGG/OGM файлы

Это новый формат файлов от Xiphophorus. Он может содержать любой видео или аудио кодек, CBR или VBR. Вам понадобятся, чтобы libogg и libvorbis были установлены до компиляции MPlayer'а, чтобы иметь возможность проигрывать эти файлы.

### SDP файлы

SDP - это IETF стандартный формат для описания видео и аудио RTP потоков. (требуется "LIVE555 Streaming Media".)

### PVA файлы

PVA - это похожий на MPEG формат, используемый в программах DVB TV карт (например: MultiDec, WinTV под Windows.

### NSV files

NSV (NullSoft Video) — это формат файла, используемый Winamp'ом для потокового фудио и видео. Видео бывает VP3, VP5 или VP6, а аудио — MP3, AAC или VLB. Версии NSV, в которых только аудио, имеют расширение `.nsa`. MPlayer воспроизводит как NSV потоки, так и файлы. Пожалуйста, заметьте, что большая часть файлов с сайта Winamp использует VLB аудио, которое ещё не может декодироваться. Более того, для потоков с этого сайта необходим ещё один уровень депакетизации, который ещё нужно написать (эти файлы всё равно невозможно проиграть, поскольку они используют VLB аудио).

### Файлы Matroska

Matroska это открытый формат файла. подробнее читайте на официальном сайте.

### NUT файлы

NUT это формат файла, разработанный ребятами из MPlayer и FFmpeg. Оба проекта поддерживают его. Подробности читайте на официальном сайте.

### GIF файлы

GIF формат - это типичный формат для веб графики. Существуют 2 версии спецификаций GIF, GIF87a и GIF89a. Основная разница заключается в том, что GIF89a допускает анимацию. MPlayer поддерживает оба формата, используя libungif или другую libgif-совместимую библиотеку. Не анимированные GIF'ы будут показываться как однокадровое видео. (Используйте опции `-loop` и `-fixed-vo`, чтобы показать их подольше.)

В настоящий момент MPlayer не поддерживает перемещение внутри GIF файлов. У GIF файлов не обязательно фиксированный размер кадра или фиксированная частота кадров. Наоборот, у каждого кадра свой собственный размер и должен выводиться в некотором поле фиксированного размера. Частота кадров контролируется дополнительным блоком перед каждым кадром, который определяет задержку перед следующим кадром в сотых долях секунды.

Стандартные GIF файлы содержат 24-битные RGB кадры с не более чем 8-битовой индексированной палитрой. Кадры обычно сжаты по LZW алгоритму, хотя некоторые GIF кодировщики создают несжатые кадры, чтобы избежать проблем с патентом на LZW сжатие.

Если в Вашем дистрибутиве нет libungif, скачайте копию на домашней странице libungif. Технические подробности см. в GIF89a спецификациях.

## Аудио форматы

MPlayer - это проигрыватель фильмов, а не медиа плеер, хотя он может проигрывать некоторые форматы аудио файлов (они перечислены ниже). Это не является рекомендуемым применением MPlayer'а, Вам лучше использовать XMMS.

### MP3 файлы

У Вас могут возникнуть проблемы при проигрывании некоторых MP3 файлов, которые MPlayer будет неверно определять, как MPEG'и и проигрывать неправильно или вообще никак. Это не может быть исправлено без потери поддержки некоторых плохих MPEG файлов и поэтому всё останется как есть в обозримом будущем. Опция `-demuxer`, описанная на man странице, может Вам помочь в этом случае.

### OGG/OGM файлы (Vorbis)

Требуются правильно установленные libogg и libvorbis.

### CD аудио

MPlayer может использовать cdparanoia (библиотеку) для проигрывания CDDA (Audio CD[Аудио CD]). В задачи этого раздела не входит описание возможностей библиотеки cdparanoia.

См. на man странице описание опции `-cdda`, которая может использоваться для передачи параметров в библиотеку cdparanoia.

### XMMS

MPlayer может использовать XMMS расширения для ввода, чтобы проигрывать множество форматов файлов. Существуют расширения для проигрывания мелодий из SNES игр, SID мелодий (из Commodore 64), множества Amiga форматов, .xm, .it, VQF, musepack, Bonk, shorten и множества других. Все это Вы можете отыскать на странице расширений XMMS для ввода.

Для использования этих возможностей Вам нужно установить XMMS и скомпилировать MPlayer c соответствующей опцией: `./configure --enable-xmms`. Если это не работает, Вам может понадобиться настроить пути к библиотеке и расширениям непосредственно, используя опции `--with-xmmsplugindir` и `--with-xmmslibdir`.