Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 18 августа 2018 года; проверки требуют 6 правок.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 18 августа 2018 года; проверки требуют 6 правок.
Файлы с расширением AVI могут содержать видео- и аудиоданные, сжатые с использованием разных комбинаций кодеков, что позволяет синхронно воспроизводить видео со звуком. Файл AVI может содержать различные виды компрессированных данных (например, DivX-видео + WMA-аудио или Indeo-видео + PCM-аудио), в зависимости от того, какой кодек используется для кодирования/декодирования. Как и DVD, файлы AVI поддерживают многопоточное аудио-видео.
Все AVI файлы включают в себя два объязательных блока LIST, которые определяют формат и данные потока. AVI файлы могут также включать индекс-блок. Этот дополнительный блок определяет расположение видеоданных в файле.
Типичная структура AVI-файла:
RIFF ('AVI ' LIST ('hdrl' <заголовок>) LIST ('movi' <видео>) ['idx1' <индекс>])
Блок, содержащий заголовок AVI файла и заголовки потоков данных. Типичная структура:
LIST ('hdrl' 'avih' (<заголовок AVI файла>) LIST ('strl' <заголовок потока 1>) LIST ('strl' <заголовок потока 2>) LIST ('odml' <расширенный заголовок AVI файла>))
Файл начинается с основного заголовка. В AVI файлах этот заголовок определяется блоком с FOURCC 'avih'. Заголовок содержит глобальную информацию для всего файла, такую, как число потоков в файле, ширина и высота видеопотока. Основной заголовок имеет следующую структуру:
dwMicroSecPerFrame — определяет количество микросекунд между кадрами. Это значение общее для всего файла.
dwMaxBytesPerSec — указывает примерную максимальную скорость передачи данных файла. Это значение указывает количество байт в секунду, которые система должна обрабатывать.
dwFlags — содержит перечень свойств видеофайла. Допустимы следующие значения:
Флаг
Описание
AVIF_HASINDEX
В файле присутствует блок 'idx1'.
AVIF_MUSTUSEINDEX
Указывает, что для того, чтобы определить порядок представления данных, должен быть использован индекс, а не физическое расположение блоков в файле.
AVIF_ISINTERLEAVED
Указывает на чередование аудио и видео данных.
AVIF_WASCAPTUREFILE
AVIF_COPYRIGHTED
Указывает, что файл содержит защищённые авторскими правами данные и программное обеспечение.
dwTotalFrames — указывает общее количество кадров в файле.
dwStreams — указывает количество потоков в файле. Например, файл с аудио и видео имеет 2 потока.
dwSuggestedBufferSize — определяет рекомендуемый размер буфера для чтения файла. Этот размер должен быть достаточно большим, чтобы содержать крупнейший блок данных с заголовком и сигнатурой. Если установленное значение равно нулю или слишком мало, программа для воспроизведения файла перераспределит память во время работы, что снизит производительность.