Контейнеры: MP4, fMP4, MKV, WebM, MOV, MPEG-TS

Автор: Николай СапуновОбновлено: август 202622 мин чтения
Содержание статьи +

TL;DR

Видеоконтейнер – это файл, который оборачивает сжатый видеопоток, одну или несколько аудиодорожек, субтитры, главы и метаданные, нужные плееру, чтобы во всём этом разобраться. Контейнер – не то же самое, что кодек: кодек сжимает пиксели в поток бит, а контейнер – конверт, который несёт эти биты вместе со всем остальным. Шесть контейнеров покрывают почти любую задачу современного видео. MP4 и его фрагментированный собрат fMP4 доминируют в открытом интернете, потому что их понимает любое устройство; MKV – выбор, когда нужны все дорожки, все субтитры и все возможности в одном файле; WebM – веб-ориентированный профиль Matroska от Google вокруг роялти-свободных кодеков; MOV – профессиональный продакшен-формат Apple и прямой предок MP4; MPEG-TS – рабочая лошадь вещания, на которой стоит кабель, спутник и ранние поколения HLS-стриминга. Выберете не тот контейнер – и либо отрежете себя от половины плееров мира, либо будете годами платить инфраструктурный налог стримингу. Эта статья объясняет, что собой представляет каждый контейнер, в чём его сила и какой использовать для каждой задачи в 2026 году.

Зачем это нужно

Если вы строите что-то, что доставляет видео зрителю – стриминговый сервис, онлайн-обучение, видеоконференцсвязь, телемедицину, систему видеонаблюдения, – рано или поздно ваши инженеры спросят «какой контейнер?», и ваш ответ определит стоимость, совместимость и продуктовый roadmap на годы вперёд. Платформа, выбравшая обычный MP4 для live-стриминга, через девять месяцев перепишет весь упаковочный слой заново – обычный MP4 нельзя стримить в реальном времени. Платформа, выбравшая MKV для скачивания, будет объяснять пользователям, почему файлы не открываются на iPhone. Платформа, выбравшая MPEG-TS для видео по запросу, будет платить 10–15 % надбавки на хранение и трафик за каждый файл всю жизнь, потому что MPEG-TS придуман для кабелей и спутников, а не для дисков и CDN. Ни одна из этих проблем не видна в первый день. Они приходят на девятый месяц, когда менять курс уже дорого.

Эта статья даёт ментальную модель, которая позволит принять решение один раз – спокойно и правильно. Мы начнём с различия между контейнером и кодеком, дойдём до шести контейнеров в активном использовании сегодня, разберём внутреннее устройство каждого и закончим деревом решений, которое можно применить к реальному продукту даже без инженера.

Контейнер – это не кодек

С этого начнём. Кодек – сокращение от coder-decoder, кодировщик-декодировщик – это программа, которая сжимает сырые видеопиксели в гораздо меньший поток бит и разжимает обратно при воспроизведении. H.264, H.265 (HEVC), VP9, AV1 и VVC – это кодеки. Они – чистая математика: на вход подаётся последовательность кадров, на выходе – поток бит, из которого тот же кодек восстановит (почти) те же кадры.

Контейнер – это формат файла, который оборачивает эти биты. Это коробка, в которой лежат сжатая видеодорожка, сжатая аудиодорожка, дорожки субтитров, главы, обложка, метаданные («видео 1920 на 1080, 24 fps, BT.709, начало в 01:00:00») и индекс, по которому плеер мгновенно прыгает на 37-ю минуту двухчасового фильма, не пересматривая весь файл. Всё это – не дело кодека. Кодек не знает и не должен знать, в каком контейнере окажутся биты.

Один и тот же H.264-поток можно завернуть в MP4, MKV, MOV, MPEG-TS или fMP4. Внутри – одинаковые байты. Меняется обёртка. Полезная аналогия: кодек – это сам напиток, контейнер – ящик, в котором его везут. Pepsi одинакова на вкус и в шестибаночном картоне, и в торговом автомате, и в ресторанном стакане – но упаковка определяет, как её перевозить, хранить, маркировать и подавать.

