Версия 26.09

Flussonic 26.09: DRM и своя витрина в Catena, SDI, ST 2110 и RIST в Mcaster, регистратор Watcher переезжает на новое ядро по кнопке


Четыре продукта, одно ядро

Catena, Mcaster, Agora и Watcher — четыре разных продукта с четырьмя разными заказчиками: оператор OTT, инженер головной станции, корпоративный вещатель и интегратор систем безопасности. Внутри у них один движок — Sapsan, наше стриминговое ядро на Rust.

Поэтому этот релизноут начинается с ядра. Всё, что перечислено в первом разделе, приехало сразу во все четыре продукта — и по той же причине находка на регистраторе с девятью тысячами камер в итоге ускоряет запуск телеканала.


Вот что мы сделали для стримингового ядра Sapsan

В шестьдесят раз больше WebRTC-зрителей. WebRTC был самым слабым трактом раздачи. Нода держала 200–300 одновременных WHEP-сессий и около 0,9 Гбит/с, а дальше просто переставала принимать зрителей: на пятистах сессиях 448 из 500 отваливались по таймауту, при том что процесс занимал 330% из имевшихся у машины 7200%. Дело было не в нехватке мощности — вся подсистема WebRTC была одной задачей, обходившей все сессии под одним замком, поэтому создание сессии стояло в очереди за раздачей всем остальным.

Сессии разложены по шардам со своими циклами, и цифры сменили порядок. Одна нода держит 18 000 одновременных зрителей на 32 Гбит/с или 16 000 более тяжёлых на 42,9 Гбит/с — в установившемся режиме, без отвалившихся. Память на зрителя упала с 3,8 МБ до 0,6–0,7 МБ, и у очереди появился жёсткий предел: раньше шесть тысяч зрителей занимали 53 ГБ и уводили машину в своп.

Одна практическая заметка на случай, если будете мерить свою машину: около 8 Гбит/с из этого съедает дисциплина очереди fq, стоящая в Linux по умолчанию, — замена на pfifo_fast возвращает их обратно.

Отдельно: брошенные WHEP-сессии раньше жили вечно. Зритель закрывал вкладку, а сессия продолжала жечь процессор и растить память на 80 МБ/с до тех пор, пока процесс не убивали. Теперь такие сессии закрываются сами.

Больше 100 Гбит/с HLS с одной машины. Мы собирались вытянуть 100 Гбит/с через сетевую карту и вытянули — после чего ограничением стал слот PCIe 3.0 стенда, а не софт. По петле, где провод не мешает, тот же сервер отдал 376 Гбит/с открытым HTTP и 242 Гбит/с под TLS. Практический вывод не в самой цифре: на обычном железе тракт раздачи — не то, что у вас кончится первым.

Чтение fMP4. Тикет #5350 — «захват MPEG-DASH / HLS fmp4 источников» — заведён в марте 2018 года и собрал около полусотни клиентских обращений, самый длинный такой список в трекере. Просят там одно, а не два: современный источник, отдающий плейлистом, кладёт в сегменты fragmented MP4, а не MPEG-TS, — и именно fMP4 мы читать не умели. CMAF публикует всякий агрегатор, всякая чужая CDN и всякий контрибутор, которому не дают открыть UDP или SRT, — и до сих пор нам было нечего ответить.

Правило старта одно, и его стоит знать. Захват начинается с первого сегмента, появившегося после подключения: всё, что лежало в окне плейлиста, — история. Иначе источник с минутным окном вылил бы в канал минуту прошедшего медиа за несколько секунд, и делал бы это заново на каждом переподключении. Тем же правилом закрывается мёртвый источник: плейлист, оставшийся после закончившегося вещания, нового сегмента не родит никогда, поэтому захват просто не начнётся — вместо того чтобы стрим висел работающим на протухшем окне.

Субтитры доведены до конца. В 26.08 мы выпустили скрытые субтитры CEA-608/708 дорожкой WebVTT и пообещали распознавание DVB-субтитров следующей версией. Вот оно — а вместе с ним телетекст, вторая по распространённости форма субтитров в европейском эфире и единственная, где текст приезжает уже текстом.

