Content-aware и context-aware кодирование

Автор: Николай СапуновОбновлено: август 202618 мин чтения
Содержание статьи +

TL;DR

Content-aware кодирование анализирует содержимое видео – сложность изображения, количество движения в каждой сцене и то, куда зритель будет смотреть – и распределяет биты пропорционально, а не равномерно по всем таймлам. Context-aware кодирование, в свою очередь, учитывает, как и на каких устройствах зрители смотрят контент – на телефоне или телевизоре, через 4G или оптоволокно, какие кодеки поддерживает устройство – и настраивает adaptive bitrate ladder (набор пар «разрешение–битрейт», между которыми переключается плеер) под профиль аудитории. Эти два подхода дополняют друг друга, часто путают их, и вместе позволяют экономить 20–50% хранилища и трафика при неизменном качестве изображения с точки зрения зрителя – именно поэтому отчёт NETINT State of Video Encoding 2026 называет content-adaptive кодирование «самым ярким индикатором зрелости энкодинг-пайплайна» в продакшене. Эта статья объясняет оба подхода, приводит примеры open-source и коммерческих пайплайнов, в которых они уже реализованы, и предлагает одностраничный плейбук – с чего начать внедрение.

Зачем это нужно

Если ваша команда платит за CDN, content-aware кодирование – самый дешёвый и масштабный способ сэкономить деньги в видеопайплайне в этом году. Экономия сосредоточена на самых популярных контенте, инженерная работа реализуется постепенно, без полной переработки платформы, а технология настолько зрелая, что каждый крупный облачный энкодер предлагает её «из коробки». Context-aware кодирование – второй рычаг: оно не позволяет отправлять 4K-стрим зрителю, который смотрит на 720p-экране телефона по 4G, а это тихая утечка бюджета почти в каждом пайплайне, где «у нас уже есть HD, SD и 4K».

Статья – для продакт-менеджеров, основателей, лидов видеоопераций и инженерных менеджеров, которым нужно прочитать вендорский питч вроде «AI content-aware encoding, 40% экономии битрейта» и понять, на чём держится обещание вендора, что из этого реально работает, и какие вопросы задать дальше. Мы начнём с простейшей идеи – «кодируем каждое видео под его сложность», проследим, как она развивалась: от per-scene до region-of-interest, а затем до оптимизации по контексту доставки, и завершим разбором дерева решений: что внедрять в первую очередь.

Два слова, два смысла – индустрия в них путается

Термин «content-aware encoding» примерно на год старше, чем «context-aware encoding», и в индустрии оба используются настолько небрежно, что иногда добавляют и третий – context-aware recording, который относится уже к совершенно другой задаче. Прежде чем двигаться дальше, зафиксируем определения, потому что каждый «AI-encoder» в этом году в своих презентациях их путает.

Content-aware кодирование анализирует особенности самого видео. Мультфильм или спорт? Выступление в кадре или съёмка с дрона? Тёмный интерьер или яркий экстерьер? Однородное небо или текстура травы? Энкодер использует эти характеристики, чтобы определить, сколько битов выделить на весь ролик, на каждую сцену или даже на отдельные области внутри каждого кадра. Технологию также называют content-adaptive encoding (CAE), per-title encoding, per-scene encoding, shot-based encoding, region-of-interest encoding и content-aware bitrate ladder generation. Это не синонимы – они работают на разной степени детализации, – но у них общий вход и общий тип выхода: на вход подаётся исходное видео, на выходе – план распределения битрейта, основанный на том, что увидел энкодер.

Context-aware кодирование учитывает особенности доставки – кто будет смотреть видео, на каком устройстве и через какую сеть. Телефон с 4G и 6-дюймовым экраном разрешения 720p не нуждается в 4K-качестве; 65-дюймовый телевизор, подключённый по оптоволокну, не требует 360p. Термин ввёл Юрий Резник в Brightcove в 2017 году, а наиболее чёткое опубликованное определение содержится в его слайдах с DASH-IF Workshop 2019: context-aware кодирование «использует разнообразие характеристик устройств доставки и сетей доступа» с целью «создать набор закодированных последовательностей, оптимально подходящих для ABR-стриминга на устройствах и в сетях каждого класса». 1 На вход подаётся распределение устройств и сетей в вашей аудитории; на выходе получается adaptive bitrate ladder – набор разрешений и битрейтов, между которыми плеер переключается в процессе воспроизведения.