Из-за этого разделения вопрос «MP4 или AV1?» лишён смысла. MP4 – контейнер; AV1 – кодек. Реальный вопрос звучит как «MP4 с AV1 и Opus или WebM с AV1 и Opus?» – одно и то же содержимое, разный конверт. Как только это укладывается в голове, половина путаницы вокруг контейнеров исчезает.

Рис. 1. Контейнер хранит и синхронизирует дорожки; кодек сжимает пиксели внутри видеодорожки. Разные кодеки и разные контейнеры решают разные задачи и свободно сочетаются.

Что вообще должен уметь контейнер

Посмотрите на задачу. Видеофайл должен делать пять вещей одновременно.

Во-первых, хранить несколько потоков сразу. У типичного фильма одна видеодорожка, две-три аудиодорожки (английский оригинал, испанский дубляж, комментарий режиссёра) и несколько дорожек субтитров. Всё это живёт в одном файле так, чтобы плеер мог найти нужное.

Во-вторых, держать дорожки синхронизированными – чтобы реплики совпадали с губами, а субтитры появлялись в нужный момент. Контейнер делает это, проставляя каждому фрагменту видео и аудио точный таймкод: «играть это через 17,504 секунды». Плеер использует таймкоды, чтобы выстроить все потоки.

В-третьих, позволять плееру прыгать по файлу без перечитывания с начала. Нажав на 90-ю минуту двухчасового фильма, плеер должен знать, какой байт читать первым. Контейнер хранит индекс (sample table, offset table или cues block – в зависимости от формата), который сопоставляет «90 минут» с «байтом 2 041 876 332».

В-четвёртых, нести метаданные – описательные ярлыки и параметры, путешествующие вместе с файлом: название, язык, кодек, разрешение, частота кадров, цветовое пространство, частота дискретизации звука, раскладка каналов, имена глав, даже обложка. Без этого плееру приходится угадывать, а угадывание быстро ломается.

В-пятых, писаться по частям – желательно без переписывания всего файла, когда писатель хочет дописать кусок в конец. Это важно для камер (которые пишут на ходу), для live-кодировщиков (которые пишут, пока идёт эфир) и для стриминговых серверов (которые хотят начать отдачу раньше, чем запись закончена).

Каждый из шести контейнеров решает эти пять задач немного по-разному. Различия и определяют, какой лучше для какой работы.

ISO BMFF – общее древо для половины формата

Три из шести контейнеров – MP4, fMP4 и MOV – имеют общего предка. Все они построены на ISO Base Media File Format, сокращённо ISO BMFF, стандартизованном как ISO/IEC 14496-12 Международной организацией по стандартизации. 1 Понимая ISO BMFF, вы понимаете 90 % контейнеров, с которыми когда-либо столкнётесь.

ISO BMFF строит файл как дерево боксов (boxes), которые Apple исторически называла атомами (atoms). Каждый бокс имеет фиксированный заголовок – четыре байта размера, четыре байта типа (ftyp, moov, mdat) – и тело: либо сырые данные, либо вложенные боксы. Весь файл – одно огромное вложенное дерево боксов.

В типичном MP4 – небольшой набор боксов верхнего уровня. Бокс ftyp в самом начале опознаёт формат и версию – как «магическое число» опознаёт JPEG или PNG. Бокс moov (movie box) хранит все метаданные файла: информацию о дорожках, параметрах кодеков, тайминге и важнейшую таблицу сэмплов, сопоставляющую таймкоды с байтовыми смещениями в медиа. Бокс mdat (media data box) содержит сами сжатые байты видео и аудио – без внутренней структуры, кроме той, что описана в индексах moov. 1

Два факта об этой раскладке определяют всё дальнейшее. Первое: плеер обязан прочитать moov целиком, прежде чем что-либо играть, – это оглавление, по которому он находит каждый кадр в mdat. Второе: moov обычно мал – несколько килобайт на час видео. Если moov стоит в начале файла, плеер начинает играть сразу после первых сетевых пакетов; если в конце (а это дефолт некоторых рекордеров), плеер вынужден скачать весь файл прежде, чем начнётся воспроизведение. Размещение moov в начале называют «fast-start», «moov atom first» или «web-optimised» в зависимости от инструмента. Для веб-раздачи делайте так всегда.

