Audio Video Interleave

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Audio Video Interleave
Расширение

.avi

MIME-тип

video/vnd.avi, video/avi, video/msvideo и video/x-msvideo

Разработчик

Microsoft

Опубликован

1992[1]

Тип формата

медиаконтейнер

Содержит

Аудио, видео

Расширен из

RIFF[2]

Audio Video Interleave (сокращённо AVI; букв. «чередование аудио и видео») — RIFF-медиаконтейнер, впервые использованный Microsoft в 1992 году в пакете Video for Windows.

Формат файлов с расширением AVI может содержать видео- и аудиоданные, сжатые с использованием разных комбинаций кодеков, что позволяет синхронно воспроизводить видео со звуком. Файл AVI может содержать различные виды компрессированных данных (например, DivX-видео + WMA-аудио или Indeo-видео + PCM-аудио), в зависимости от того, какой кодек используется для кодирования/декодирования. Как и DVD, файлы AVI поддерживают многопотоковое аудиовидео.

Формат файла[править | править вики-текст]

Все AVI файлы включают в себя два обязательных LIST chunk’а, которые определяют формат и данные потока. AVI файлы могут также включать индекс chunk. Этот дополнительный chunk определяет расположение видеоданных в файле. Типичная структура AVI-файла:

RIFF ('AVI ' LIST ('hdrl' <заголовок>) LIST ('movi' <видео>) ['idx1' <индекс>])

LIST hdrl[править | править вики-текст]

Chunk, содержащий заголовок AVI файла и заголовки потоков данных. Типичная структура:

LIST ('hrdl' 'avih' (<заголовок AVI файла>) LIST ('strl' <заголовок потока 1>) LIST ('strl' <заголовок потока 2>) LIST ('odml' <расширенный заголовок AVI файла>))

Основной заголовок файла[править | править вики-текст]

Файл начинается с основного заголовка. В AVI файлах этот заголовок определяется chunk’ом с FOURCC 'avih'. Заголовок содержит глобальную информацию для всего файла, такую, как число потоков в файле, ширина и высота видеопотока. Основной заголовок имеет следующую структуру:

typedef struct {
    DWORD dwMicroSecPerFrame;
    DWORD dwMaxBytesPerSec;
    DWORD dwReserved1;
    DWORD dwFlags;
    DWORD dwTotalFrames;
    DWORD dwInitialFrames;
    DWORD dwStreams;
    DWORD dwSuggestedBufferSize;
    DWORD dwWidth;
    DWORD dwHeight;
    DWORD dwReserved[4];
} MainAVIHeader;

dwMicroSecPerFrame — определяет количество микросекунд между кадрами. Это значение общее для всего файла.

dwMaxBytesPerSec — указывает примерную максимальную скорость передачи данных файла. Это значение указывает количество байт в секунду, которые система должна обрабатывать.

dwFlags — содержит перечень свойств видеофайла. Допустимы следующие значения:

Флаг Описание
AVIF_HASINDEX В файле присутствует 'idx1' chunk.
AVIF_MUSTUSEINDEX Указывает, что индекс, а не физическое расположение блоков в файле, должны быть использованы, чтобы определить порядок представления данных.
AVIF_ISINTERLEAVED Указывает на чередование аудио и видео данных.
AVIF_WASCAPTUREFILE
AVIF_COPYRIGHTED Указывает, что файл содержит защищенные авторскими правами данные и программное обеспечение.

dwTotalFrames  — указывает общее количество кадров в файле.

dwStreams — указывает количество потоков в файле. Например, файл с аудио и видео имеет 2 потока.

dwSuggestedBufferSize — определяет рекомендуемый размер буфера для чтения файла. Этот размер должен быть достаточно большим, чтобы содержать крупнейший chunk. Если установленное значение равно нулю или слишком мало, программа для воспроизведения файла перераспределит память во время работы, что снизит производительность.

dwWidth — задает ширину AVI файла.

dwHeight[3] — задает высоту AVI файла.

Заголовки потоков[править | править вики-текст]

Заголовок потока имеет следующую структуру:

typedef struct {
  FOURCC fccType;
  FOURCC fccHandler;
  DWORD dwFlags;
  DWORD dwPriority;
  DWORD dwInitialFrames;
  DWORD dwScale;
  DWORD dwRate;
  DWORD dwStart;
  DWORD dwLength;
  DWORD dwSuggestedBufferSize;
  DWORD dwQuality;
  DWORD dwSampleSize;
  RECT rcFrame;
} AVIStreamHeader;

Расширенный заголовок файла[править | править вики-текст]

Расширенный заголовок файла имеет следующую структуру:

typedef struct {
  DWORD dwTotalFrames;
} ODMLExtendedAVIHeader;

LIST movi[править | править вики-текст]

Индекс[править | править вики-текст]

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]