Всё это устроено одинаково: каждый производитель текста — декодер телетекста, DVB OCR, скрытые субтитры, распознавание речи — пишет в один канонический слой, а зритель всегда получает обычную дорожку WebVTT. Что бы ни несла программа, абонент в вашем приложении видит то же меню субтитров, что и зритель того же канала по кабелю, и требования доступности выполняются без второго входа и без отдельного конвейера под каждый формат. Попутно в декодере телетекста починены две вещи, из-за которых он был бесполезен: порядок бит кода Хэмминга (страница 888 читалась как 811) и отсутствие национальных наборов символов, из-за которого умляуты и кириллица приезжали мусором.

Аппаратное транскодирование на NVIDIA. Весь видеотракт — декодирование, масштабирование, кодирование — уезжает на карту, выбранную явно или автоматически, и число каналов на сервер перестаёт упираться в то, сколько ядер вы купили.

Попутно мы наконец докопались до бага, который мучил нас ещё во времена Flussonic. Он оказался не наш: это дефект самого драйвера NVIDIA, и NVIDIA завела его как Bug 6610402. Пока он не исправлен в источнике, мы поставляем обход — так что до ваших установок он больше не доходит.

Лэйаутер делает работу, которую иначе делаете руками вы. Решить, какая нода ведёт какой стрим, всё равно кому-то приходится — и переделывать это заново каждый раз, когда машину добавили, вывели на обслуживание, перегрузили или потеряли. На нескольких серверах это держится в голове. На сотне — уже нет, а цена ошибки — канал вне эфира. Теперь лэйаутер Catena решает это по 129 правилам, записанным в документ политики раньше, чем в код, и тесты сверяются с тем же документом.

Что он закрывает, в терминах оператора. Требования, которые размещение не вправе нарушить: неймспейс, обязательные теги, стрим с транскодированием на карте — только на ноду с картой, стрим с архивом — только на ноду с архивным хранилищем, лимит числа стримов на ноду. Предпочтения, которыми разрешаются равные варианты. Переназначение, когда нода ушла в offline, выведена на обслуживание или выбыла из кластера, — при этом намеренно замороженная нода сохраняет ровно то, что несёт. Перегрузка с заданным порядком разгрузки: процессор выше 90%, сеть выше 95% лимита ноды, архив выше своего порога; первой разгружается сеть, резервные копии переезжают раньше захвата, самый тяжёлый стрим — первым. И роли помимо захвата: копии архива, остатки архива на машинах, которые стрим уже не ведут, раздача живого на эджах, таймшифт-стримы рядом с архивом, который они вещают.

Одну цифру стоит назвать прямо: за последний год 96% клиентских обращений по поводу лэйаутера оказались ошибкой в конфигурации на стороне клиента, а не дефектом лэйаутера. Движок редко бывал виноват — не хватало другого: возможности увидеть, почему он решил именно так. Эту половину релиз и закрывает: у каждого назначения теперь записана причина, а в консоли есть страница с прогонами, назначениями и ограничениями, которые не удалось удовлетворить.

Администраторы, роли и отзыв, который отзывает. До сих пор управляющий доступ был общим паролем и статическим ключом: нельзя было завести второго администратора, ограничить его в правах или закрыть доступ одному человеку, не сменив секрет всем сразу. Теперь есть нормальный реестр учётных записей администраторов с ролями. И отключение учётной записи прекращает работу немедленно — раньше отзывался только вход, а уже выданный токен ещё до пятнадцати минут создавал стримы и правил ноды.

Видно больше происходящего. График ошибок стрима разложился на линии по видам ошибок, а отказы уровня соединения — обрыв SRT-сессии, неудачный HTTP-запрос к HLS-источнику — вообще начали считаться, так что полная пропажа источника наконец видна на графике, а не только в логе. В Retroview поехали метрики качества источников, статистика сервера, инвентарь и загрузка видеокарт и счётчики транскодера. Если нода отказалась применить сохранённые настройки, причина доезжает до консоли, а не остаётся в локальном логе машины. А на установках с десятками дисков занятое место разложено на актуальный архив, брошенные записи и остальное — так что у вопроса «куда ушло место» появился ответ.


Вот что мы сделали для Catena