Рис. 2. Анатомия ISO BMFF-файла. Стандартная раскладка MP4 (слева) держит все метаданные в одном `moov`. Фрагментированная (справа) заменяет этот блок множеством самодостаточных пар `moof`+`mdat`, каждая из которых играет в одиночку.

ISO BMFF доминирует уже два десятилетия именно благодаря гибкости: одна и та же структура боксов масштабируется от минутного клипа с телефона до четырёхчасового 4K HDR-фильма и фрагментированного live-потока. Одни и те же парсеры, демультиплексоры и инструменты работают со всем этим. Дальше – про конкретные диалекты ISO BMFF плюс два не-ISO-BMFF формата (Matroska и MPEG-TS), решающих другие задачи.

MP4 – дефолт, который поддерживают все

MP4, определённый как ISO/IEC 14496-14 и финализированный в 2003 году, – самый широко поддерживаемый видеоконтейнер из существующих. 2 Если вам нужен файл, играющий на каждом смартфоне, ноутбуке, в каждом браузере, на каждом смарт-телевизоре и игровой консоли без лишних мыслей, – сохраняйте его в MP4. Почти каждая камера, любой экранный рекордер и любой редактор экспортируют в MP4 по умолчанию; почти каждая соцплатформа – YouTube, TikTok, Instagram, LinkedIn – принимает MP4 как предпочтительный формат загрузки.

Внутри MP4 – прямая реализация ISO BMFF с небольшим набором MP4-специфичных боксов поверх. Бренд в ftyp – isom или mp42, а moov индексирует потоки. Внутри обычно живут: H.264 для видео (универсальный дефолт), H.265 для нового 4K и HDR-контента, AAC для звука, AC-3 и E-AC-3 для surround, Opus для низколатентного аудио и всё чаще AV1 для следующего поколения эффективности. 2

Главная слабость MP4 – следствие его же дизайна: он задуман как файл, написанный один раз и читаемый с диска. Единственный moov-индекс, дающий ему эффективность на воспроизведении, делает его неудобным для live-стриминга: moov нельзя финализировать, пока писатель не знает, где в файле каждый кадр, а это известно только после окончания записи. Готовый MP4 можно стримить по HTTP, но MP4, который всё ещё пишется, – нельзя. Именно эту задачу решал fMP4.

Маленькая проверка чисел помогает оценить эффективность MP4. Двухчасовой 1080p-фильм при видеобитрейте 5 Мбит/с и аудиобитрейте 192 кбит/с весит:

всего бит = (5 000 000 + 192 000) × 7 200 секунд
всего бит = 5 192 000 × 7 200
всего бит ≈ 37,4 миллиарда бит
всего байт ≈ 4,67 гигабайта

Накладные расходы контейнера MP4 поверх этого – примерно 0,5–1 %: несколько десятков мегабайт боксов moov, ftyp и sample-table. То есть 4,67 ГБ сырой полезной нагрузки превращаются в 4,69 ГБ MP4. Это минимальный «упаковочный налог» среди всех контейнеров – и одна из причин, почему MP4 остаётся дефолтом.

fMP4 – MP4, нарезанный на стримящиеся ломтики

Фрагментированный MP4 (fMP4) – это тот же ISO BMFF с одним структурным отличием: вместо одного большого moov, указывающего в один большой mdat, файл разбит на множество маленьких фрагментов, и каждый – самодостаточная пара moof (movie fragment box) + свой mdat. moof хранит маленький индекс только своего фрагмента; mdat хранит только байты этого фрагмента. 3

Звучит как мелочь. Это не мелочь. Это самое важное изменение в истории интернет-доставки видео.