Эти два подхода дополняют друг друга. Content-aware определяет, как для данного видео выглядит оптимальная кривая «битрейт–качество». Context-aware указывает, для данной аудитории, какие точки на этой кривой следует реально использовать. В продакшене ведущие стриминговые платформы применяют оба подхода – часто в одном пайплайне. Buyers' Guide от Streaming Media 2018 года стал первым в индустрии, кто письменно зафиксировал это различие; шесть лет спустя большинство маркетинговых страниц всё ещё смешивают его в один «CAE» – из-за чего продуктовые команды регулярно покупают одно, думая, что приобретают другое. 2

Рисунок 1. Два подхода делят аббревиатуру, но решают разные задачи. Content-aware определяет, сколько битов выделить на каждую часть исходного видео. Context-aware решает, какие ступени итоговой bitrate ladder реально отдавать аудитории – с учётом особенностей устройств и сетей.

Content-aware кодирование – три уровня гранулярности

У content-aware кодирования три уровня глубины обработки, и важно понимать все три, поскольку экономия, инженерные затраты и операционный риск растут пропорционально глубине.

Самый простой подход – per-title encoding: пайплайн выбирает одну bitrate ladder для всего видео, исходя из его общей сложности. Netflix опубликовал первую широко цитируемую статью о per-title в декабре 2015 года – она стала катализатором распространения content-aware технологий в индустрии. 3 Суть метода: закодировать видео в нескольких разрешениях и при разных настройках качества, получить набор точек «разрешение–битрейт–качество»; построить convex hull (внешнюю огибающую лучших вариантов) на плоскости «битрейт–качество»; разместить ступени ladder вдоль этой огибающей на тех битрейтах, которые реально используют зрители. В качестве метрики качества применяется VMAF (Video Multi-Method Assessment Fusion) – открытая перцептивная метрика от Netflix, шкала которой простирается от 0 до 100, где 93 соответствует качеству вещания, а 95 – почти неотличимо от оригинала. 4 Per-title обычно позволяет сэкономить 20–50% трафика при неизменном уровне VMAF.

Средний уровень – per-scene или shot-based encoding: пайплайн подбирает оптимальный битрейт для каждого кадра. Shot – это непрерывный план камеры без разрезов, и в типичном 90-минутном фильме их насчитывается от 700 до 1200, средняя продолжительность – около четырёх секунд. Dynamic Optimizer от Netflix, запущенный в продакшене в 2018 году, кодирует каждый shot в нескольких точках качества, затем применяет Lagrangian-оптимизацию ко всему видеоряду – выбирая для каждого кадра такое качество, которое минимизирует общий битрейт при заданном среднем VMAF – и после этого объединяет результат. 5 6 Netflix сообщил о дополнительном снижении битрейта на 27–37% по сравнению с per-title кодированием для x264, x265 и VP9, измеренном по VMAF. 5 Коммерческое решение Per-Scene Adaptation от Bitmovin показывает сопоставимые результаты – до 30% экономии трафика, типичный диапазон – 5–15%, а Mux, AWS Elemental, Brightcove, Harmonic и Ateme предлагают свои реализации. 7

Самый глубокий – region-of-interest (ROI) encoding: энкодер варьирует quantization parameter (параметр, определяющий, насколько агрессивно сжимается каждый блок) внутри одного кадра. Классический пример применения – видеоконференции: больше битов выделяется на лицо, меньше – на фон. Face-детектор – в современных пайплайнах это небольшая CNN, например RetinaFace или MediaPipe Face Detector, запускаемая раз в несколько кадров – определяет область с лицом, после чего энкодер снижает QP внутри этой области и повышает его за её пределами. Опубликованные академические реализации ROI-кодирования показывают улучшение PSNR на 3–5 дБ и SSIM на 15–20% в области лица при неизменном общем битрейте. 8 9 Сегодня ROI-кодирование используется в камерах Hikvision и Axis, в пайплайнах Zoom и Teams, а также как опциональный pass в AWS Elemental MediaConvert. Это самая глубокая и самая ресурсоёмкая форма content-aware кодирования, поскольку энкодер должен запускать детектор и интегрировать его результаты в цикл rate-distortion, однако для задач, где внимание зрителя стабильно сосредоточено на одной области – лице в звонке, номере автомобиля в наблюдении, шайбе в хоккее – перцептивный выигрыш оказывается значительным.