DRM, а значит — платное вещание. Это самый большой разрыв, державший операторов на Flussonic Media Server. Catena умела расшифровывать защищённый вход, но не умела защищать то, что раздаёт, — и потому не заменяла Flussonic ни на одном платном канале. Теперь заменяет. Стримы шифруются схемой CMAF cbcs, и одна зашифрованная копия обслуживает HLS/fMP4 для FairPlay и DASH для Widevine и PlayReady — паковать дважды не нужно. Ключи приходят либо с вашего сервера ключей по SPEKE v1 или v2, либо из конфигурации для проверки.

Кластерное устройство тут важно не меньше самой криптографии. Шифрование происходит на выходе с ноды, принявшей источник, а не при записи: архив хранит открытое, поэтому перемотка, миниатюры, транскодирование и аналитика продолжают работать. Эдж получает только шифротекст — ключ и учётные данные сервера ключей не покидают ноду захвата и не попадают в конфигурацию эджа. А при импорте конфигурации из Flussonic v3 стрим с секцией drm приезжает выключенным: массовая миграция не должна тихо начать вещать премиальный канал открытым.

Витрина с настоящей программой передач. Зрительское приложение Catena — то, которое ваши абоненты открывают на телевизоре или в браузере, — переехало на новое ядро вместе с бэкендом, который ему нужен. Абонент входит по своему токену, получает список каналов, на которые у него есть право, с готовыми адресами проигрывания, а вместе со списком приезжает билет — так работают ограничение по числу устройств и отзыв доступа, и витрине при этом не нужно знать ничего про служебные ключи.

За ней — программа передач, которой раньше не было ни в каком виде. Central теперь владеет источниками XMLTV, скачивает их по расписанию, хранит сетку и отдаёт её и витрине, и выходу MPEG-TS в виде EIT. Две практические заметки из разработки: импорт фильтрует передачи до тех каналов, которые вы действительно привязали, — реальный файл провайдера, на котором мы проверялись, содержал полтора миллиона передач по 4054 каналам, из которых 95% строк никто и никогда не прочитает, — а скачанный файл сохраняется, поэтому привязка нового канала переимпортируется сразу, не дожидаясь следующей загрузки.

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

Таймшифт-каналы. «Первый +2» как полноценный канал. Перемотка была и раньше, но перемотка — это параметр в ссылке плеера: у сдвинутой версии не было своего имени, своей строки в списке каналов, своих сессий и статистики, её нельзя было запушить, защитить или отдать в зону CDN. Теперь таймшифт-канал — обычный стрим с необычным источником, а значит зрительские адреса, сессии, DRM и пуши достаются ему бесплатно. Один захват и глубокий DVR закрывают часовые пояса вместо приёма отдельной региональной версии на каждый.

Два последних разрыва по форматам. Catena захватывает источники DASH — это вторая половина того же тикета, работающая на том же ридере fMP4, что описан выше. Вдвоём с HLS они закрывают CMAF-ориджины, шлюзы DVB-I и облачные пакеджеры, которые публикуют что-то одно. Отличие у DASH ровно одно, и оно честное: манифест не перечисляет, что лежит, а даёт время старта и шаблон, поэтому какой сегмент уже можно взять — считается от настенных часов, а не читается из списка. А на выходе HLS отдаётся в контейнере MPEG-TS наравне с fMP4, по своему адресу, для старых плееров и приставок, которые другого не принимают. Вместе это снимает два последних ответа вида «Flussonic это умел, а Catena нет» — на входе и на выходе.

VOD перестал быть ручной работой. Кластерный каталог VOD умел принять файл и отдать его плеером, но всё, что превращает залитый файл в услугу — лестница качеств под MBR, описатель SMIL, судьба оригинала, — делалось руками на каждой ноде. Теперь шаблон транскодирования закреплён за ассетом, задание рождается по коммиту заливки, исполнителя выбирает central, а результат возвращается в каталог обычным файлом. Шаблоны, задания и их прогресс живут в консоли, а не в curl. И MBR, собираемый из соседних файлов, плюс внешние субтитры, подхватываемые рядом с видео, означают, что мигрирующему клиенту не надо перепаковывать библиотеку.

Эджи стали настоящими эджами. Эдж-нода раньше раздавала только архив: лайв и перемотку до неё сознательно не пускали, потому что стрим на эдже тянул бы с ориджина вечно — независимо от того, смотрит его кто-нибудь или нет. Обе причины сняты. Стримы на эдже поднимаются по обращению зрителя и гаснут по простою, а ноды обмениваются живым потоком по нашему собственному межнодовому протоколу, а не деградируют до RTMP или SRT с лишним ремуксом. Так что вся зрительская нагрузка, включая лайв, уезжает с ноды захвата на эджи.

