Все кейсы

Техлид продукта

«МедиАрхив»

«МедиАрхив» для телекомпаний: загрузка, поиск и подготовка видео к монтажу.

Просмотрщик: слева грид материалов, справа плеер с таймкодом и панель метаданных. Поля панели приходят из конфигурации, а не зашиты в код.
Просмотрщик: слева грид материалов, справа плеер с таймкодом и панель метаданных. Поля панели приходят из конфигурации, а не зашиты в код.

«МедиАрхив»: просмотр видео, разметка фрагментов и настройка метаданных.

Техлид · система управления медиаархивом

Моя роль

Отвечал за архитектуру продукта: определял границы модулей и API между клиентом, бэкендом и сервисами обработки медиа. Проводил код-ревью, разбирал инциденты на инсталляциях и планировал релизы вместе с командой.

Работа с архивом
Просмотр, описание и разметка видео
Настройка под заказчика
Настройка форм, таблиц и прав доступа
Обработка и поставка
Загрузка файлов, обработка видео и размещение системы

Задача бизнеса

Телекомпаниям нужно загружать и описывать исходники, искать фрагменты и передавать их в монтаж. У каждого заказчика свои поля метаданных, роли и требования к размещению. Поля и формы нужно менять в настройках, без отдельного релиза для каждой инсталляции.

Работа с архивом

Просмотр видео и разметка по таймкодам

Архивист выбирает материал в таблице, просматривает видео и редактирует метаданные. Выбор материала, плеер и панель описания синхронизированы через состояние клиента на React и Effector.

Режим разметки: локатор задаётся таймкодами IN и OUT прямо в плеере. Сцены, найденные ИИ, лежат в том же гриде и после ручной правки становятся пользовательскими.
Режим разметки: локатор задаётся таймкодами IN и OUT прямо в плеере. Сцены, найденные ИИ, лежат в том же гриде и после ручной правки становятся пользовательскими.

Разметка фрагментов

Локаторы задают границы IN/OUT по таймкодам. Найденные ИИ сцены представлены в том же гриде. После ручной правки становятся пользовательскими.

Пакеты для передачи

Материалы собираются в пакет из дерева категорий. В интерфейсе видны состав и объём, а доступ к пакету задаётся отдельно.

Ещё экраны (2)
Сборка пакета: материалы набираются из дерева категорий, счётчик показывает объём — 52 файла и 30 ГБ. На соседней вкладке задаётся, кому пакет будет доступен.
Сборка пакета: материалы набираются из дерева категорий, счётчик показывает объём — 52 файла и 30 ГБ. На соседней вкладке задаётся, кому пакет будет доступен.
Грид категории: у каждого материала свой статус загрузки и статус разбиения на сцены — по ним видно, на каком шаге пайплайна файл находится прямо сейчас.
Грид категории: у каждого материала свой статус загрузки и статус разбиения на сцены — по ним видно, на каком шаге пайплайна файл находится прямо сейчас.

Настройка под заказчика

Настройка полей и таблиц через JSON

Метаданные и таблицы задаются JSON-конфигурациями. Редактор с предпросмотром позволяет менять структуру прямо в настройках, а привязка к ролям определяет, что увидит конкретный пользователь.

Конструктор форм метаданных: слева собранная форма, справа её JSON. Форма привязана к ролям, поэтому каждая инсталляция описывает свой архив без релиза.
Конструктор форм метаданных: слева собранная форма, справа её JSON. Форма привязана к ролям, поэтому каждая инсталляция описывает свой архив без релиза.

Настройка колонок таблицы

Колонки, типы, ширины и видимость настраиваются отдельно. Пользователь видит результат в предпросмотре.

Доступ к материалам

Права на получение и изменение выдаются по ролям. Для передачи можно создать публичную ссылку и затем аннулировать её.

Ещё экраны (2)
Конфигурация таблицы материалов: колонки, их типы, ширины и видимость описываются JSON-ом, предпросмотр справа обновляется сразу.
Конфигурация таблицы материалов: колонки, их типы, ширины и видимость описываются JSON-ом, предпросмотр справа обновляется сразу.
Доступы к клипбину: права на получение и изменение выдаются по ролям. Отдельно генерируется публичная ссылка, которую можно аннулировать.
Доступы к клипбину: права на получение и изменение выдаются по ролям. Отдельно генерируется публичная ссылка, которую можно аннулировать.

Обработка и поставка

Фоновая обработка видео

После загрузки система готовит копию видео для просмотра, создаёт миниатюры и разбивает запись на сцены. По статусу в таблице видно, какие файлы уже обработаны.

  1. Загрузка

    WatchFolder связывает папку пользователя с категорией архива.

  2. Обработка

    Создаются прокси-копии, миниатюры и сцены.

  3. Описание

    Материал получает метаданные и разметку.

  4. Выдача

    Нужные материалы собираются в доступный получателю пакет.

Инженерные детали
  • Загрузка после сетевого сбоя

    WatchFolder продолжает загрузку после разрыва соединения. Пользователь работает с папкой, связанной с категорией архива.

  • Варианты размещения

    SaaS, коробочная поставка и установка в инфраструктуре заказчика позволяют учитывать требования телеканала к хранению исходников.

Результат

От загрузки исходников до передачи в монтаж

Вместе с командой разработал «МедиАрхив»: загрузку и обработку видео, поиск, разметку фрагментов и передачу материалов в монтаж. Как техлид отвечал за архитектуру, проводил код-ревью и планировал релизы.

−70%
времени на обработку контента по данным Media Code: прокси-копии и разбор на сцены идут автоматически
3
варианта поставки: SaaS, коробка и установка в инфраструктуре заказчика

Стек

  • React
  • TypeScript
  • Effector
  • NestJS
  • FastAPI
  • MongoDB
  • PostgreSQL
  • RabbitMQ
  • Docker
  • Jenkins