Skip to content

Наложение логотипа

media.transcode.logo

Транскодер Sapsan перекодирует входной поток: меняет кодеки, битрейт, разрешение и готовит мультибитрейтную лесенку (MBR) из одного источника.

Транскодер накладывает картинку-логотип на видеоряд — логотип канала в углу кадра или водяной знак. Логотип «вшит» в видеодорожку: его видно на любом устройстве и в архивной записи. Секция logo живёт в параметрах видеоступени и применяется к готовому кадру каждой ступени отдельно — после масштабирования и полей fit, поэтому пиксельный размер картинки не зависит от разрешения выхода.

В кластере под управлением central основной способ передачи картинки — библиотека логотипов. Загрузите картинку один раз в консоли central и выберите её в карточке логотипа лестницы. Central хранит картинку, а конфиг стрима содержит image: logo@<sha256>. Sapsan скачивает недостающие картинки по авторизованному каналу синхронизации с central, проверяет SHA-256 и сохраняет их в локальном кэше. Копировать файл на каждый стример не требуется.

При настройке через API отправьте JSON с полями name и bytes (байты картинки в стандартной base64) запросом POST /central/api-v4/logos с авторизацией management API. Ответ содержит key и created; запишите в logo.image строку logo@ с полученным ключом. GET /central/api-v4/logos возвращает список записей, а GET /central/api-v4/logos/{key} — запись с байтами картинки в base64 для предпросмотра. Путь к локальному файлу и HTTP(S) URL остаются альтернативами, в том числе для отдельного Sapsan без central.

В примере замените <sha256> ключом, который вернул central.

streams:
  - name: tv1
    inputs:
    - udp: {host: 239.0.0.1, port: 5000}
    transcoder:
      output:
      - source: !content video          # 1080p — верх лесенки
        codec: !set h264
        bitrate: 2800000
        params: !video
          logo:
            image: logo@<sha256>
            position: top_right
            x: 24
            y: 16
            height: 72
      - source: !content video          # 720p
        codec: !set h264
        bitrate: 1200000
        params: !video
          resize: !fit
            height: 720
          logo:
            image: logo@<sha256>
            position: top_right
            x: 16
            y: 10
            height: 48
Поле Что задает
image адрес картинки: путь на стримере, http(s)-URL или ссылка на запись библиотеки логотипов logo@<sha256>
position опорная точка на кадре — одна из пяти, обязательна
x, y отступы в пикселях от опорной точки, по умолчанию 0
width, height размер картинки в пикселях выходного кадра ступени

Опорные точки: top_left, top_right, bottom_left, bottom_right, center. Отступы отсчитываются от опорной точки внутрь кадра: у угловых — от соответствующего угла, у center — сдвиг от центра.

Размер задается пикселями выходного кадра ступени. Заданы оба поля — картинка приводится к ним; задано одно — второе выводится из пропорций картинки, искажения нет; не задано ни одного — картинка берется в нативном размере. Чтобы логотип занимал одинаковую долю кадра на всей лестнице, размеры ступеней считают по их высоте: в примере выше 72 px на 1080p и 48 px на 720p — это одна и та же доля кадра. Ступени без секции logo остаются как были.

Требования к картинке:

  • Формат — PNG или JPEG по сигнатуре байтов. PNG с альфа-каналом сохраняет прозрачность: прозрачные пиксели кадр не трогают, полупрозрачные смешиваются с ним.
  • Пределы — не больше 1 МБ байтов и не больше 4096 пикселей по стороне.
  • URL скачивается при настройке ступени, таймаут — 10 секунд.
  • Одна и та же картинка на нескольких ступенях загружается и декодируется один раз.

Ограничения:

  • Логотип накладывается только на кодируемый выход: ступень с codec: same и сырые вещательные кодеки (j2k, v210, uyvy422) его не поддерживают — такая секция отклоняется при записи.
  • width и height — положительные целые не больше 4096; ноль и превышение отклоняются при записи с указанием поля.
  • Картинка читается при сборке ступени, а не на каждом кадре: смена адреса, якоря или отступов — обычная правка конфигурации, ступень пересобирается, стрим не прерывается.

Битый логотип — ошибка ступени

Если картинку не удалось загрузить или декодировать — файла нет, URL не отвечает, превышен предел, байты не читаются, — ступень не собирается: в состоянии выхода и в журнале видна именованная ошибка, остальные ступени и сам стрим продолжают работать. Молча отдавать поток без логотипа транскодер не станет. Восстановление — правка адреса картинки: новая конфигурация собирает ступень заново без перезапуска процесса.

Ссылка logo@<sha256> — это запись библиотеки логотипов central: стример скачивает картинку при применении среза конфигурации и передает транскодеру готовый файл. В одиночном контуре (без central) такая ссылка дает именованную ошибку ступени — там работают путь на стримере и http(s)-URL. В консоли central логотип на лестницу ставится карточкой Логотип лестницы (Наложение логотипа).