Skip to content

NDI

media.play.ndi

Выдача работающего стрима NDI-приёмникам. Возможность учитывается по стримам согласно тарифной сетке: один объявленный источник может обслуживать несколько приёмников. Для отправки нужен listener стримера и разрешение NDI-выхода у стрима.

Транспорт

NDI High Bandwidth со SpeedHQ, выдача по TCP. В приёмнике используйте Auto. Общий каталог сервера работает на TCP 5960, медиапорты автоматически выделяются из диапазона TCP 5961–6060. Для каждого объявленного источника нужен один медиапорт. Обнаружение в локальной сети использует mDNS, UDP 5353.

NDI выдаётся без авторизации. Доступ к сети должен быть ограничен доверенными приёмниками; токен просмотра не запрашивается. Эта возможность не относится к NDI HX и не является исходящим push на заранее заданный адрес.

Подготовка дорожек

NDI-энкодер использует готовые raw-дорожки работающего стрима:

  • Видео: первое подходящее v210 или uyvy422 в порядке MediaInfo.
  • Аудио: первая подходящая дорожка одного из форматов:

    • PCM 16 бит
    • S32P
    • FLTP
  • Без аудио: выдача только видео допускается.

Сжатые дорожки пропускаются. Декодирование сжатого входа и подготовка нужного пиксельного формата задаются отдельно в медиатракте, как для SDI-выхода. Несколько raw-дорожек не объединяются; выбора дорожки по номеру у NDI-выхода нет. В существующем стриме можно сохранить сжатые дорожки для других получателей и добавить подходящие raw-дорожки.

Настройка

Задавайте настройки через central. В текущей схеме кластера закрепите стрим за конкретным сервером: уникальный labels-тег ndi-studio-a у стримера и required_ndi-studio-a у стрима. Включите listener на том же сервере. Тег на нескольких серверах разрешает выбор любого из них. Подробный порядок действий — в руководстве Agora.

Фрагмент применяемой конфигурации стримера с raw-входом SDI:

listeners:
  ndi:
    bind: 192.168.10.20
    port: 5960
    ports: {from: 5961, to: 6060}
    queue: 4
streams:
  - name: conference
    inputs:
      - sdi:
          device: /dev/video0
          pixel_format: v210
    ndi_output:
      quality: 90

Адрес и устройство замените своими. Для сжатого входа вместо этого подготовьте raw-дорожки транскодером. Подключение NDI-приёмника не запускает остановленный стрим.

Поле Значение и ограничения
listeners.ndi Отсутствие секции выключает listener.
bind Необязательный IP интерфейса; без него используются все IPv4-интерфейсы.
port Порт каталога, по умолчанию 5960; должен находиться вне диапазона media.
ports.from, ports.to Включительные границы медиапортов, по умолчанию 5961 и 6060.
queue Положительный лимит очереди каждого клиента в полных картинках, по умолчанию 4; пара полей считается одной картинкой.
ndi_output Отсутствие секции запрещает NDI-проигрывание этого стрима.
quality Фиксированное качество SpeedHQ 52–99, по умолчанию 90, без адаптивного изменения.

Откройте каталог и медиапорты для приёмников. При нестандартном порте каталога поиск только по IP в NDI Access Manager может не работать.

Проигрывание и состояние

Выберите в NDI-приёмнике источник имя-сервера (имя-стрима). Приёмник открывает соединение; несколько приёмников используют один NDI-энкодер. Первый зритель включает энкодер, а через 20 секунд без зрителей он выключается. Объявление и выделенный порт сохраняются до отключения выхода.

Состояние находится в ndi_output статистики стрима. Поля address и viewers показывают адрес медиапорта и число допущенных зрителей; encoder_running и signal — состояние энкодера и наличие подготовленной картинки за последнюю секунду. error содержит причину ошибки подготовки или публикации.

При пропаже кадров соединения сохраняются; NDI-выход не создаёт чёрное видео и тишину. Заставку готовьте через backup стрима. Медленному клиенту сначала пропускаются полные картинки в пределах ограниченной очереди; непрерывные дропы в течение 5 секунд приводят к его отключению. Выключение ndi_output или listener немедленно закрывает клиентов и снимает объявления.