Блог / Руководство

MP4, MKV или WebM: какой формат видео выбрать

MP4, MKV или WebM: какой формат видео выбрать

Лучшего формата видео не существует – есть лучший формат для того места, где файл должен воспроизводиться. MP4, MKV и WebM – это контейнеры: они упаковывают видео, звук, субтитры и метаданные в один файл. Какой из них подойдёт, зависит от плеера, от дорожек, которые нужно сохранить, и от кодеков внутри, а расширение файла говорит только о первом.

Практическое правило для большинства скачанных видео:

  • Смотрите на телефоне, телевизоре, планшете или монтируете в редакторе и хотите минимум хлопот: обычно первый выбор – MP4, потому что это очень широко поддерживаемый контейнер. Гарантии это не даёт: кодек внутри тоже должен поддерживаться.
  • Нужно хранить несколько звуковых дорожек, субтитров или главы в одном файле и смотреть на компьютере с хорошим плеером: для этого создан MKV.
  • Публикация в вебе: WebM – контейнер, ориентированный на веб, хотя MP4 там тоже распространён.
  • Файл не воспроизводится: сначала выясните, дело в контейнере или в кодеке, и только потом что-то меняйте.

Остальная часть статьи объясняет логику, чтобы вы могли принять то же решение для устройства, которого нет в этом списке.

Контейнер и кодек

В файле два слоя, которые легко перепутать.

Кодек сжимает само видео или звук: H.264, AV1 и VP9 – видеокодеки, AAC и Opus – аудиокодеки. Контейнер – это оболочка вокруг сжатых потоков. Описание самого Matroska говорит прямо: контейнер – не формат сжатия, а оболочка, способная вмещать множество аудио-, видео- и субтитровых потоков.

Поэтому расширение не является меткой совместимости. В руководстве MDN по веб-форматам медиаконтейнеров для каждого контейнера перечислены кодеки, которые он может содержать, и поддержка в браузерах. Поддержка контейнера не означает поддержки каждого кодека внутри. Два файла .mp4 могут вести себя по-разному: в одном H.264 и AAC, в другом AV1, и конкретное устройство может справиться с одним, но не с другим.

Поэтому вопрос совместимости состоит из трёх частей, а не из одной:

  1. Поддерживает ли цель этот контейнер?
  2. Поддерживает ли она видеокодек с использованным профилем и разрешением?
  3. Поддерживает ли она аудиокодек и формат субтитров в файле?

Три контейнера

MP4

MP4 – то, что большинство людей имеет в виду под «обычным видеофайлом». MDN описывает его как популярный контейнер, который поддерживает несколько самых используемых кодеков и широко распространён, и отмечает, что он происходит от базового формата медиафайлов ISO (ISO base media file format), а тот – от формата QuickTime компании Apple.

Содержимое разнообразнее, чем кажется по названию. В таблице совместимости MDN для MP4 указаны видеокодеки H.264 (AVC), AV1 и VP9, а для звука – AAC и другие. Файл с меткой MP4 может быть обычным видео H.264/AAC, которое воспроизводит почти всё, а может – новым AV1-кодированием, которое старый телевизор не декодирует. MP4 – безопасный контейнер, но безопасен ли файл, решает кодек.

MKV (Matroska)

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

Цена – место воспроизведения. Среди целей Matroska – добиться аппаратной и программной поддержки, но откроет ли конкретный телефон, телевизор, редактор или браузер .mkv, нужно проверять для этого устройства или приложения. В списке распространённых веб-контейнеров MDN у Matroska нет отдельной записи – только как основы WebM, так что не рассчитывайте, что браузер его откроет.

WebM

WebM – подмножество Matroska, созданное для веба. В руководстве проекта WebM названы VP8 или VP9 для видео и Vorbis или Opus для звука, а MDN пишет, что соответствующие стандарту реализации обязаны поддерживать эти кодеки. В таблице совместимости MDN для WebM указан и AV1, который встречается в современном веб-видео.

WebM – не другое написание MP4. Это более узкий контейнер с определёнными кодеками, ориентированный на веб. Браузеры поддерживают его хорошо. Устройство, ожидающее файл H.264 и AAC, может не принять его.

MP4 MKV WebM
Сильная сторона Воспроизведение на максимуме устройств и приложений Много дорожек, главы и метаданные в одном файле Веб-доставка с открытыми кодеками
Типичные кодеки H.264, AV1, VP9 со звуком AAC и другим Очень широкий набор VP8/VP9 (на практике и AV1) с Vorbis/Opus
Несколько звуковых дорожек и субтитров Возможно; зависит от форматов Ключевое преимущество Подмножество Matroska; проверяйте плеер
Главный риск Кодек внутри может не подойти устройству Устройство может вообще не открыть Matroska Устройство может не ожидать WebM

