Видео и кодеки
Почти всё, что сбивает с толку в видеофайлах, происходит из одного различия — между коробкой и тем, что в ней лежит. Здесь собраны слова и для того, и для другого, а также для операций, перемещающих контент между ними.
-
Контейнер
обёртка, формат -
Структура файла, объединяющая видео-, аудио- и субтитровые дорожки и описывающая, где находится каждая из них. MP4, MKV, AVI и WebM — это контейнеры. Контейнер сам по себе ничего не сжимает.
Представь его как архивную коробку с этикеткой содержимого. Коробка говорит: здесь видеодорожка, закодированная таким-то образом; там две аудиодорожки на этих языках; субтитры вот в этом смещении. Она не имеет никакого мнения о том, как что-либо из этого было сжато.
Именно поэтому одно и то же видео может существовать в MP4 и в MKV с идентичным качеством картинки и идентичным размером файла, и именно поэтому один из этих двух открывается на iPhone, а другой нет. Разница в коробке, а не в содержимом.
Смотри также: КодекРемультиплексирование
-
Кодек
кодировщик-декодер -
Метод, используемый для сжатия видео- или аудиопотока и для его обратного разжатия при воспроизведении. H.264, HEVC, AV1, AAC и MP3 — это кодеки. Кодек — это не формат файла.
Название — это сокращение от «кодировщик-декодер». Кодирование отбрасывает детали таким расчётливым способом, чтобы это было трудно заметить, а декодирование восстанавливает приближение к оригиналу из того, что осталось. Чем лучше кодек, тем менее заметны потери при заданном размере.
Устройство воспроизводит файл, когда умеет читать контейнер *и* декодировать каждый кодек внутри него. Нужны обе половины, и когда файл открывается, но ничего не показывает, значит подвела именно вторая половина.
Смотри также: КонтейнерАппаратное декодирование
-
H.264
AVC, MPEG-4 Part 10 -
Видеокодек, который умеет декодировать буквально всё. Опубликован в 2003 году, до сих пор остаётся самым безопасным выбором для совместимости и аппаратно ускоряется на любом телефоне, компьютере и телевизоре, выпущенном за последние пятнадцать лет.
H.264 победил настолько убедительно, что вопросы «сыграет ли это везде» и «это H.264?» почти совпадают. Это не самый эффективный из доступных кодеков — и HEVC, и AV1 делают больше меньшим числом бит, — но по широте поддержки с ним никто рядом не стоит.
У него есть профили, и один из них создаёт проблемы на устройствах Apple: High 10, часто обозначаемый Hi10P, кодирует десять бит на цветовой канал вместо восьми. Аппаратные декодеры работают только с 8 битами, поэтому файл Hi10P на устройстве без программного резерва воспроизводит звук вообще без картинки.
Смотри также: HEVCАппаратное декодирование10 бит
-
HEVC
H.265 -
Преемник H.264, дающий примерно вдвое меньший размер при том же качестве. Любое устройство Apple начиная с 2015 года декодирует его аппаратно, и именно в него iPhone ведёт запись.
Именно HEVC сделал 4K практичным на телефонах: та же картинка при примерно вдвое меньшем битрейте. Apple приняла его рано и полностью, поэтому на железе Apple это такой же безопасный выбор, как и H.264.
В остальном мире всё сложнее. Патентное лицензирование вокруг HEVC было настолько спорным, что веб-браузеры не спешили добавлять его поддержку, — именно этот пробел и был создан, чтобы заполнить его формат AV1.
-
AV1
-
Бесплатный по лицензии кодек, опубликованный в 2018 году, эффективнее HEVC и, в отличие от него, свободный от лицензионных споров. Аппаратное декодирование на устройствах Apple появилось только с iPhone 15 Pro.
AV1 существует потому, что лицензирование HEVC заставило крупнейшие стриминговые компании и производителей веб-браузеров захотеть альтернативу, которую можно распространять, никому не платя. Сегодня в этом формате доставляется значительная часть веб-видео.
Загвоздка в стоимости декодирования. Без аппаратной поддержки AV1 декодируется программно, что возможно, но заметно расходует батарею и может заикаться на высоких разрешениях. На старых устройствах версия того же видео в H.264 окажется файлом получше.
Смотри также: HEVCАппаратное декодирование
-
Битрейт
скорость потока -
Сколько данных занимает одна секунда видео или звука, обычно в мегабитах в секунду. Это главное, что определяет и размер файла, и то, сколько работы придётся выполнить устройству.
Внимание достаётся разрешению, но то, как файл на самом деле выглядит, решает битрейт. Файл 4K с низким битрейтом выглядит хуже, чем файл 1080p с высоким, потому что кодировщику пришлось отбросить больше, чтобы уложиться в целевой размер.
Именно битрейт обычно и стоит за заикающимся файлом. Когда видео нормально играет на компьютере и заикается на телефоне, с файлом всё в порядке: он просто требует больше работы по декодированию в секунду, чем готов выполнить этот чип.
Смотри также: КодекАдаптивный битрейт
-
Ремультиплексирование
перепаковка -
Перенос существующих видео- и аудиопотоков из одного контейнера в другой без их перекодирования. Без потерь и достаточно быстро, чтобы упираться в скорость диска, а не процессора.
Ремультиплексирование копирует потоки, не трогая ни единого кадра. Часовой MKV с H.264 и AAC превращается в MP4 за секунды, побитово идентичный по картинке и звуку.
Это работает только тогда, когда целевой контейнер принимает то, что несёт исходный, — MP4 примет H.264 и AAC, но не примет VP9 или Vorbis. Когда говорят, что конвертация прошла «мгновенно», на самом деле выполнили ремультиплексирование. Когда это заняло час, что-то было перекодировано заново.
Смотри также: ТранскодированиеКонтейнер
-
Транскодирование
перекодирование, конвертация -
Декодирование потока и его повторное кодирование, обычно в другой кодек или на меньшем битрейте. Медленно, и каждый раз с потерями — вернувшееся качество назад не вернёшь.
Именно это люди имеют в виду под «конвертацией видео», и это по-настоящему затратная операция: каждый кадр декодируется, обрабатывается и заново сжимается. Это правильный ответ, когда кодек действительно не поддерживается или файл необходимо уменьшить.
Это неверный ответ на «мой телефон это не открывает», если хватило бы ремультиплексирования, и это слабый ответ для файла, у которого единственная проблема — аудиодорожка в DTS: замена только этой дорожки оставляет картинку нетронутой.
Смотри также: РемультиплексированиеБитрейт
-
Аппаратное декодирование
декодирование железом -
Декодирование видео на выделенном чипе, а не на основном процессоре. Гораздо быстрее, гораздо прохладнее и гораздо бережнее к батарее — но обрабатывает только те кодеки, под которые он был создан.
Каждый телефон несёт видеодекодер с фиксированной функцией, крайне эффективно справляющийся с H.264 и HEVC. Всё, что он не поддерживает, падает на программное декодирование, которое работает, но расходует батарею, выделяет тепло и может не успевать на высоких разрешениях.
Именно поэтому поддержка формата на телефоне — это не простое «да» или «нет». Одно и то же устройство может безупречно программно воспроизводить кодек на 1080p и заикаться на том же кодеке в 4K, и ни один из этих результатов не говорит о том, что файл повреждён.
-
10 бит
Hi10P, High 10 -
Видео, хранящее десять бит на цветовой канал вместо восьми, ради более плавных градиентов. В HEVC это нормально и хорошо поддерживается; в H.264 это самая частая причина, по которой на iPhone у файла есть звук, но нет картинки.
Больше бит на канал означает более тонкие шаги между оттенками, что убирает заметные полосы на тёмном небе и в медленных затемнениях. Для HDR это требование, а не изыск.
Проблема именно в H.264. 10-битный H.264 выходит за рамки того, что реализуют аппаратные декодеры, а у системного плеера Apple нет для него программного пути, поэтому звук играет, а картинка так и не появляется. Аниме-релизы активно используют этот формат, поэтому проблема встречается намного чаще, чем можно было бы подумать по общей доле формата.
Смотри также: H.264Аппаратное декодирование
-
Ключевой кадр
I-кадр -
Кадр, сохранённый целиком, а не как разница с предыдущим кадром. Перемотка может попасть только на ключевой кадр, поэтому видео иногда прыгает в чуть иной момент, чем тот, что ты просил.
Сжатие видео работает, описывая бóльшую часть кадров как изменения относительно соседних. Только ключевые кадры существуют самостоятельно, и обычно они появляются каждые две-десять секунд.
Когда ты тянешь полосу прокрутки, плеер находит ближайший ключевой кадр и начинает с него. Более редкое расположение ключевых кадров делает файл меньше, а перемотку — грубее; этот компромисс задаётся во время кодирования и не может быть изменён позже без перекодирования.
Смотри также: ТранскодированиеСегмент