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

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

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

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

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

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

Основной заголовок файла Файл начинается с основного заголовка. В AVI-файлах этот заголовок определяется блоком с 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; } MainAVIHeader; dwMicroSecPerFrame — определяет количество микросекунд между кадрами. Это значение общее для всего файла.

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

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

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

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

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

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

dwHeight — задает высоту 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;

Примечания

Ссылки Описание технологии AVI авторства John’a P. McGowan’a Документация формата RIFF-AVI Список кодеков FourCC

Категория:Медиаконтейнеры Категория:Видеостандарты Категория:Форматы файлов