Эти три уровня вложены. Per-scene строится поверх per-title (всё равно нужна разумная per-title-лестница, чтобы определить целевые битрейты); ROI – поверх per-scene (проходы ROI применяются внутри кодирования каждого кадра). Зрелый пайплайн 2026 года запускает все три: выбирает per-title-лестницу, разбивает видео на кадры, проводит лагранжеву оптимизацию по кадрам, а затем применяет ROI внутри каждого – в тех вертикалях, где выигрыш от выделения лиц или объектов интереса окупает затраты на работу детектора.

Рисунок 2. Три уровня content-aware кодирования вложены друг в друга. Per-title задаёт общий битрейт. Per-scene перераспределяет его между кадрами. ROI перераспределяет биты внутри кадра в области, на которые обращает внимание зритель.

Покажите математику – per-scene экономия в одном абзаце

Возьмём 90-минутную драму с битрейтом 4 Мбит/с в формате 1080p per-title. Полный объём данных на одного зрителя:

объём = битрейт × время
      = 4 Mbps × 5 400 секунд
      = 21 600 мегабит
      = 2 700 мегабайт
      ≈ 2,70 GB

Теперь разрежем тайтл на 900 кадров и предположим, что оптимизатор по сценам в среднем экономит 17% – цифру, которую Netflix получил при сравнении с оптимизацией по каждому тайтлу с помощью своего Dynamic Optimizer. 5 Новый объём:

объём_new = 4 Mbps × (1 − 0,17) × 5 400 с
          = 3,32 Mbps × 5 400 с
          = 17 928 Mb
          = 2 241 MB
          ≈ 2,24 GB

Экономия – 459 МБ на один просмотр. При одном миллионе просмотров в год и стоимости CDN в один цент за гигабайт экономия от сокращённого трафика составит:

экономия = 0,459 GB × 1 000 000 × $0,01
         = $4 590 в год на тайтл

Арифметика проста: дельта на просмотр × количество просмотров × цена за единицу – и весь бизнес-кейс в одной строке. Процентный выигрыш на одном тайтле может показаться небольшим, но долларовая сумма растёт вместе с количеством просмотров и концентрируется в самых популярных тайтлах каталога. Для стримингового сервиса с 1000 активных тайтлов и длиннохвостым распределением просмотров такая экономия складывается в средние шестизначные суммы в год при инженерной инвестициях примерно в один квартал работы.

Контекстно-зависимое кодирование – энкодинг под реальную аудиторию

Контекстно-зависимое кодирование начинается с вопроса, который фиксированные лестницы никогда не задают: кто будет смотреть этот уровень и на чём? 4K-уровень теряется на зрителе с 720p-телефоном и 4G; 360p-уровень – на зрителе с 65-дюймовым телевизором и гигабитной оптикой. HLS Authoring Specification от Apple предлагает уровни от 145 кбит/с при разрешении 416×234 до 7,8 Мбит/с при 1920×1080, и большинство пайплайнов копируют их дословно, независимо от аудитории. 10 Контекстно-зависимое кодирование отбрасывает жёсткий список и рассчитывает лестницу под реальные устройства и сети ваших зрителей.

Формулировка Резника 2017 года для Brightcove до сих пор остаётся самой чёткой в литературе: она моделирует аудиторию как совместное распределение по классу устройства (мобильные устройства, планшеты, ПК, подключённые телевизоры), разрешению экрана и пропускной способности канала (эмпирический CDF по аудитории). Затем Ladder строится как задача оптимизации: минимизировать ожидаемое искажение по этому распределению при ограничениях на количество rung’ов и максимальный битрейт. Типичное решение содержит 4–7 rung’ов (в отличие от 9–12 в стандартном профиле Apple), с шагом, соответствующим модам распределения пропускной способности, и разрешениями, совпадающими с наиболее распространёнными размерами экранов. 1 11

