Audio Video Interleave

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

.avi

MIME

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

Разработчик

Microsoft

Тип формата

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

Содержит

Аудио, Видео

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 Указывает, что файл содержит защищенные авторскими правами данные и программное обеспечение.

Заголовки потоков[править | править исходный текст]

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

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[править | править исходный текст]

Индекс[править | править исходный текст]

Ссылки[править | править исходный текст]