Контейнер и кодек: почему расширение .mp4 ничего не гарантирует
Что на самом деле записано в файле с расширением видео, отчего ролик идёт без звука или чёрным экраном и когда смена контейнера обходится без потерь.
MP4, MKV, MOV, AVI и WebM — контейнеры. Контейнер не сжимает изображение и звук, он их упаковывает: описывает состав дорожек, хранит таблицу смещений для перемотки, метки времени, метаданные, флаг поворота, субтитры и главы. Сжатием занимается кодек, и его имя в расширении файла не отражено никак.
Из чего состоит файл
Внутри одного MP4 может лежать видео в H.264, H.265, AV1 или устаревшем MPEG-4 Part 2, звук в AAC, AC-3, MP3 или Opus, плюс любое число дополнительных дорожек. Плеер, открывая файл, читает заголовок, определяет кодеки и ищет соответствующие декодеры в системе. Отсутствие любого из них даёт узнаваемые симптомы: чёрный экран при работающем звуке — нет видеодекодера, изображение без звука — нет аудиодекодера.
Отсюда типичная ситуация: ролик, снятый на iPhone, не открывается на Windows. Расширение файла .mov или .mp4, но внутри HEVC, декодер которого в системе не установлен. Файл при этом полностью исправен, и достаточно один раз перекодировать видеодорожку в H.264, чтобы он открывался везде.
Чем контейнеры отличаются друг от друга
MP4 самый строгий по составу и потому самый совместимый: телевизоры, браузеры, монтажные программы и площадки принимают его без оговорок. MKV не ограничивает набор кодеков и умеет неограниченное число дорожек, глав и субтитров, включая шрифтовые вложения, — за это его выбирают для хранения, но многие телевизоры его не читают. MOV близок к MP4 по устройству, однако допускает профессиональные кодеки, альфа-канал и тайм-код. WebM — подмножество Matroska, ограниченное VP8, VP9, AV1, Vorbis и Opus, и рассчитанное на браузер. AVI старше всех, не хранит переменную частоту кадров и современные кодеки в нём работают через костыли.
Когда конвертация не портит картинку
Если кодеки внутри исходника допустимы в целевом контейнере, дорожки копируются побитово — это режим ремукса. MKV с H.264 и AAC переезжает в MP4 за секунды, и результат неотличим от источника вплоть до байтов потока. Так же работают MOV → MP4 с совместимым содержимым и MP4 → MKV в обратную сторону.
Перекодирование включается только при несовместимости: HEVC в контейнере, который должен остаться воспроизводимым на старой технике; звук AC-3, который MP4 формально допускает, но браузеры не декодируют; VP9 при переводе в MP4. Отличить один режим от другого можно по времени: ремукс ограничен скоростью диска, перекодирование — производительностью кодировщика. Если конвертация двухгигабайтного файла заняла двадцать секунд, содержимое не трогали.