Audio Video Interleave

Audio Video Interleave
Изображение логотипа
Расширение .avi[1]
MIME-тип video/vnd.avi[2][3]
Разработчик Майкрософт[4]
Опубликован 1992[5]
Тип формата медиаконтейнер
Содержит Аудио, видео
Расширен из RIFF[6]

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

Файлы с расширением AVI могут содержать видео- и аудиоданные, сжатые с использованием разных комбинаций кодеков, что позволяет синхронно воспроизводить видео со звуком. Файл AVI может содержать различные виды компрессированных данных (например, DivX-видео + WMA-аудио или Indeo-видео + PCM-аудио), MP3-аудио в зависимости от того, какой кодек используется для кодирования/декодирования. Как и 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[4];
} MainAVIHeader;

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

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

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

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

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

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

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

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

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

Примечания

  1. http://www.iana.org/assignments/wave-avi-codec-registry/wave-avi-codec-registry.xml
  2. http://fileformats.archiveteam.org/wiki/AVI
  3. Fleischman E. WAVE and AVI Codec Registries (англ.)IETF, 1998. — 71 p. — doi:10.17487/RFC2361
  4. http://apps.nationalarchives.gov.uk/pronom/fmt/5
  5. http://msdn.microsoft.com/en-us/magazine/hh580739.aspx
  6. http://msdn.microsoft.com/en-us/library/aa931363.aspx
  7. Cudnik, Brian. Lunar Meteoroid Impacts and How to Observe Them. — Springer, 2009. — P. 154. — ISBN 978-1-4419-0324-2.
  8. AVI  (неопр.). Дата обращения: 15 июля 2014. Архивировано 26 декабря 2014 года.

Ссылки

  • Описание технологии AVI авторства John’a P. McGowan’a Архивная копия от 25 августа 2006 на Wayback Machine
  • Документация формата RIFF-AVI Архивная копия от 27 декабря 2009 на Wayback Machine
  • Список кодеков FourCC Архивная копия от 16 сентября 2020 на Wayback Machine
Перейти к шаблону «Медиаконтейнеры»
Видео/аудио
Аудио
Музыка
Растровые
Векторные
Комплексные