Причина: фрагмент играется независимо. Плеер может скачать фрагмент 47 live-эфира, декодировать и показать картинку, никогда не видя фрагменты 1–46. Каждый moof – полное оглавление байтов в его mdat. Поэтому фрагмент можно закодировать и записать в момент захвата, выложить на CDN, а плеер начнёт его воспроизводить через секунды после съёмки. Файл можно размазать по edge-нодам CDN, плеер может смешивать фрагменты из разных источников. Между фрагментами можно менять качество, и плеер этого не заметит – именно на этом стоит каждый протокол адаптивного битрейта в современном интернете.

У этого последнего пункта есть имя: Adaptive Bitrate streaming, или ABR. Кодировщик делает несколько копий одного видео с разными битрейтами – например, 5 Мбит/с, 3 Мбит/с, 1,5 Мбит/с, 600 кбит/с – и режет каждую на fMP4-фрагменты по 2–6 секунд. Плеер следит за полосой и CPU зрителя и выбирает битрейт пофрагментно на лету. Когда вы смотрите Netflix и через пару секунд картинка резчает – это ABR подменил фрагмент с низким битрейтом на фрагмент с высоким. fMP4 – шасси, на котором это работает.

fMP4 стал стандартной упаковкой для обоих главных HTTP-протоколов стриминга. HLS (HTTP Live Streaming), протокол Apple с 2009 года, изначально использовал MPEG-TS-сегменты и получил поддержку fMP4 на WWDC 2016. 4 MPEG-DASH (Dynamic Adaptive Streaming over HTTP), международный аналог, работает на fMP4 с первого дня. Третья аббревиатура, которую вы встретите, – CMAF, Common Media Application Format, – это, по сути, ужесточённый профиль fMP4, рассчитанный так, чтобы один набор фрагментов обслуживал и HLS, и DASH сразу. К CMAF вернёмся ниже.

Для всего, что идёт в эфире, – концерты, спорт, новости, лекции, хирургические трансляции, – fMP4 в 2026 году выбор по умолчанию на уровне контейнера. Для статичного VOD на одном битрейте обычный MP4 нередко проще и чуть эффективнее. Для всего промежуточного fMP4 побеждает, потому что он бесплатно даёт ABR.

Рис. 3. MP4 играется из одного файла; fMP4 – из потока маленьких фрагментов. Фрагментированная раскладка и делает возможным adaptive bitrate streaming.

MOV – профессиональный предок и формат монтажа

MOV, формально QuickTime File Format, создан Apple в 1991 году для платформы QuickTime. 5 Это прямой предок MP4 – спецификация MP4 родилась тем, что QuickTime обобщили и провели через ISO в 1998 году. Внутренне MOV и MP4 настолько похожи, что многие инструменты открывают один как другой; различия – в бренде в ftyp и в горстке MOV-специфичных атомов, хранящих профессиональные метаданные, которые MP4 формально не поддерживает.

В повседневной жизни MOV – это формат продакшена. Final Cut Pro, Avid Media Composer и DaVinci Resolve по умолчанию пишут MOV для промежуточных и мастер-файлов. Кодек внутри почти всегда – ProRes, «промежуточный» кодек Apple для монтажа с гораздо более высоким битрейтом и более лёгкой компрессией, чем H.264 или H.265, чтобы редактор мог листать, резать и пересохранять без деградации картинки от поколения к поколению. Час 1080p-видео в ProRes 422 весит около 66 ГБ против примерно 2,3 ГБ того же контента в H.264 – но ProRes быстрее декодируется, чище монтируется и сохраняет столько верности, сколько нужно, чтобы выдержать десять поколений правок без заметных потерь.

Когда использовать MOV? Внутри продакшен-пайплайна – почти всегда. Метаданные о цвете в MOV богаче, чем в обычном MP4: теги gamma, matrix и primary-colour переживают round-trip между редакторами без той порчи, которая годами мучает цветовые метаданные MP4. Вне продакшена – никогда; мир ездит на MP4. Переход из MOV в MP4 происходит в конце пост-продакшена, когда мастер пересчитывают для доставки. Многие монтажные инструменты называют этот шаг «Export H.264 / MP4 for delivery», и это правильная модель: MOV – мастер, MP4 – оттиск.

