В своё время разработка кодека H264 стала настоящим прорывом, потому что получилось посадить за один стол людей, занимающихся телевидением, IP камерами, конференц-связью и родить стандарт, которого в целом хватило всем.
Напоминаю, что кодек — это не конкретный алгоритм, а описание форматов упаковки видео так, что бы упихнуться в предельно сжатое количество бит. Энкодер волен выбирать способы упаковки согласно стандарта кодека.
Так вот H264 — это сочетание хорошего кодека, хороших энкодеров и массы приличных декодеров. Но что же происходит с H265?
H265 — это стандарт, который приходит на смену H264. Его прибытие стало омрачено сомнительной авантюрой гугла с их VP6, VP9, VP10 и сказками о том, что кодеки серии VP лучше любого H264 и т.п.
Главная суть H265 в том, что он продается как решение для размеров экранов выше чем FullHD. Для чего он реально годится мы поговорим ниже, но мир устроен так, что сначала надо продать. Вот для 4K он и продается.
Я хочу немного поговорить о текущем статусе поддержки H265, потому что к нам с этим обращаются и приходится проводить ликбез каждый раз.
Кодирование
На сегодняшний день H265, он же HEVC уже поддерживается на большом количестве энкодеров: софтверные, обычные аппаратные (Nvidia NVENC, Intel QSV) и железные аппаратные.
Какое-то заметное применение H265 можно встретить на спутниковом телевидении (редкие, но уже встречающиеся каналы с гигантским битрейтом), IP камеры и всякие бесчисленные коробочки для захвата и кодирования HDMI (и немножко SDI).
Зачем нужно захватывать HDMI и публиковать на сайт? Ну как бы догадайтесь сами, особенно если железка обещает вскрыть HDCP. Подскажу лишь, что это очень популярно для стриминга игр, когда не хочется добавлять никакой нагрузки на компьютер.
Здесь надо быть очень аккуратными с тем, что именно будет уметь железка или софтина. Так, например, Hisilicon достаточно давно выпустил первый чипсет с поддержкой H265 для IP-камер, а вот софт отстал чуть ли не на полтора года от них. Сегодня до сих пор продается полно камер, у которых написано H265, а они не могут его отдавать в реальном времени — только экспортировать файлы через нерабочий китайский софт. В чём тут выражается поддержка H265, продавцы ответить не могут, но упорно кивают головой: да, да, можем h265.
Аналогичная проблема и с RTMP энкодерами. Один из частейших вопросов: «а что, ваш софт не умеет H265 по RTMP?».
Это не наш софт «не умеет», а RTMP не умеет H265. В RTML используется flv-подобная упаковка кадров и H265 ни в одном, ни в другом стандарте как доступные не отмечены. Есть всякие хитрые хаки, позволяющие запихать H265 в протокол, не рассчитанный на это, но называть это RTMP уже будет перебор — это будет проприетарный, закрытый протокол. Подобные изменения существуют, делаются они китайцами, а это как правило означает просто истеричное отношение к предложениям поделиться спецификацией на протокол.
Т.е. железо может уметь H265, а софт, запущенный на нём, может отставать в развитии и просто не уметь с ним работать и такого пока ещё полно.
Вещание
Сейчас в дикой природе H265 проще всего встретить на IP-камерах: там оно уже есть и уже потихоньку распространяется, спасибо HUAWEI. Так же можно на спутниках найти 30-мегабитные каналы, сжатые в H265.
По нашему опыту постепенно делаются попытки внедрить его в различных OTT-сервисах, где есть контроль за устройством.
По поводу вещания ситуация такая: H265 в протоколе HLS поддерживается всеми уже очень давно, а эппл очень вовремя очухались и зафиксировали очевидное в стандарте. Но всем пока что плевать, потому что мало какие айфоны могут его проигрывать.
Т.е. важно запомнить: MPEG-TS давно и надежно умеет передавать H265, а значит то, что называют UDP или HTTP с большой вероятностью тоже сможет.
Так же H265 передается по RTSP: есть упаковка и в SDP, и в RTP. Остается старый нюанс с передачей bframes по RTSP, но это отдельная головная боль.
Если вы встречаете H265 и RTMP, то скорее всего это болтовня, но если оно реально работает, значит люди просто напихали байт и пользуются патченым сервером и клиентом. В стандартный RTMP H265 не влезает.
Проигрывание
Пока забудьте =)
Из десктопных браузеров показывать H265 сейчас фактически умеет только Microsoft Edge, остальные нет.
Есть проигрывание на телевизионных приставках, SmartTV и в программах/приложени, но браузеры пока очень сильно отстают.
Так же надо понимать, что на телефонах сейчас h265 скорее всего будет играться на процессоре, т.е. если хватит батарейки на просмотр рекламы, уже неплохо.
Конкуренция
H265 сравнивают с h264: ведь разницу в битрейте надо ещё увидеть, а поддержка h264 сейчас есть абсолютно везде
H265 сравнивают с VP10, потому что так попросил Гугл. На практике у VP10 проблемы с ещё меньшей поддержкой со стороны железа (а значит для него нужно ещё больше батареек и процессорной мощности) и плохие протоколы проигрывания.
H265 начали сравнивать с AV1, но это пока вообще можно не рассматривать — слишком новая штука. Очень интересно, подождем несколько лет.
Резюме
H265 развивается, распространяется, но на сегодняшний день скорее всего не будет ничего фатального, если вы его пока не рассматриваете.
У него уже на старте есть конкуренты, с которыми прийдется побороться, но есть и хорошая стартовая позиция в виде приличной родословной (от тех же людей, что и H264) и неплохая поддержка в транспортах и протоколах доставки видео.
Автор: erlyvideo