Định dạng chứa (kỹ thuật số)

Định dạng chứa, Định dạng Contener, wrapper hay metafile là định dạng file cho phép nhúng nhiều luồng dữ liệu vào một file duy nhất, thường cùng với siêu dữ liệu để xác định và mô tả chi tiết hơn các luồng đó. Các ví dụ đáng chú ý về định dạng container bao gồm file lưu trữ (chẳng hạn như định dạng ZIP) và các định dạng được sử dụng để phát lại đa phương tiện (chẳng hạn như Matroska, MP4 và AVI). Trong số các định dạng container đa nền tảng sớm nhất là Distinguished Encoding Rules và Interchange File Format.

== Thiết kế ==
Mặc dù các container có thể xác định cách dữ liệu hoặc siêu dữ liệu được mã hóa, nhưng chúng không thực sự cung cấp hướng dẫn về cách giải mã dữ liệu đó. Một chương trình có thể mở một container cũng phải sử dụng một codec phù hợp để giải mã nội dung của nó. Nếu chương trình không có thuật toán cần thiết, nó không thể sử dụng dữ liệu được chứa. Trong những trường hợp này, các chương trình thường phát ra thông báo lỗi phàn nàn về việc thiếu codec, mà người dùng có thể có được.

Định dạng container có thể được tạo để bao bọc bất kỳ loại dữ liệu nào. Mặc dù có một số ví dụ về các định dạng tệp như vậy (ví dụ: tệp DLL của Microsoft Windows), nhưng hầu hết các định dạng container đều chuyên biệt cho các yêu cầu dữ liệu cụ thể. Ví dụ: vì luồng âm thanh và video có thể được mã hóa và giải mã bằng nhiều thuật toán khác nhau, nên định dạng container có thể được sử dụng để cung cấp giao diện của một định dạng file duy nhất cho người dùng phần mềm phát lại đa phương tiện.

=== Cân nhắc ===
Sự khác biệt giữa các định dạng chứa khác nhau phát sinh từ năm vấn đề chính:

1. Mức độ phổ biến; mức độ hỗ trợ rộng rãi của một chứa.
2. Chi phí chung. Đây là sự khác biệt về kích thước tệp giữa hai tệp có cùng nội dung trong một chứa khác nhau.
3. Hỗ trợ chức năng codec nâng cao. Các định dạng cũ hơn như AVI không hỗ trợ các tính năng codec mới như B-frame, âm thanh VBR hoặc video VFR gốc. Định dạng có thể được "hack" để thêm hỗ trợ, nhưng điều này tạo ra các vấn đề về khả năng tương thích.
4. Hỗ trợ nội dung nâng cao, chẳng hạn như chương, phụ đề, thẻ meta, dữ liệu người dùng.
5. Hỗ trợ phương tiện truyền phát trực tuyến.

=== Định dạng mã hóa đơn ===
Ngoài các định dạng chứa thuần túy, chỉ xác định wrapper nhưng không phải mã hóa, một số định dạng tệp xác định cả lớp lưu trữ và mã hóa, như một phần của thiết kế mô-đun và khả năng tương thích hướng tới.

Ví dụ bao gồm JPEG File Interchange Format (JFIF), để chứa dữ liệu định dạng JPEG, và Portable Network Graphics (PNG).

Về nguyên tắc, mã hóa có thể được thay đổi trong khi lớp lưu trữ vẫn được giữ nguyên; ví dụ, Multiple-image Network Graphics (MNG) sử dụng định dạng chứa PNG nhưng cung cấp hoạt ảnh, trong khi (JNG) đặt dữ liệu được mã hóa JPEG vào một container PNG; tuy nhiên trong cả hai trường hợp, các định dạng khác nhau có các số ma thuật khác nhau - định dạng xác định mã hóa, mặc dù MNG có thể chứa cả hình ảnh được mã hóa PNG và hình ảnh được mã hóa JPEG.

== Định dạng chứa đa phương tiện ==
 The container file is used to identify and interleave different data types. Simpler container formats can contain different types of audio formats, while more advanced container formats can support multiple audio and video streams, , chapter-information, and meta-data () — along with the synchronization information needed to play back the various streams together. In most cases, the file header, most of the metadata and the synchro chunks are specified by the container format. For example, container formats exist for optimized, low-quality, internet video streaming which differs from high-quality Blu-ray streaming requirements.

Container format parts have various names: "chunks" as in RIFF and PNG, "atoms" in QuickTime/MP4, "packets" in MPEG-TS (from the communications term), and "segments" in JPEG. The main content of a chunk is called the "data" or "payload". Most container formats have chunks in sequence, each with a header, while instead stores offsets. Modular chunks make it easy to recover other chunks in case of file corruption or dropped frames or , while offsets result in in cases of bit slip.

Some containers are exclusive to audio:

- ( file format, widely used on the platform)
- ( file format, widely used on platform)
- (Extensible Music Format)

Other containers are exclusive to still images:

- (Flexible Image Transport System) still images, raw data, and associated metadata.
- (Tag Image File Format) still images and associated metadata.
- PICT resource (), superseded by in
- (WMF) = (EMF)
- (EPS)
- (CGM)
- (PDF)
- (CDR)
- (SVG)
- file (RTF)

Other flexible containers can hold many types of audio and video, as well as other media. The most popular multi-media containers are:

- (used by many mobile phones; based on the )
- (container for Microsoft and , which today usually do not use a container)
- (the standard container, also based on )
- ("Microsoft Digital Video Recording", video container format developed by Microsoft based on )
- (FLV, F4V) (container for video and audio from )
- (first platform-independent container format)
- (MKV) (not limited to any coding format, as it can hold virtually anything; it is an container format)
- MJ2 - Motion file format, based on the which is defined in MPEG-4 Part 12 and JPEG 2000 Part 12
- (standard video container from )
- (standard container for MPEG-1 and MPEG-2 on reasonably reliable media such as disks; used also on discs)
- (a.k.a. MPEG-TS) (standard container for digital broadcasting and for transportation over unreliable media; used also on video; typically contains multiple video and audio streams, and an )
- (standard audio and video container for the multimedia portfolio, based on the ISO base media file format defined in and JPEG 2000 Part 12) which in turn was based on the QuickTime file format.
- (standard container for audio formats and and video format )
- (RealMedia; standard container for and )
- (subset of , used for web-based media distribution on online platforms; container for royalty-free audio formats / and video formats //)

There are many other container formats, such as , , , , SVI, and 

== Xem thêm ==
- File lưu trữ
- NTFS#Metafiles

- Serialization

== Liên kết ngoài ==
- Online Video File Format Identification Tool - Designed primarily for CCTV video formats and codecs