Что вы получаете при переходе с Flussonic Media Server на Catena

Catena устроена кластером с самого начала: вы заводите стрим, а не выбираете под него машину; архив и каталог VOD общие на кластер; всю установку видно из одного места. Это мы разобрали в 26.08, и с тех пор не изменилось. В 26.09 изменилось другое: список того, что Flussonic умел, а Catena нет, практически закончился.


Вот что мы сделали для Mcaster

Вещательные входы — все. Mcaster — головная станция: сигнал приходит со спутникового приёмника, из соседней сети, от партнёра или с собственного плейаута. Этот релиз закрывает те входы, которые были только у эрлангового Flussonic.

SDI с карт DekTec работает отдельным процессом на порт карты, общающимся со стримером через разделяемую память: отказ на уровне драйвера уносит один захват, а не медиасервер целиком — что при истории падений DTAPI не теоретическая забота. Он деэмбеддирует многоканальный звук, извлекает VANC и сам считает выровненные метки времени. В консоли теперь видно, какие карты реально стоят в машине, сколько у них портов, в каком варианте прошивки они находятся и кто из стримов их уже занял. Это не украшение: на DTA-2178 каждый канал назначается прошивкой входом или выходом, и порт, который сейчас выход, отвечает на попытку захвата «занят» — после чего инженер идёт искать посторонний процесс, которого нет.

SMPTE ST 2110 принимается целиком: видео 2110-20, звук 2110-30 и вспомогательные данные 2110-40, плюс NMOS-нода, публикующая приёмники по IS-04 и IS-05, чтобы чужой контроллер мог их коммутировать. Приём идёт в выделенном системном треде пачками пакетов: 1080i25 в 10 битах — это 130 МБ/с и около 90 тысяч пакетов в секунду на одну дорожку, и это не работа для планировщика задач общего назначения. MXL, открытый обменный слой EBU через разделяемую память, тоже читается — для установок, где соседи по конвейеру отдают сигнал так.

RIST сделан своей реализацией: приём и отдача, юникаст и мультикаст, восстановление потерь и счётчики, которыми можно доказать, что линк ведёт себя прилично. Ценность тут скорее коммерческая, чем техническая: RIST — единственный протокол надёжной доставки, изданный отраслевым органом, а не одним вендором, поэтому он появляется в требованиях тендера отдельной строкой, а ответить на такой тендер мы до сих пор не могли вовсе.

Транспортный поток, который можно сдать по договору. Исходящий MPEG-TS раньше был «бери как есть»: номер программы зашит в 1, PID выделяются автоматически, SDT не выдаётся вовсе. Теперь можно задать карту PID, номер программы и имя сервиса на каждое направление. Ближайший повод — клиент, получающий один канал от нас и от резервного провайдера, чей резерватор требует совпадения PID у двух потоков. Но того же контроля просит и мультиплекс, и IRD, и мониторинг NOC, и спецификация контрибуционного контракта.

Условный доступ. Скремблирование Simulcrypt на выходе SPTS: без карты доступа картинки нет, с картой — есть. Настраивалось это только правкой документа руками, где ошибка в одном hex-поле означает «карта молча игнорирует EMM» и стоит дней отладки на стенде, — поэтому в консоли появилась нормальная форма.

Клиенты и то, что каждый из них купил. Об этом операторы Mcaster просили прямее всего. Вы продаёте не поток, а услугу: этот канал, доставленный вот так, вот этому юрлицу. Конфигурация и мониторинг знали только про стримы, поэтому на звонок клиента смотреть было некуда — что он купил, что из этого лежит и чей это простой.

Теперь продажа записана там же, где живёт доставка. У юникастного пуша и у порта SRT есть поле владельца, а статический токен стрима позволяет выдать покупателю ссылку раз и навсегда и сшить его потребление с ним. Мультикастные пуши владельца сознательно не несут: получателей в группе много, коммутация сетевая, и одно поле такую доставку честно не описывает. Поверх этого — статистика доставки по каждому направлению: статус с названной причиной отказа, битрейт, байты, переподключения, ретрансмиты. Заодно починилась вещь похуже: падающий пуш иногда сообщал о себе как о работающем — с пустой ошибкой и растущим счётчиком переподключений, — и консоль уверяла оператора, что отдача жива, хотя не уходило ни байта.

