Skip to content

Приём MXL

MXL (Media eXchange Layer) — это обменный слой архитектуры DMF (Dynamic Media Facility): соседние медиафункции — декодеры, микшеры, CG — пишут несжатое медиа в общий каталог, а потребители забирают его оттуда без сети и без копий. Mcaster читает такой каталог как обычный источник стрима: дорожки приходят в тракт, перекодируются и уходят на выдачу теми же средствами, что сигнал со спутника или из SRT.

Как и у ST 2110, вход несёт несжатое медиа, но транспорт другой — не мультикаст по IP-сети, а файлы в каталоге на общей машине. Сетевая подготовка не нужна вовсе: нужна папка, в которую пишет издатель.

Что такое домен и флоу

Каталог, в который пишут медиафункции, называется доменом. Внутри него каждая логическая дорожка — свой подкаталог-флоу с именем-UUID: 5fbec3b1-….mxl-flow. Флоу несёт описание себя (flow_def.json — формат NMOS), заголовок с состоянием писателя и слоты с данными; читатель опрашивает заголовок и забирает наросшие кадры. Писателей и читателей в одном домене может быть сколько угодно, и друг о друге они не догадываются.

Один домен несёт одну программу: видеофлоу там один, звуковых может быть несколько. Вход берёт первый найденный видеофлоу и первый звуковой; выбирать флоу по имени в текущей версии нельзя.

Читаются два медиатипа:

  • video/v210 — несжатое видео 10 бит 4:2:2 в упаковке v210; размер и частота кадров берутся из описания флоу.
  • audio/float32 — несжатый звук с плавающей запятой, плоскость на канал.

Прочие форматы — видео с альфа-каналом (video/v210a), вспомогательные данные ANC — пропускаются с записью в журнал: их раскладка пока не читается.

Настройка входа

Создайте стрим и на вкладке Источники нажмите + Добавить источник. Протокол — MXL.

Вход MXL: домен и таймаут пира

У входа два поля:

  • Домен MXL — путь к каталогу домена на машине стримера, например /dev/shm/mxl. Это локальный каталог, а не сетевой адрес: стример и писатели обязаны видеть одну и ту же папку.
  • Таймаут пира (мс) — сколько ждать новых кадров, прежде чем признать источник мёртвым. По умолчанию 30 секунд.

Несжатые дорожки не сегментируются сами по себе: как и для 2110 и SDI, планируйте транскодер — выход в H.264/AAC для отдачи OTT, либо RAW-выход для SDI.

Способность лицензируется

Приём MXL продаётся позицией media_ingest сетки тарифов и гасится лицензией, а не сборкой: секция входа есть у любой установки, но без этой способности в лицензии поля неактивны и подсвечены пояснением. Число mxl-входов считается по конфигурации — по одному на каждый стрим с таким входом.

Как вход ведёт себя в работе

  • Живой край. Кольцо слотов конечно, и отставший читатель теряет старые кадры: вход прыгает на свежие и продолжает, а разрыв виден по скачку меток времени. Это не ошибка — живой эфир дороже непрерывности.
  • Испорченные кадры пропускаются. Писатель может пометить кадр недействительным или не дописать его; такой кадр не становится дорожкой в стриме, вход просто идёт дальше.
  • Молчание писателя закрывается таймаутом пира: вход получает ошибку, стрим уходит на рестарт по общим правилам — тем же, что у всех источников.

Проверить приём без аппаратуры

Для MXL не нужна ни карта, ни медиасеть: демо-издатель есть в открытом SDK. Склонируйте dmf-mxl/mxl и соберите инструменты по инструкции из его docs/Building.md — понадобится mxl-gst-testsrc; готовые описания тестовых флоу лежат в examples/flow-configs/ того же репозитория. Пошаговое знакомство с MXL целиком — воркшоп mxl-hands-on.

Издатель пишет в домен тестовую программу — SMPTE-бары с тикающими часами и стерео-тон:

mkdir -p /dev/shm/mxl
mxl-gst-testsrc -d /dev/shm/mxl \
  -v examples/flow-configs/flow-video-v210.json \
  -a examples/flow-configs/flow-audio.json

Каталог домена должен быть виден и издателю, и машине с Mcaster: на одной машине это общий путь, между контейнерами — смонтированный том.

Что вы увидите в Mcaster:

  1. Создайте стрим, на вкладке Источники нажмите + Добавить источник и выберите протокол MXL. В поле Домен MXL укажите путь — /dev/shm/mxl — и сохраните стрим.
  2. Как только вход открылся, в карточке стрима появляется блок входящих дорожек: v210 1920×1080 и fltp 48 кГц — приём пошёл.
  3. Включите транскодер (H.264/AAC): рядом появится блок выходных дорожек, и стрим откроется по HLS любым плеером — бары, идущие часы, звук.

Карточка стрима: входящие v210 и fltp, выходные H.264 и AAC