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 немедленно закрывает клиентов и снимает объявления.
Связанные функции¶
- Приём NDI — отдельная функция
media.ingest.ndi. - Управление портами.
- Размещение и теги.