Skip to content

Воспроизведение через NDI

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

NDI работает без авторизации. Включайте его только в доверенной сети: пользователь с сетевым доступом сможет подключиться к опубликованному источнику без токена просмотра Agora.

Закрепите стрим за сервером

На данный момент настройка NDI в кластере начинается с закрепления стрима за конкретным сервером через labels с требованием required_…. NDI listener включается на этом же сервере.

  1. Откройте Кластер → Стримеры, выберите сервер в сети NDI-приёмников и на вкладке Кластер добавьте в Теги значение ndi-studio-a. Сохраните настройки.
  2. Убедитесь, что этот тег указан только у выбранного сервера. Если его получат несколько серверов, требование будет разрешать размещение на любом из них.
  3. Откройте стрим в разделе Стримы. На вкладке Лейаут добавьте тег required_ndi-studio-a и сохраните стрим.
  4. Включите listener, как описано ниже, и проверьте назначение на вкладке Лейаут: стрим должен работать на выбранном сервере.

required_ — обязательное условие размещения; preferred_ задаёт только предпочтение и не закрепляет стрим за сервером. Существующие ограничения неймспейса и остальные теги также должны совпадать. При недоступности единственного подходящего сервера стрим не будет назначен на другой сервер без этого тега.

Тег выбранного стримера

Обязательный тег стрима

Включите NDI listener

В карточке выбранного стримера откройте вкладку Сервер, найдите настройки листенеров и включите NDI listener. Сохраните настройки.

Включённый NDI listener на выбранном сервере

Поле Значение по умолчанию Назначение
IP интерфейса Не задан Все IPv4-интерфейсы. Можно указать IP сетевой карты для NDI.
Порт каталога NDI 5960 Общий TCP-каталог источников этого сервера.
Диапазон медиапортов 5961–6060 По одному автоматически выделяемому TCP-порту на объявленный стрим.
Очередь 4 Лимит очереди каждого приёмника в полных картинках; пара полей считается одной картинкой.

IP интерфейса должен принадлежать этому серверу. Порт каталога должен находиться вне медиадиапазона. Разрешите приёмникам доступ к TCP-порту каталога и медиадиапазону; для обнаружения через mDNS нужен UDP-порт 5353 в локальной сети. Если меняете порт каталога с 5960, поиск только по IP в NDI Access Manager может не работать.

Оставьте поле IP интерфейса пустым, чтобы использовать все IPv4-интерфейсы.

Подготовьте сигнал и разрешите выдачу

NDI-выход кодирует уже подготовленный несжатый сигнал. Он выбирает первую подходящую raw-видеодорожку и первую подходящую raw-аудиодорожку в составе стрима; сжатые дорожки пропускает.

  • Видео: v210 или uyvy422.
  • Аудио:

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

Если источник уже даёт подходящие дорожки, дополнительное декодирование не нужно. Для сжатого источника откройте вкладку Транскодер и подготовьте raw-выход: например, пресетом RAW для SDI (v210) + PCM. Несмотря на название, его дорожки подходят и для NDI. Сам NDI listener не декодирует H.264/HEVC и не преобразует AAC в PCM. Если меняете транскодер существующего эфира, сохраните также сжатые дорожки, необходимые его остальным получателям.

На вкладке Исходящий поток включите Публиковать стрим в NDI. Качество SpeedHQ по умолчанию равно 90, допустимы значения 52–99. Сохраните стрим и дождитесь его запуска на закреплённом сервере. Первый NDI-приёмник запускает только энкодер NDI; остановленный стрим его подключение не запускает.

Публикация стрима в NDI

Без NDI-приёмников состояния «Энкодер выключен» и «Нет сигнала» ожидаемы: обработка для NDI начнётся с подключением первого зрителя.

Подключите приёмник

В списке источников NDI-приёмника выберите имя-сервера (имя-стрима), например studio-a (conference). Каждый разрешённый стрим появляется отдельным источником; несколько приёмников могут подключаться к одному источнику.

Используется NDI High Bandwidth со SpeedHQ; это не NDI HX. Режим транспорта в приёмнике оставьте Auto: текущая выдача работает по TCP. Адрес назначения пуша в Agora для этого не задаётся — соединение открывает приёмник.

Состояние и отключение

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

  • Первый зритель запускает энкодер NDI; подключение остальных использует тот же источник.
  • Нет зрителей 20 секунд — энкодер останавливается, а объявление и медиапорт сохраняются.
  • Выключен выход стрима или listener — соединения закрываются сразу и объявления снимаются.

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

Если приёмник не видит видео

Признак Что проверить
Источника нет в списке Назначение стрима на закреплённый сервер, оба переключателя NDI, доступ к каталогу и обнаружение mDNS.
Не хватает портов Диапазон медиапортов и занятость портов другими процессами. Порт нужен каждому объявленному источнику, даже без зрителей.
Источник виден, но сигнала нет Стрим запущен; в нём есть подходящее raw-видео; ошибка у NDI-выхода отсутствует.
Нет звука В составе стрима есть поддерживаемая несжатая аудиодорожка. AAC сам по себе не подходит.
Медленный приёмник отключается Пропускную способность сети и нагрузку приёмника. После заполнения ограниченной очереди сервер пропускает полные картинки; при непрерывных дропах в течение 5 секунд отключает этого клиента.