MP4, MKV или WebM: какой формат видео выбрать
Лучшего формата видео не существует – есть лучший формат для того места, где файл должен воспроизводиться. MP4, MKV и WebM – это контейнеры: они упаковывают видео, звук, субтитры и метаданные в один файл. Какой из них подойдёт, зависит от плеера, от дорожек, которые нужно сохранить, и от кодеков внутри, а расширение файла говорит только о первом.
Практическое правило для большинства скачанных видео:
- Смотрите на телефоне, телевизоре, планшете или монтируете в редакторе и хотите минимум хлопот: обычно первый выбор – MP4, потому что это очень широко поддерживаемый контейнер. Гарантии это не даёт: кодек внутри тоже должен поддерживаться.
- Нужно хранить несколько звуковых дорожек, субтитров или главы в одном файле и смотреть на компьютере с хорошим плеером: для этого создан MKV.
- Публикация в вебе: WebM – контейнер, ориентированный на веб, хотя MP4 там тоже распространён.
- Файл не воспроизводится: сначала выясните, дело в контейнере или в кодеке, и только потом что-то меняйте.
Остальная часть статьи объясняет логику, чтобы вы могли принять то же решение для устройства, которого нет в этом списке.
Контейнер и кодек
В файле два слоя, которые легко перепутать.
Кодек сжимает само видео или звук: H.264, AV1 и VP9 – видеокодеки, AAC и Opus – аудиокодеки. Контейнер – это оболочка вокруг сжатых потоков. Описание самого Matroska говорит прямо: контейнер – не формат сжатия, а оболочка, способная вмещать множество аудио-, видео- и субтитровых потоков.
Поэтому расширение не является меткой совместимости. В руководстве MDN по веб-форматам медиаконтейнеров для каждого контейнера перечислены кодеки, которые он может содержать, и поддержка в браузерах. Поддержка контейнера не означает поддержки каждого кодека внутри. Два файла .mp4 могут вести себя по-разному: в одном H.264 и AAC, в другом AV1, и конкретное устройство может справиться с одним, но не с другим.
Поэтому вопрос совместимости состоит из трёх частей, а не из одной:
- Поддерживает ли цель этот контейнер?
- Поддерживает ли она видеокодек с использованным профилем и разрешением?
- Поддерживает ли она аудиокодек и формат субтитров в файле?
Три контейнера
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 – в зависимости от кодека. |
Если неясно, что поддерживает устройство, проверьте короткий образец на самом устройстве, прежде чем конвертировать всю библиотеку.
Если файл не воспроизводится
Файл не открывается по одной из двух причин, и исправляются они по-разному. Идите по порядку.
- Проверьте его в плеере, который справляется со многими кодеками. Если там он играет, файл, скорее всего, в порядке, а ограничение – в исходном устройстве. Если нет – файл может быть неполным или повреждённым.
- Посмотрите, что внутри. Инструмент вроде
ffprobeперечисляет потоки файла, в том числе видео- и аудиокодеки и дорожки субтитров, как показано в руководстве Mux по FFmpeg. Сравните с тем, что поддерживает цель. - Определите, дело в контейнере или в кодеке.
- Кодеки поддерживаются, а контейнер нет: remux.
- Кодек не поддерживается: перекодирование.
- Делайте 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 бесплатен, но это инструмент для скачивания, а не монтажная программа.
Короткий чек-лист
- Назовите устройство или приложение, где файл должен воспроизводиться.
- Узнайте из его документации, какие контейнеры и кодеки оно поддерживает.
- Посмотрите, что в файле: видеокодек, аудиокодек, дополнительные дорожки.
- Сопоставьте. Если отличается только контейнер – remux. Если отличается кодек – перекодирование.
- Выбирайте MKV, чтобы держать много дорожек вместе, MP4 – для максимального охвата, WebM – для публикации в вебе с открытыми кодеками.
- Никогда не полагайтесь на переименование расширения.