Видимый зрителю эффект двойной. Во-первых, при том же бюджете хранилища зритель в среднем видит более чистое качество, поскольку rung’и расставлены там, где реально сосредоточена аудитория по распределению полосы пропускания. Во-вторых, при том же среднем качестве общий объём хранилища снижается, потому что убраны лишние rung’и – типичный context-aware-пайплайн использует 4–6 rung’ов вместо 10–12, сокращая объём хранилища на 30–50% ещё до применения per-title оптимизации. Эти две экономии складываются: если per-title экономит 30% на каждом rung’е, а context-aware уменьшает их количество вдвое, общий объём падает на 60–70% по сравнению с базовой фиксированной лестницей. 11

Ловушка здесь – самая простая. Контекстно-зависимое кодирование чувствительно к измеряемому распределению аудитории, а это распределение со временем меняется. Если лестница (ladder) была построена под аудиторию 2022 года, где 60% пользователей – мобильные, а к 2026 году доля мобильных упала до 40%, а доля TV выросла до 30%, то текущая лестница уже не подходит для реальной аудитории. Проблема решается операционно: нужно переоценивать долю устройств и сетей хотя бы раз в квартал, перезапускать оптимизацию и запускать обновлённую лестницу через feature-флаг, чтобы при необходимости можно было быстро откатиться, если плеер начнёт неправильно выбирать уровень качества для измеряемой группы пользователей. 11

Рисунок 3. Фиксированная ladder равномерно расставляет rung'и вдоль кривой «битрейт–качество». Context-aware ladder группирует rung'и около мод распределения полосы аудитории и пропускает битрейты, которыми ни один зритель реально не пользуется. Объём хранилища падает; среднее воспринимаемое качество растёт.

Типичная ошибка: путаница между content-aware и context-aware в вендорском питче

Конкретная ловушка, в которую попадает каждая продуктовая команда при выборе или создании энкодинг-пайплайна: вендор обещает «CAE – 40% экономии трафика», а команда не уточняет, о каком именно CAE идёт речь. Content-aware и context-aware решают разные задачи и дополняют друг друга; если купить одно, приняв его за другое, обещанной экономии не добьёшься.

Простой тест из фреймворка Резника: спросите у вендора, что подаётся на вход и что получается на выходе у его инструмента. Content-aware-инструмент принимает исходное видео и выдаёт план кодирования – битрейт на сцену, QP на область. Context-aware-инструмент использует статистику аудитории и формирует дизайн ladder’а – разрешения и битрейты rung’ов. Если вендор не может чётко ответить на этот вопрос – или отвечает: «мы используем ИИ» – считайте, что продукт относится к одной из двух категорий, и уточните, к какой именно.

Второй индикатор – опубликованные цифры. Content-aware энкодеры публикуют результаты в терминах BD-rate или VMAF-при-битрейте («17% снижения битрейта при том же VMAF»). Context-aware энкодеры используют показатели убранных rung’ов и ожидаемого искажения по аудитории («лестница сокращена с 11 rung’ов до 5, средний VMAF зрителя вырос на 1,8 пункта»). Вендор, у которого нет ни тех, ни других данных – это вендор, чья технология ещё не проверена на соответствие собственным обещаниям.

Где ИИ помогает – и где не помогает

И content-aware, и context-aware кодирование существовали задолго до современной волны deep learning. Перетайлинг Netflix 2015 года был основан на переборе по разрешению и битрейту; context-aware подход Резника – на математической оптимизации на основе измеренного распределения аудитории. Ни одному из них не требовались нейросети. В 2026 году ситуация стала сложнее, и маркетинг опережает инженерию.

Места, где ИИ действительно эффективно использует вычислительные ресурсы в content-aware кодировании, – три. Первое – предсказание сложности контента: вместо перебора всех комбинаций разрешения и битрейта небольшой CNN предсказывает выпуклую оболочку за один быстрый аналитический проход, превращая per-title кодирование из «десятикратного кодирования каталога» в «однократное кодирование плюс несколько секунд анализа на каждый тайтл». 12 Второе – ROI на основе saliency: saliency-нейросеть, обученная на данных eye-tracking, определяет, на какие области кадра зритель обращает внимание, и энкодер увеличивает битрейт именно там. Исследование KTH 2023 года по visual-attention-guided x265 показало улучшение VMAF на 3–8% при неизменном битрейте. Третье – обнаружение границ кадров: небольшой классификатор превосходит классические эвристики на основе frame-difference в сценах с fade, dissolve и высокой динамикой – там, где оптимизация по сценам даёт наибольший выигрыш. Первое и третье подробно разобраны в ИИ внутри энкодера.