MKV / Matroska – «всё в одном» среди контейнеров

Matroska, расширение .mkv, – открытый мультимедийный контейнер, придуманный в 2002 году, чтобы делать то, для чего ISO BMFF намеренно не строили: класть в один файл все возможности, какие может захотеть зритель, и без лицензионных сборов. 6 Он построен на параллельном бинарном формате EBML (Extensible Binary Meta Language), а не на иерархии боксов ISO BMFF. Функционально EBML и ISO BMFF играют похожую роль – оба представляют дерево помеченных элементов, – но Matroska пошёл своей дорогой.

Сила MKV – из этой широты. MKV-файл может нести неограниченное число дорожек видео, аудио и субтитров. Поддержка субтитров особенно богата: Matroska нативно понимает SubStation Alpha (SSA / ASS), SubRip (SRT), VobSub и графические PGS с правильной стилизацией и позиционированием. 6 Он же тянет главы, прикреплённые шрифты, прикреплённые изображения, edit-decision-листы и произвольные метаданные, которых другие контейнеры внутри файла держать не дают.

Для практического пользователя – и особенно для конечного потребителя, скачивающего или собирающего свою коллекцию, – MKV непобедим. Один MKV-фильма может нести 4K HDR Dolby Vision-картинку, английский Atmos-трек, дублированный французский трек, английские субтитры, испанские субтитры, субтитры для слабослышащих, главы и постер – всё в одном файле, который чисто играется в VLC, Kodi, mpv и современных смарт-ТВ.

Но у MKV есть болезненная слабость: веб его нативно не поддерживает. Ни один основной браузер не играет MKV через стандартный HTML5 <video>. Экосистема Apple – iOS, iPadOS, tvOS, Safari на macOS – MKV не играет вовсе. Упаковщики HLS и DASH не умеют фрагментировать MKV для adaptive streaming так, как фрагментируют ISO BMFF. Если задача – выложить видео в веб, MKV – неправильный ответ. 7

Ментальная модель: MKV – формат для архива, для личных коллекций и для случаев, когда вы контролируете и производителя, и плеер. MP4 (или fMP4) – формат для всего, где плеер вы не контролируете.

WebM – веб-ориентированный профиль Matroska от Google

WebM – это Matroska, из которой выкинули всё, что не роялти-свободно, и заперли список кодеков в маленький белый список, который веб умеет играть. Google анонсировал его в мае 2010 года одновременно с открытым релизом кодека VP8, и намерение было прямым: видеоформат, которым открытый веб может пользоваться, не платя патентные сборы внешним сторонам. 8

WebM-файл структурно – это Matroska. Синтаксис контейнера – то же EBML-дерево, и большинство Matroska-инструментов обрабатывают WebM как частный случай. Ограничения – на содержимое: в WebM разрешены только VP8, VP9 и AV1 для видео и только Vorbis и Opus для аудио. 8 Никаких H.264, H.265, AAC, AC-3. Смысл – держать стек целиком (контейнер, видеокодек, аудиокодек) свободным от обязательств MPEG-патентных пулов.

WebM даёт две практические выгоды. Первое: его нативно играет каждый современный браузер – Chrome, Firefox, Edge и (с Safari 14.1 в 2021 году) Safari. Второе: кодеки внутри – VP9 и особенно AV1 – заметно экономят битрейт против H.264. AV1 на типичных веб-настройках на 30–50 % эффективнее H.264 при том же воспринимаемом качестве, что напрямую переходит в меньшие счета за CDN и быстрый старт на медленных соединениях.

Слабостей тоже две. Первая: аппаратное декодирование AV1, хотя и распространено на устройствах после 2022 года, не универсально – старые телефоны, старые ТВ и многие корпоративные ноутбуки уходят в программный декод, что съедает батарею и может подёргиваться на дешёвом железе. Вторая: мир iOS всё равно предпочитает HEVC-в-MP4 для аппаратно-ускоренного воспроизведения, поэтому даже когда Safari играет WebM, AV1 и VP9, самое гладкое воспроизведение на iPhone – это HLS-упакованный fMP4 с H.265 или H.264.

