Введение
Формат метафайла — это тип компьютерного файла.
a kind of computer file
Контейнерный формат (неформально иногда называемый оболочкой) или метафайл — это формат файла, позволяющий встраивать несколько потоков данных в один файл, как правило, вместе с метаданными для их идентификации и более подробного описания. Известные примеры контейнерных форматов включают архивные файлы (например, формат ZIP) и форматы, используемые для воспроизведения мультимедиа (например, Matroska, MP4 и AVI). К одним из первых кроссплатформенных контейнерных форматов относятся Distinguished Encoding Rules и Interchange File Format 1985 года.
Дизайн
Хотя контейнеры могут указывать, как закодированы данные или метаданные, они не содержат инструкций по их декодированию. Программа, способная открыть контейнер, также должна использовать подходящий кодек для декодирования содержимого. Если программа не располагает необходимым алгоритмом, она не сможет использовать данные, содержащиеся в контейнере. В таких случаях программы обычно выдают сообщение об ошибке, сообщающее об отсутствии кодека, который пользователь может установить. Контейнерные форматы могут быть использованы для упаковки любых данных. Хотя существуют примеры таких форматов файлов (например, DLL-файлы Microsoft Windows), большинство контейнерных форматов специализированы для конкретных типов данных. Например, поскольку аудио- и видеопотоки могут быть закодированы и декодированы множеством различных алгоритмов, контейнерный формат может использоваться для представления единого формата файла пользователям мультимедийного программного обеспечения.
Единый формат кодирования
В дополнение к чистым форматам контейнеров, которые задают только оболочку, но не кодирование, ряд форматов файлов определяют как слой хранения, так и кодирование, в рамках модульного дизайна и обеспечения совместимости в будущем. Примерами служат JPEG File Interchange Format (JFIF) для хранения данных JPEG и Portable Network Graphics (PNG). В принципе, кодирование можно изменить, сохраняя при этом слой хранения; например, Multiple Image Network Graphics (MNG) использует формат контейнера PNG, но предоставляет возможности анимации, а JPEG Network Graphics (JNG) помещает данные, закодированные JPEG, в контейнер PNG; однако в обоих случаях различные форматы имеют разные магические числа – формат определяет кодирование, хотя MNG может содержать как изображения, закодированные PNG, так и изображения, закодированные JPEG.