Формат контейнера (иногда неформально называемый оболочкой ) или метафайлом — это формат файла , который позволяет встраивать несколько потоков данных в один файл , обычно вместе с метаданными для идентификации и дальнейшей детализации этих потоков. [1] Известные примеры форматов контейнеров включают архивные файлы (например, формат ZIP ) и форматы, используемые для воспроизведения мультимедиа (например, Matroska , MP4 и AVI ). Среди самых ранних кросс-платформенных форматов контейнеров были Distinguished Encoding Rules и Interchange File Format 1985 года .
Хотя контейнеры могут определять, как кодируются данные или метаданные, они фактически не предоставляют инструкции о том, как декодировать эти данные. Программа , которая может открыть контейнер, также должна использовать соответствующий кодек для декодирования его содержимого. Если у программы нет необходимого алгоритма, она не может использовать содержащиеся в нем данные. В этих случаях программы обычно выдают сообщение об ошибке, жалующееся на отсутствие кодека, который пользователи могут получить.
Форматы контейнеров могут быть созданы для обертывания любых типов данных. Хотя есть некоторые примеры таких форматов файлов (например, файлы DLL Microsoft Windows ) , большинство форматов контейнеров специализированы для определенных требований к данным. Например, поскольку аудио- и видеопотоки могут кодироваться и декодироваться с помощью множества различных алгоритмов, формат контейнера может использоваться для предоставления пользователям программного обеспечения для воспроизведения мультимедиа внешнего вида единого формата файла.
Различия между различными форматами контейнеров обусловлены пятью основными проблемами:
В дополнение к чистым форматам контейнеров, которые определяют только оболочку, но не кодирование, ряд форматов файлов определяют как уровень хранения, так и кодирование в рамках модульной конструкции и прямой совместимости .
Примерами служат формат обмена файлами JPEG (JFIF) для хранения данных JPEG и форматы Portable Network Graphics (PNG).
В принципе, кодировку можно изменить, сохранив при этом уровень хранения; например, Multiple-image Network Graphics (MNG) использует формат контейнера PNG, но обеспечивает анимацию, в то время как JPEG Network Graphics (JNG) помещает данные в формате JPEG в контейнер PNG; однако в обоих случаях разные форматы имеют разные магические числа — формат определяет кодировку, хотя MNG может содержать как изображения в формате PNG, так и изображения в формате JPEG.
Файл-контейнер используется для идентификации и чередования различных типов данных. Более простые форматы контейнеров могут содержать различные типы аудиоформатов, в то время как более продвинутые форматы контейнеров могут поддерживать несколько аудио- и видеопотоков, субтитры , информацию о главах и метаданные ( теги ) — вместе с информацией о синхронизации, необходимой для совместного воспроизведения различных потоков. В большинстве случаев заголовок файла, большая часть метаданных и синхрочастицы определяются форматом контейнера. Например, существуют форматы контейнеров для оптимизированной потоковой передачи видео низкого качества через Интернет, которая отличается от требований потоковой передачи Blu-ray высокого качества.
Части формата контейнера имеют различные названия: «куски» как в RIFF и PNG, «атомы» в QuickTime/MP4, «пакеты» в MPEG-TS (от термина «коммуникации») и «сегменты» в JPEG. Основное содержимое куска называется «данными» или «полезной нагрузкой». Большинство форматов контейнеров имеют куски в последовательности, каждый с заголовком, в то время как TIFF вместо этого хранит смещения. Модульные куски позволяют легко восстанавливать другие куски в случае повреждения файла или пропущенных кадров или проскальзывания битов , в то время как смещения приводят к ошибкам кадрирования в случаях проскальзывания битов.
Некоторые контейнеры предназначены исключительно для аудио:
Другие контейнеры предназначены исключительно для неподвижных изображений:
Другие гибкие контейнеры могут содержать много типов аудио и видео, а также другие медиа. Наиболее популярные контейнеры мультимедиа: [2] [3]
Существует множество других форматов контейнеров, таких как NUT , MXF , GXF , ratDVD , SVI, VOB и DivX Media Format.