Место, где сегодня находится ИИ – в основном в маркетинге, – это «AI-Driven Context-Aware Encoding». Распределение аудитории хорошо описывается классической статистикой, а оптимизация ladder’а – это выпуклая задача, которую любой солвер решает за миллисекунды. Вендор, продающий нейросеть для этой задачи, решает проблему, в нейросети не нуждающуюся. Честная версия «AI context-aware» – это «мы используем ML, чтобы точнее измерять распределение аудитории»: кластеризация когорт зрителей, прогноз завтрашнего mix’а по сегодняшним логам – и выигрыш от этого реальный, но небольшой. Если вендор заявляет о 40% экономии хранилища за счёт самого ИИ, заголовок почти наверняка относится к content-aware, а не к context-aware, замаскированному под context-aware.

Где здесь Фора Софт

Content-aware и context-aware кодирование напрямую пересекаются с направлениями, в которых работает Фора Софт. Видеоконференции и телемедицина – естественная среда для ROI-кодирования: лицо стабильно остаётся областью интереса, а выигрыш от оптимального распределения битов наиболее заметен на нижних значениях битрейта – именно там, где работают потребительские интернет-соединения. Видеостриминг и OTT – сферы, где per-title и per-scene кодирование окупаются быстрее всего, поскольку объём каталога превращает процентный выигрыш в реальную экономию на CDN. Видеонаблюдение применяет ROI-кодирование для отслеживания движущихся объектов и выделения зон интереса – например, номерных знаков, дверных проёмов или периметров. AR/VR и e-learning занимают промежуточное положение между конференциями и стримингом, сочетая live- и on-demand-форматы и объединяя per-scene подход с audience-aware настройкой битрейтовых лестниц. Мы разрабатывали пайплайны, интегрирующие все эти технологии поверх FFmpeg, GStreamer, x265, SVT-AV1 и крупных облачных энкодеров.

Как решить, что добавлять первым

Дерево решений, построенное на основе того, как зрелые стриминговые платформы реально внедряют эти технологии:

Если ваш пайплайн всё ещё использует стандартную лестницу битрейтов Apple HLS и вы ещё не измеряли сложность контента, начните с per-title. Инженерные затраты составляют один–два инженеро-квартала; экономическая выгода концентрируется в топ-10% самых просматриваемых тайтлов; технология доступна «под ключ» у каждого крупного облачного энкодера (Automated ABR в AWS Elemental, per-title в Bitmovin, автоматическая лестница в Mux). 13 Переходите к per-scene только после того, как per-title стабильно работает в продакшене – per-scene требует надёжной детекции сцен, оптимизационного фреймворка и модели качества, а большая часть каталожного выигрыша уже достигается за счёт per-title.

Когда per-title в продакшене, следующий шаг – per-scene, если ваш каталог включает контент с большими внутрисценовыми перепадами сложности (спорт, экшен, всё, что чередуется между спокойными и динамичными сценами). Для talking-head контента выигрыш настолько мал, что инженерные затраты не оправданы.

Если ваш сервис – это конференции, видеонаблюдение или любая сфера, где взгляд зрителя надёжно направлен в определённую область, добавляйте ROI вместо или до per-scene. Модель детекции лица или объекта – это длинный шест, но в большинстве пайплайнов она уже используется для других задач: отключение звука при отсутствии взгляда, размытие фона, оповещения о движении.

Используйте context-aware поверх – когда аудитория достаточно велика, чтобы распределение устройств и сетей было статистически значимым: на практике это от ~100 000 месячных зрителей. Ниже этого порога дисперсия в измерении audience-микса превышает выгоду от настройки rung’ов под аудиторию. Выше – 4–6-rung context-aware ladder против стандартных 10–12 – это 30–50% экономии хранилища за один инженеро-квартал работы.

Наконец, используйте правильную метрику. Content-aware и ROI намеренно сдвигают биты в тех областях, которые глаз не замечает – они усиливают искажение, измеряемое PSNR, специально. Тестируйте качество с помощью VMAF или SSIMULACRA2, а не PSNR. См. Объективные метрики качества – там подробно объясняется, зачем нужны эти метрики и в каких случаях какую использовать.

Рисунок 4. Дерево решений, которому следуют зрелые стриминговые платформы при внедрении content-aware и context-aware техник в пайплайн. Сначала – per-title; per-scene – если у контента большие колебания сложности; ROI – для вертикалей, ориентированных на лица или объекты; context-aware – когда размер аудитории позволяет измерять распределение.