Практическая рекомендация на 2026 год: если ваша аудитория – это Chrome / Firefox / Android, отдавайте WebM как основной формат доставки. Если аудитория универсальная – телефоны, планшеты, смарт-ТВ, приставки, – отдавайте fMP4 / MP4 с H.264 или H.265, а WebM добавляйте как высокоэффективный вторичный вариант для способных браузеров.

MPEG-TS – рабочая лошадь вещания

MPEG Transport Stream, обычно сокращаемый до MPEG-TS или просто TS, – старейший контейнер в этом списке и обладатель самых неинтуитивных решений. Он определён в составе MPEG-2 Systems (ISO/IEC 13818-1) в 1995 году под одну задачу: переносить сжатое видео через несовершенные сети, где данные теряются, портятся или приходят не по порядку. 9 То есть – спутник, кабель, наземное цифровое вещание и IPTV-сети. Каждый цифровой ТВ-канал, который вы сегодня смотрите, доезжает до приставки как MPEG-TS-поток.

Внутренняя структура экзотична по сравнению с боксовыми форматами. MPEG-TS – непрерывная последовательность фиксированных 188-байтных пакетов. Каждый пакет начинается с sync byte (шестнадцатеричное значение 0x47), небольшого заголовка с 13-битным Packet Identifier (PID), указывающим приёмнику, к какому потоку относится пакет, и payload до 184 байт. 9 Размер 188 байт выбран так, чтобы ровно четыре пакета помещались в AAL-1-ячейку сети ATM (Asynchronous Transfer Mode) – телеком-бэкбона 1990-х. Сегодня эта деталь – окаменелость, но размер так и не менялся.

PID позволяет одному потоку мультиплексировать несколько программ. Один MPEG-TS-фид со спутника может нести 20 каналов – у каждого свой видео-PID, свои аудио-PID, свои субтитровые PID, – а приёмник подключается, отфильтровывая нужные PID. Вся архитектура построена в предположении, что часть пакетов потеряется в пути, поэтому каждый – самодостаточный: повреждённый пакет можно выбросить, не задев остальные.

В интернет-стриминг MPEG-TS попал с заднего входа. Когда Apple представила HLS в 2009 году, она выбрала MPEG-TS как формат сегмента, потому что его уже производил каждый вещательный кодировщик и понимал каждый аппаратный декодер. 4 Ранний HLS-поток – это последовательность .ts-файлов по 6–10 секунд, перечисленных в .m3u8-плейлисте. Это работало, но MPEG-TS несёт около 10–15 % накладных расходов на пакет по сравнению с эквивалентным fMP4 – четырёхбайтные заголовки складываются на миллионах пакетов, – и это реальная цена, когда вы платите CDN за гигабайты. 10

История MPEG-TS в интернет-видео за последнее десятилетие – это медленное отступление. В 2016 HLS получил fMP4-сегменты как альтернативный формат. К 2018 CMAF объединил упаковку HLS и DASH на fMP4. Новые HLS-деплои по умолчанию используют fMP4. MPEG-TS всё ещё везде – каждая приставка, каждый broadcast-ингест, каждый SRT (Secure Reliable Transport)-фид в стриминговый origin, – но для новых интернет-проектов MPEG-TS теперь правильный ответ только тогда, когда вам нужно говорить с вещательным оборудованием или системой, которая явно его требует. Во всём остальном fMP4 съел его обед.

CMAF – слой объединения для HLS и DASH

Заметка о CMAF, Common Media Application Format, потому что вы встретите его в любом современном разговоре про упаковку. CMAF – не контейнер в смысле MP4 или MKV. Это ограниченный профиль fMP4, стандартизованный в 2018 году как ISO/IEC 23000-19; он фиксирует боксы, кодеки, шифрование и тайминги так, чтобы один набор фрагментов играл и HLS-, и DASH-плеер. 11