Кто и что поменял. Central знает желаемое состояние установки — конфигурацию стримов и нод, зоны CDN, учётные записи администраторов, жизненный цикл нод — и до сих пор не записывал, кто это менял. Когда операторов несколько, инцидент от этого становится неразбираемым: на вопросы «кто удалил стрим» и «когда и кем была отозвана нода» ответа просто не было. Теперь есть: кто, что, когда.

Свой пакет и кластер, который остаётся одним продуктом. Появился пакет mcaster-streamer. До него пакет ноды существовал ровно один — от Catena, — а консоль Mcaster показывала в окне присоединения команду, зашитую на пути Catena. Оператор, который ей следовал, ставил на ноду пакет чужого продукта, и ошибки по дороге не возникало ни одной. Кластер из машин двух продуктов — не экзотика, а тихая авария, о которой узнаёшь сильно позже. Теперь подключение ноды чужого продукта отклоняется с внятной причиной.

Что вы получаете при переходе с Flussonic Media Server на Mcaster

Головную станцию оценивают по тому, что она может принять и что может доказать про отданное. Ровно туда 26.09 и попадает.


Вот что мы сделали для Agora

Agora — это корпоративное телевидение: свои внутренние каналы, студийные сигналы, подготовленные к вещанию, общие собрания и вебинары, доставленные сотрудникам по корпоративной сети. В 26.09 у неё появляется собственное лицо на общей платформе: своя консоль, свой набор разделов, своя продуктовая принадлежность — а доменные возможности переезжают на новое ядро следующими релизами.

Два куска ядерной работы попадают ровно в её сценарий.

Раздача с низкой задержкой, которая масштабируется. Работа по WebRTC, описанная выше, — это ровно то, что нужно корпоративному вещанию: общее собрание, это несколько тысяч человек, смотрящих одно и то же одновременно, с задержкой меньше секунды, внутри одной сети. Переход с 200–300 одновременных сессий на ноду к 18 000 меняет то, во сколько компании обходится трансляция на всех, — из стойки в одну машину.

Публикация по SRT. Студия, переговорная или ноутбук с OBS теперь публикуют в кластер по SRT, приём идёт на той ноде, до которой дозвонились, с шифрованием и восстановлением потерь на входе. Это обычный способ, которым внутреннее мероприятие попадает на платформу.


Вот что мы сделали для Watcher

Регистратор переезжает на новое ядро, и инженер для этого не нужен. В 26.08 медиаслой получил собственное имя — пакет watcher-streamer, — за которым можно было поменять движок. В этом релизе движок меняется, и меняется по единственному каналу, который у регистратора в поле реально есть: по кнопке обновления в облаке.

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

Что вы за это получаете — плотность. Новое ядро пишет двадцать гигабит в секунду на сервер, и по мере переезда мы ожидаем кратного сокращения ресурсов на ту же установку: меньше машин на то же число камер, меньше места в стойке, меньше счёт за электричество.

Захват камер стал заметно надёжнее, и нашли мы это случайно. Гоняясь за потерями записи на регистраторе с десятью тысячами стримов, мы заметили, что часть стримов даёт фрагменты в десять раз мельче остальных, полезли смотреть камеру — и камера оказалась исправна. Проблема была в том, как мы собирали фрагментированные RTP-пакеты в кадры на тракте приёма RTSP.

Замеры говорят сами за себя. На той же камере и том же стенде июльская сборка давала 438 453 битых кадра на 4 600 555 — это 9,55%. После правки: 6 ошибок на 272 591 кадр, 0,002%. На принимающем регистраторе, где час крутились 10 000 стримов, медиана потерь архива упала с 15 236 до 2 фрагментов в секунду, а число стримов, теряющих хоть что-то, — с 2815 до 2.

Если у вас камеры по RTSP — то есть если у вас камеры, — это самая ценная строчка релиза.

