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

H.264 или H.265 (HEVC): совместимость и размер файла

H.264 или H.265 (HEVC): совместимость и размер файла

H.265, он же HEVC, может хранить ту же картинку в меньшем объёме, чем H.264 (он же AVC). H.264 надёжнее, когда вы не знаете, чем файл будут открывать. Итак: выбирайте HEVC, если точно известно, что плеер его поддерживает, а место или трафик важны; выбирайте H.264, если совместимость важнее размера. Насколько меньше получится у HEVC, зависит от видео и от настроек кодирования, поэтому любую фиксированную цифру вроде «на 50% меньше» воспринимайте как примерный, часто цитируемый ориентир, а не как обещание: опубликованные сравнения дают разную экономию при разных метриках качества и условиях тестов.

Дальше – как проверить, какой кодек в файле, почему он может не работать на конкретном устройстве и что пробовать в первую очередь.

Это кодеки, а не типы файлов

H.264 и H.265 – видеокодеки, то есть два разных способа сжатия видео, стандартизированные ITU-T как Recommendation H.264 и Recommendation H.265. MP4 и MKV – контейнеры, которые упаковывают сжатые видео и звук в один файл.

Это независимые вещи, и путаница между ними порождает большую часть недоразумений:

  • В файле .mp4 может быть H.264 или H.265 (и другие кодеки).
  • В файле .mkv тоже может быть любой из них.
  • Переименование файла меняет подпись, а не содержимое.

Поэтому вопрос «открывается ли файл?» – это на самом деле два вопроса: понимает ли плеер контейнер и понимает ли он кодек внутри при таком разрешении и частоте кадров. Про контейнеры подробно написано в статье о MP4, MKV и WebM.

Компромисс

H.264 (AVC) H.265 (HEVC)
Эффективность сжатия Базовая Как правило, выше при сопоставимом визуальном качестве
Совместимость Обычный вариант по умолчанию для устройств, браузеров и редакторов Зависит от устройства, ОС, программы и иногда от разрешения и частоты кадров
Нагрузка при декодировании Ниже Выше, что важнее всего на старом железе
Лучше всего, когда Плеер неизвестен или старый, или файл должен просто открыться Известно, что плеер поддерживает, а размер или трафик важны

Выигрыш в эффективности реален. На странице поддержки Apple о HEIF и HEVC сказано, что HEVC сжимает лучше H.264, то есть занимает меньше места при том же визуальном качестве. Но «насколько меньше» – не константа. Это зависит от исходного материала, кодировщика и его настроек и от целевого качества, поэтому опубликованные цифры экономии различаются и планировать хранилище по какой-то одной не стоит. Материал, который плохо сжимается, – с шумом, зерном, постоянным движением, – обычно экономится меньше, чем чистая запись экрана.

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

Если файл HEVC не работает на устройстве, причина обычно одна из этих:

  1. В устройстве или программе нет декодера HEVC. Старое железо, старые операционные системы или плеер без нужного кодека могут открыть контейнер и всё равно не справиться с видео.
  2. Ограничение по разрешению или частоте кадров. Apple отмечает, что на некоторых старых устройствах поддержка HEVC зависит от разрешения и частоты кадров и что видео до 1080p и до 60 кадров/с шире совместимо. Это относится к устройствам Apple, поэтому смотрите документацию своего устройства, а не переносите эти цифры на другие.
  3. Проблема в контейнере, а не в кодеке. Плеер может справляться с кодеком, но не с контейнером или не с отдельной аудио- или субтитровой дорожкой.

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

Узнайте, что внутри файла

Проверьте кодек, прежде чем что-либо менять. Разрешение, частоту кадров и кодеки показывают программы вроде MediaInfo и ffprobe. С помощью ffprobe из FFmpeg:

ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,profile,width,height,avg_frame_rate -of default=noprint_wrappers=1 input.mp4

codec_name=h264 означает H.264/AVC, а codec_name=hevc – H.265/HEVC. В выводе также есть разрешение и частота кадров, которые нужно сверить с ограничениями вашего устройства. MAX показывает кодеки найденного медиа до загрузки, так что видно, какой кодек у версии – H.264 или HEVC, и можно не скачивать то, что плеер не потянет.

Затем сверьтесь со списком поддерживаемых форматов самого устройства.

Выберите наименее разрушительное решение

Подбирайте способ под причину:

  • Кодек поддерживается, а контейнер – нет: remux. Те же закодированные потоки переносятся в другой контейнер без перекодирования, качество не меняется. FFmpeg описывает это как streamcopy: пакеты копируются без декодирования и кодирования.
  • Устройство вообще не умеет декодировать кодек: remux не поможет, ведь видео по-прежнему HEVC. Нужно перекодировать его в поддерживаемый кодек или найти версию H.264. В документации FFmpeg сказано, что перекодирование требует больших вычислений и в большинстве случаев ухудшает качество, и рекомендуется применять его, только когда необходимо, например чтобы отдать поток тому, что не может декодировать исходный кодек.
  • Перед загрузкой есть выбор версий: возьмите ту, которую устройство воспроизводит. Это самое дешёвое решение, без какой-либо конвертации.

Страница Apple даёт реальный пример двух последних случаев. Её устройства могут снимать в более совместимом H.264 вместо HEVC, QuickTime Player на Mac умеет экспортировать видео HEVC с вариантом «Greater Compatibility (H.264)», а материал, отправленный на устройство без поддержки HEVC, может быть автоматически преобразован. Вывод: конвертация – это осознанное перекодирование с потерей качества, а не переименование.

Как решать на практике

Это примеры ситуаций, а не результаты тестов:

  • Видео для старого телевизора или неизвестного получателя: лучше H.264, даже если файл больше.
  • Библиотека на современном компьютере или телефоне, где воспроизведение HEVC подтверждено и место ограничено: HEVC – разумный выбор.
  • Монтаж в программе, которую вы не проверяли: считайте H.264 самым безопасным, пока не подтверждена поддержка HEVC.
  • Файл уже в HEVC, а плеер его отвергает: выясните, дело в контейнере или в кодеке, прежде чем конвертировать.

Что это значит при загрузке через MAX

MAX скачивает версию, которую отдаёт источник, и копирует её потоки без перекодирования. Когда страница предлагает и H.264, и HEVC, сведения о кодеках помогают выбрать ту, с которой справится ваше устройство. MAX не конвертирует HEVC в H.264 и не меняет кодеки иным образом и не может гарантировать, что скачанный файл воспроизведётся на конкретном устройстве. Если вы получили файл HEVC, который плеер не декодирует, нужен отдельный транскодер или другая версия. MAX Video Downloader бесплатен и работает с медиа, которое отдаёт страница, но не с YouTube и не с контентом под DRM. О выборе между версиями – в статье Как выбрать качество и разрешение при скачивании видео.