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 не работает на устройстве, причина обычно одна из этих:
- В устройстве или программе нет декодера HEVC. Старое железо, старые операционные системы или плеер без нужного кодека могут открыть контейнер и всё равно не справиться с видео.
- Ограничение по разрешению или частоте кадров. Apple отмечает, что на некоторых старых устройствах поддержка HEVC зависит от разрешения и частоты кадров и что видео до 1080p и до 60 кадров/с шире совместимо. Это относится к устройствам Apple, поэтому смотрите документацию своего устройства, а не переносите эти цифры на другие.
- Проблема в контейнере, а не в кодеке. Плеер может справляться с кодеком, но не с контейнером или не с отдельной аудио- или субтитровой дорожкой.
Симптомы разные: чёрный экран со звуком, подтормаживание, ошибка о неподдерживаемом формате или файл, который открывается не во всех программах. Звук без картинки часто указывает на отсутствие видеодекодера, но это подсказка, а не доказательство: сначала подтвердите кодек.
Узнайте, что внутри файла
Проверьте кодек, прежде чем что-либо менять. Разрешение, частоту кадров и кодеки показывают программы вроде 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. О выборе между версиями – в статье Как выбрать качество и разрешение при скачивании видео.