До CMAF стриминговая платформа, желавшая достать и устройства Apple (HLS), и всё остальное (DASH), упаковывала каждый контент дважды – .ts-сегменты для HLS, fMP4 для DASH. Двойное хранение, двойной CDN, двойная работа кодирования. CMAF заменяет оба формата одним fMP4-payload’ом, на который указывают оба манифеста. Байты на диске одинаковы; различаются только плейлисты .m3u8 и .mpd.

CMAF также включает low-latency streaming. Разбивая каждый сегмент на мелкие чанки по 0,5–2 секунды и используя HTTP/1.1 chunked transfer encoding, CMAF-поток доходит до зрителя через 2–4 секунды после съёмки вместо 20–30 секунд латентности доcmaf-эры HLS. 12 Эта скорость открывает live-спорт, интерактивные трансляции, live-аукционы и любой продукт, где аудитория должна чувствовать себя «в одной комнате» с событием.

В 2026 CMAF – формат упаковки по умолчанию для новой стриминговой инфраструктуры. AWS Elemental MediaPackage, Bitmovin, Mux, Wowza, Shaka Packager и Unified Streaming все по умолчанию отдают CMAF. Если инженеры говорят «мы упаковываем в CMAF», они имеют в виду «fMP4-сегменты, настроенные под HLS и DASH сразу, готовые к low-latency-доставке». Это правильная архитектура для любого нового продукта, запускаемого сегодня.

Сравнение в одном месте

Таблица ниже сжимает практический ответ на «какой контейнер?». Это быстрая шпаргалка; длинный разбор выше – то, что её обосновывает.

КонтейнерСпецификацияОсновные кодекиГотов к стримингуСубтитрыПоддержка моб./браузерыЛучше всего для
MP4ISO BMFF (MPEG-4 Part 14, 2003)H.264, H.265, AAC, Opus, AV1Нет (только VOD на одном битрейте)Ограниченно (mov_text, TTML)УниверсальнаяСтатичный VOD, скачивание, загрузки
fMP4 / CMAFISO BMFF (Part 12 фрагменты)H.264, H.265, AV1, AAC, OpusДа (HLS + DASH + LL)TTML, WebVTT (sidecar)УниверсальнаяЛюбой современный стриминг
MOVQuickTime (1991, родственник ISO BMFF)ProRes, DNxHR, H.264НетОграниченноЭкосистема AppleМастер-монтаж, пост-продакшен
MKVMatroska / EBML (RFC 9559, 2024)Любые (VP9, AV1, H.265, FLAC, …)Нет (не нарезается под ABR)Богатые (SSA/ASS, SRT, PGS)Нет в браузерахАрхив, личные коллекции
WebMMatroska / EBML-профиль (Google, 2010)VP8, VP9, AV1, Vorbis, OpusЧастично (через MSE)WebVTTВсе современные браузерыВеб-видео, роялти-свободная доставка
MPEG-TSMPEG-2 Systems (ISO/IEC 13818-1, 1995)H.264, H.265 (AV1 редко)Да (legacy HLS, вещание)DVB-Sub, Teletext, CCBroadcast-железоBroadcast-ингест, IPTV, legacy HLS

Закономерность: MP4 выигрывает по совместимости, fMP4 / CMAF – по стримингу, MOV – по продакшен-метаданным, MKV – по богатству, WebM – по роялти-свободной веб-доставке, MPEG-TS – по вещательной родословной. Ни один не выигрывает везде – и поэтому ваш видеопайплайн рано или поздно будет использовать несколько.

Частая ошибка: один контейнер на все случаи

Самая частая архитектурная ошибка ранних видеоплатформ – выбрать один контейнер и использовать его везде. Соблазн понятен: меньше форматов – меньше багов, – но платите вы за это одним из двух способов.

Если выбрать обычный MP4 на всё, вы заплатите в день, когда добавите live или адаптивный битрейт: обычный MP4 не стримит в реальном времени и не адаптируется. Придётся приладить второй слой упаковки (fMP4 / CMAF) поверх существующего пайплайна. Цена – несколько недель инженерной работы плюс дублирование хранения и CDN на время перехода.