Ключевые тезисы

  • Content-aware определяет, сколько битов выделяется на ту или иную часть видео; context-aware – какие уровни (rung) «лестницы» (ladder) направляются вашей аудитории.
  • Per-title, per-scene и region-of-interest – три уровня вложенности content-aware, приносящие экономию 20–50%, дополнительно 15–30% и региональный прирост эффективности.
  • Dynamic Optimizer от Netflix обеспечивает снижение битрейта на 27–37% при одинаковом VMAF в режиме per-scene.
  • Context-aware ladder обычно сокращает количество уровней с 10–12 до 4–6, уменьшая объём хранилища на 30–50%.
  • Оценивайте перцептивные энкодеры по VMAF или SSIMULACRA2, но никогда – по голому PSNR.
  • Искусственный интеллект помогает content-aware (прогнозирование сложности, выделение важных зон, детекция сцен); для context-aware он практически не даёт прироста.

Что читать дальше

«Примечание: В URL-адресах сохранены оригинальные написания, включая дефисы и пробелы, как в исходнике. Если требуется нормализация URL (например, удаление лишних дефисов или пробелов), это выходит за рамки текущей задачи редактирования текста.»

Источники

  1. Y. Reznik, «Context-Aware Encoding and 5G», DASH-IF Workshop, 2019. https://dashif.org/docs/workshop-2019/03-Reznik-DASH-IF-workshop-2019-CAE.pdf
  2. J. Ozer, «Buyers' Guide to Content- and Context-Aware Encoding 2018», Streaming Media Global. https://www.streamingmediaglobal.com/Articles/Editorial/Featured-Articles/Buyers-Guide-to-Content--and-Context-Aware-Encoding-2018-123407.aspx
  3. Netflix Technology Blog, «Per-Title Encode Optimization», 2015. https://netflixtechblog.com/per-title-encode-optimization-7e99442b62a2
  4. Netflix, «VMAF: Perceptual video quality assessment based on multi-method fusion». https://github.com/Netflix/vmaf
  5. Netflix Technology Blog, «Dynamic Optimizer – a perceptual video encoding optimization framework», 2018. https://netflixtechblog.com/dynamic-optimizer-a-perceptual-video-encoding-optimization-framework-e19f1e3a277f
  6. Netflix Technology Blog, «Optimized shot-based encodes: Now Streaming!», 2018. https://medium.com/netflix-techblog/optimized-shot-based-encodes-now-streaming-4b9464204830
  7. Bitmovin, «Per-Scene Adaptation: Going Beyond Bitrate». https://bitmovin.com/per-scene-adaptation-going-beyond-bitrate/
  8. MDPI Applied Sciences, «Region-of-Interest Based Coding Scheme for Live Videos», 2024. https://www.mdpi.com/2076-3417/14/9/3823
  9. Hikvision, «ROI (Region of Interest) Encoding Technology V0.5 White Paper». https://www.hikvision.com/content/dam/hikvision/usa/white-papers/hikvision_roi_encoding_technology_v0.5.pdf
  10. Apple Inc., «HLS Authoring Specification for Apple Devices». https://developer.apple.com/documentation/http-live-streaming/hls-authoring-specification-for-apple-devices
  11. Y. Reznik et al., «Improving Context-Aware Encoding by Adaptation to True Bandwidth Distribution», SMPTE MTS, 2023. https://www.reznik.org/papers/SMPTE_MTS2023_Improving_Context_Aware_Encoding.pdf
  12. H. Amirpour et al., «Towards Sustainable Video Streaming: Evaluation of AI Approaches for Content-Aware Encoding», IEEE 2024. https://ieeexplore.ieee.org/document/10389538/
  13. AWS Elemental, «Automated ABR Configuration in AWS Elemental MediaConvert». https://aws.amazon.com/blogs/media/introducing-automated-abr-adaptive-bit-rate-configuration-a-better-way-to-encode-vod-content-using-aws-elemental-mediaconvert/
  14. NETINT, «2026 State of Video Encoding». https://netint.com/2026-state-of-video-encoding/

Строите такую систему?

Подберём параметры кодирования под ваш контент и посчитаем стоимость доставки до старта разработки.