Воспринимайте таблицу как карту мест, где обычно возникают проблемы, а не как обещание для конкретного устройства. Настоящую гарантию даёт только документация самого плеера.

Выбирайте по месту воспроизведения

Отталкивайтесь от места, где файл должен воспроизводиться, а не от самого файла:

Где воспроизводить Что проверить Разумный вариант по умолчанию
Телефон, планшет или телевизор Поддерживаемые устройством контейнеры, видео- и аудиокодеки – в руководстве или на странице поддержки. MP4 с H.264 и AAC, если устройство не заявляет большего.
Видеоредактор Какие контейнеры и кодеки он импортирует. MP4, если редактор принимает кодек; иначе проверьте, что он ожидает.
Десктопный плеер вроде VLC Обычно справляется с большинством контейнеров и кодеков. Оставьте то, что скачали, включая MKV.
Архив с несколькими языками и субтитрами Нужно ли держать все дорожки вместе. MKV.
Веб-страница, которой вы управляете Поддержка в браузерах сочетания контейнера и кодека. Таблица MDN охватывает браузеры. MP4 или WebM – в зависимости от кодека.

Если неясно, что поддерживает устройство, проверьте короткий образец на самом устройстве, прежде чем конвертировать всю библиотеку.

Если файл не воспроизводится

Файл не открывается по одной из двух причин, и исправляются они по-разному. Идите по порядку.

  1. Проверьте его в плеере, который справляется со многими кодеками. Если там он играет, файл, скорее всего, в порядке, а ограничение – в исходном устройстве. Если нет – файл может быть неполным или повреждённым.
  2. Посмотрите, что внутри. Инструмент вроде ffprobe перечисляет потоки файла, в том числе видео- и аудиокодеки и дорожки субтитров, как показано в руководстве Mux по FFmpeg. Сравните с тем, что поддерживает цель.
  3. Определите, дело в контейнере или в кодеке.
    • Кодеки поддерживаются, а контейнер нет: remux.
    • Кодек не поддерживается: перекодирование.
  4. Делайте remux или перекодирование, только если нужно.

Расширение ничего из этого не сообщает. Переименование video.mkv в video.mp4 меняет метку, а не файл. Потоки всё равно упакованы как Matroska, и плеер, который это проверяет, откажется открывать файл или будет работать со сбоями.

Remux и перекодирование

Remux перекладывает закодированные потоки в другой контейнер без их декодирования. В FFmpeg эта операция называется streamcopy: пакеты копируются без декодирования и кодирования, поэтому это быстро и не меняет качества. Типичная команда выглядит так:

ffmpeg -i input.mkv -c copy output.mp4

Это работает, только если целевой контейнер может вместить кодеки исходника. Некоторые дорожки, например отдельные форматы субтитров, могут не поместиться, и FFmpeg сообщит об этом.

Перекодирование декодирует медиа и кодирует его заново другим кодеком. Оно нужно, когда устройство вообще не может декодировать кодек – например, AV1 на старом телевизоре. Оно занимает куда больше времени и при использовании кодеков с потерями стоит ещё одного поколения качества. Считайте его последним средством – после того как убедились, что remux не поможет. То же различие для скачиваемых потоков разобрано в руководстве по HLS.

Как это связано со скачиванием

Скачанное видео обычно приходит в том виде, в каком его отдал источник: прямым файлом MP4 или WebM либо сегментами потока, которые нужно собрать. При скачивании в MAX потоки копируются без перекодирования, что сохраняет качество, которое отдал источник. Если выбранные дорожки не помещаются в один контейнер, MAX автоматически переключается на подходящий – поэтому загрузка иногда оказывается .mkv. У записи прямых трансляций есть собственная настройка формата вывода: по умолчанию MKV, также доступны fMP4 и MP4.

MAX – не универсальный конвертер форматов. Он не позволяет конвертировать произвольный файл в другой контейнер или менять кодеки под устройство. Если нужен MKV в MP4 для файла, который у вас уже есть, сделайте remux специальным инструментом, а перекодируйте, только если препятствие – сам кодек. MAX Video Downloader бесплатен, но это инструмент для скачивания, а не монтажная программа.

Короткий чек-лист

  1. Назовите устройство или приложение, где файл должен воспроизводиться.
  2. Узнайте из его документации, какие контейнеры и кодеки оно поддерживает.
  3. Посмотрите, что в файле: видеокодек, аудиокодек, дополнительные дорожки.
  4. Сопоставьте. Если отличается только контейнер – remux. Если отличается кодек – перекодирование.
  5. Выбирайте MKV, чтобы держать много дорожек вместе, MP4 – для максимального охвата, WebM – для публикации в вебе с открытыми кодеками.
  6. Никогда не полагайтесь на переименование расширения.