Если выбрать MKV везде из-за гибкости, вы заплатите в день, когда первый нетехнический пользователь пожалуется, что iPhone или iPad не открывает присланный файл. Вы всё равно дойдёте до транскода в MP4, но позже – и пользователю уже неприятно.

Правильная архитектура делит пайплайн на стадии, у каждой свой контейнер. Стадия захвата пишет в MOV (камеры, редакторы) или MKV (архив). Стадия транскода производит MP4 (скачивание) и fMP4 / CMAF (стриминг) из мастера. Стадия доставки отдаёт то, что попросил плеер. Каждый контейнер делает свою работу, и вы не воюете с форматом.

Где здесь Фора Софт

Мы встраивали контейнеры в более чем 239 видеопродуктов с 2005 года – в стриминговое видео, видеоконференции, OTT и Internet TV, видеонаблюдение, e-learning, телемедицину и AR/VR. Выбор контейнера редко стоит первым в голове клиента – и почти всегда тихо определяет цену и масштабируемость. В OTT- и Internet-TV-продуктах мы отгружаем CMAF как единый стриминговый слой с манифестами HLS и DASH сверху. В телемедицине и видеоконференциях используем fMP4 для записей, MP4 для доказательных скачиваний и MPEG-TS только там, где этого требует унаследованная больничная система. В e-learning держим MOV в продакшен-пайплайне и доставляем адаптивный fMP4 ученику. Паттерн один: нужный контейнер на каждой стадии, никогда – один контейнер во всех ролях сразу.

Ключевое

  • Контейнер оборачивает дорожки и метаданные; кодек сжимает пиксели. Они независимы и свободно сочетаются.
  • MP4 – универсальный дефолт для скачиваний и загрузок.
  • fMP4 / CMAF – стандарт упаковки для любой новой стриминговой инфраструктуры в 2026 году.
  • MOV – правильный контейнер внутри продакшен-пайплайна, никогда – снаружи.
  • MKV непобедим в архиве и личных коллекциях, но не годится для открытого веба.
  • WebM даёт роялти-свободную веб-доставку с VP9 или AV1; MPEG-TS живёт в вещании и legacy HLS.

Что читать дальше

Источники

  1. ISO/IEC 14496-12. Information technology – Coding of audio-visual objects – Part 12: ISO base media file format. International Organization for Standardization. https://www.iso.org/standard/68960.html
  2. MPEG-4 Part 14 (ISO/IEC 14496-14:2003). Information technology – Coding of audio-visual objects – Part 14: MP4 file format. https://www.iso.org/standard/38538.html
  3. ISO base media file format – Wikipedia. Box types and fragment structure. https://en.wikipedia.org/wiki/ISO_base_media_file_format
  4. Apple Developer. HTTP Live Streaming with fragmented MP4 – WWDC 2016 Session 504. https://developer.apple.com/videos/play/wwdc2016/504/
  5. Apple Inc. QuickTime File Format Specification. https://developer.apple.com/library/archive/documentation/QuickTime/QTFF/QTFFPreface/qtffPreface.html
  6. IETF. RFC 9559 – Matroska Media Container Format Specification. https://datatracker.ietf.org/doc/rfc9559/
  7. Matroska FAQ. Browser and HTML5 support status. https://www.matroska.org/faq.html
  8. WebM Project. About WebM – codec restrictions and design intent. https://www.webmproject.org/about/
  9. ISO/IEC 13818-1. Information technology – Generic coding of moving pictures and associated audio information – Part 1: Systems (MPEG-2 Transport Stream). https://www.iso.org/standard/74427.html
  10. Ittiam Systems. MPEG2-TS encapsulation overheads in HLS. https://www.ittiam.com/mpeg2-ts-encapsulation-overheads-in-hls/
  11. ISO/IEC 23000-19:2018. Information technology – Multimedia application format (MPEG-A) – Part 19: Common media application format (CMAF) for segmented media. https://www.iso.org/standard/71975.html
  12. Wowza. Low-Latency CMAF: chunked transfer encoding and chunked encoding. https://www.wowza.com/blog/low-latency-cmaf-chunked-transfer-encoding

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.