Audio Video Interleave (AVI, «чередование аудио и видео») — RIFF-медиаконтейнер, впервые использованный Microsoft в 1992 году в пакете Video for Windows.
Формат файлов с расширением .avi известен как медиа-контейнер, это формат файлов, так же как MP3 или JPG. Но, в отличие от этих форматов, AVI — это формат-контейнер. Это означает, что он может содержать видео/аудио данные, сжатые с использованием разных комбинаций кодеков, что позволяет синхронно воспроизводить видео со звуком. Так, если MP3 и JPG файлы построены на использовании только основного вида компрессии данных (MPEG Audio Layer 3 и JPEG), AVI файл может содержать различные виды компрессированных данных (например, DivX — видео + WMA — аудио или Indeo — видео + PCM — аудио), в зависимости от того, какой кодек используется для кодирования/декодирования. Как и DVD, AVI файлы поддерживают многопотоковое аудио-видео. AVI-файлы могут содержать различные виды сжатых данных, к примеру DivX для видео-информации и MP3 для аудио. Все AVI файлы выглядят одинаково «снаружи» (имеют расширение .AVI), но «внутри» они могут отличаться очень сильно.
AVI файлы могут быть проиграны различными плеерами, но плеер должен поддерживать кодек, используемый для кодирования данного видео. Слово кодек – происходит от слов КОдировать и ДЕКодировать.
Для воспроизведения рекомендуем установить K-Lite Codec Pack Full, лучший набор кодеков и инструментов для проигрывания аудио и видео любых форматов. И, что важно, содержит Media Player Classic, мощнейший проигрыватель, имеющий поддержку всех существующих форматов, воспроизведение видео DVD без каких-либо дополнительных программ, возможность воспроизведения видео с какого-либо видеовхода: будь то ТВ–приёмник, карта видеозахвата или цифровая видеокамера, подключенная по цифровому интерфейсу.
Формат файла
Все AVI файлы включают в себя два обязательных LIST chunk’а, которые определяют формат и данные потока. AVI файлы могут также включать индекс chunk. Этот дополнительный chunk определяет расположение видеоданных в файле. Типичная структура AVI-файла:
RIFF ('AVI ' LIST ('hdrl' <заголовок>) LIST ('movi' <видео>) ['idx1' <индекс>])
Основной заголовок файла
Файл начинается с основного заголовка. В 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;
} MainAVIHeader;
dwMicroSecPerFrame — определяет количество микросекунд между кадрами. Это значение общее для всего файла.
dwMaxBytesPerSec — указывает примерную максимальную скорость передачи данных файла. Это значение указывает количество байт в секунду, которые система должна обрабатывать.
dwFlags — содержит перечень свойств видеофайла.
dwTotalFrames — указывает общее количество кадров в файле.
dwStreams — указывает количество потоков в файле. Например, файл с аудио и видео имеет 2 потока.
dwSuggestedBufferSize — определяет рекомендуемый размер буфера для чтения файла. Этот размер должен быть достаточно большим, чтобы содержать крупнейший chunk. Если установленное значение равно нулю или слишком мало, программа для воспроизведения файла перераспределит память во время работы, что снизит производительность.
dwWidth — задает ширину AVI файла.
dwHeight — задает высоту AVI файла.