Запись перестала выбрасывать данные при свободной памяти. Закрытый фрагмент жил ровно в одном месте, и окно раздачи вытесняло фрагменты по числу штук. Отстал таск записи на несколько фрагментов — данные потеряны навсегда. На регистраторе с девятью тысячами камер это 898 501 потерянный фрагмент за десять минут, притом что свободными оставались 42 ГБ из 125. Теперь у раздачи и у записи разные бюджеты: очередь записи держит собственные ссылки на данные и ограничена в байтах, а фрагмент может потеряться только тогда, когда память действительно кончилась. Попутно выравнивание дозаписи по границе 4 КБ само по себе снизило потери с 5524 до 8.

Регистратор владеет своими камерами. Конфигурация синхронизировалась двумя несимметричными каналами, и оба били по живым людям: камера, созданная на регистраторе, не появлялась в облаке, пока человек не найдёт кнопку «синхронизировать», а фоновый забор конфигурации из облака раз в шестьдесят секунд молча перезаписывал локальные правки. Архитектура теперь названа прямо: регистратор — единственный источник правды по конфигурации своих камер, облако — недеструктивное зеркало. Пока связь есть, править из облака можно; пока связи нет — нельзя, вместо того чтобы делать правки, которые потом тихо пропадут.

API v2 выключен. В 26.08 мы сказали, что выключим, — и выключили: ручки v2 отвечают заглушкой с предупреждением. Поскольку мы знаем, что часть биллингов ещё на нём, в конфигурации остался флаг, которым v2 включается обратно на переходный период. Считайте это сроком, а не отсрочкой.

Всё, что было в v2, уже есть в v3. Из опыта тех, кто пробовал переезжать, мы поняли, что дело не в отсутствующей ручке, а в отсутствующем сценарии: создание пользователя, организации и папки — это цепочка вызовов, где каждый идентификатор берётся из ответа предыдущего, и пропущенный шаг даёт либо 403, либо абонента с правами администратора. Поэтому мы пишем инструкцию «как перейти на v3» для интеграций с биллингом. Если у вас своя интеграция на v2 — напишите нам, разберём ваши вызовы вместе.

Новый плеер и остальное. В плеере появились календарь, переключение качества, выделение отрезка на таймлайне с экспортом выбранного интервала, поддержка мозаик и отладочная панель, отделённая от самого плеера; на регистраторах он теперь стоит по умолчанию. Рядом: список организаций пользователя показывается целиком, а не урезанным; окно с информацией об архиве показывает настоящие числа; на странице мозаик починены пагинация и удаление; прогноз использования диска, который central на самом деле посчитать не может, убран, а не оставлен вводить в заблуждение; а планировщик, молча перестававший выполнять всю периодику после рестарта Redis, теперь это замечает и восстанавливает расписание сам.

«Сторожка». Продукт для пропусков в посёлках, построенный на Watcher, в этом релизе повзрослел. Жители сгруппированы в участки, а не существуют по отдельности, — поэтому ограничение «с этого участка гостевые пропуска не выписываются» вешается туда, где ему место. Житель входит по номеру телефона и коду из СМС, а не по почте и паролю, которых ему никто не выдавал. Открывашка отчитывается о проездах: какая машина проехала, когда, в какую сторону и по какому пропуску, — и на эти данные наконец появился экран: лента проездов с поиском по номеру и по пропуску. Председатель может переключаться между своими пропусками и пропусками всего общества, а не видеть чужие по умолчанию. А в админке оператора появился продуктовый срез по каждому посёлку — жители, участки, выписанные за неделю пропуска и давность последнего обмена с открывашкой — вместо голого списка названий.


Flussonic Media Server

Нового ничего, и это осознанно. Как мы сказали в 26.08, фаза активного развития Flussonic Media Server закончена: продукт остаётся поддержанным, минимальные обновления безопасности мы выпускаем, но новых возможностей в нём не будет — вся разработка идёт в продукты на новом ядре.

Этот релиз — хороший момент начать планировать переход, потому что поводов ждать почти не осталось. Если вы занимаетесь телевидением и OTT — это Catena, у которой с 26.09 есть DRM, программа передач, своя мидлварь — если она вам нужна, таймшифт-каналы, захват fMP4 по HLS и DASH, выдача MPEG-TS для старых приставок и инструмент, читающий ваш существующий архив на месте. Если у вас головная станция — это Mcaster: SDI, ST 2110, MXL, RIST, полный контроль PSI/SI и условный доступ. Если вы занимаетесь видеонаблюдением — это Watcher, регистраторы которого начали переезжать на новое ядро прямо в этом релизе.

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