История версий¶
версия 2.0.2.423¶
26.10.2026
Демоверсия — бесплатная редакция для технической оценки, пакет
pstreamer-demo: без ключа защиты и активации, без ограничения по сроку, только для ознакомления (коммерческое использование запрещено). Набор возможностей и ограничения — Демоверсия.Демоверсия: поле DVR без ошибки — на вкладке «OTT» редактора потока после выбора режима «OTT / HLS» под полем «Хранилище DVR» больше не появляется ошибка «Не удалось загрузить хранилища DVR»: поле показывает только «Недоступно в демоверсии» (Сравнение редакций).
Обновите транскодеры вместе со стримером — нужны pstreamer-tcnv 1.2.0.128, pstreamer-tcsw 1.2.0.127 и pstreamer-tcivpl 1.1.0.56 или новее: транскодер прежней версии может аварийно завершиться при остановке службы, а логотип на программном транскодере требует новой версии tcsw. После обновления транскодеров перезапустите службу (Файлы и проверка установки).
Автозапуск службы при обновлении пакета — обновление rpm-пакета больше не отключает автозапуск службы
pssи не останавливает её: раньше после такого обновления и перезагрузки сервера стример сам не запускался. Теперь, в том числе при обновлении с 2.0.2.408, автозапуск остаётся включённым, а работающая служба перезапускается на новой версии; служба, которую администратор остановил или отключил, такой и остаётся. Обновление deb-пакета больше не включает автозапуск, отключённый администратором. Системный пользовательpssпри обновлении больше не удаляется и не создаётся заново. Если rpm-установка обновлялась раньше, проверьте автозапуск командойsystemctl is-enabled pssи при ответеdisabledвключите его:sudo systemctl enable pss(Установка на системы семейства RHEL).Настройки OTT, DVR и DRM без перерыва вещания — сохранение настроек OTT, DVR и DRM работающего потока перезапускает только OTT-раздачу и запись архива: входы и выходы (UDP, SRT и другие) продолжают работать без перерыва, аптайм потока не сбрасывается. Раньше любое такое изменение переподнимало все входы и выходы потока, и на выходах был короткий перерыв. Глубина архива и целевая длительность LL-части применяются на лету, без перезапуска. Настройки, меняющие сам транспортный поток (имя сервиса, программа, фильтры PID, исправления PAT/PMT/PCR, источник EPG), переподнимают входы и выходы, как прежде (OTT и DVR).
Клонирование потоков — в веб-интерфейсе поток или несколько выделенных потоков копируются вместе со входами и выходами: копия создаётся на паузе, с суффиксом
-copyв имени, а итог перечисляет порты и адреса, совпадающие с исходным потоком (Клонирование потоков).Вход в веб-интерфейс без окна браузера — при открытии веб-интерфейса с другого компьютера браузер больше не показывает собственное окно входа перед формой веб-интерфейса. Запрос API к пути
/data/…с заголовкомX-Requested-With: XMLHttpRequestпри отказе получает401без вызова Digest; скриптам, входящим по Digest, этот заголовок отправлять не нужно (Вход, Доступ).Помощник для рекламаций в веб-интерфейсе — пока у SPTS-потока есть активное нарушение TR 101 290 или дрейф PCR, в строке потока и в окне статистики выводится значок «Письмо ИИ»: он открывает готовый запрос для ИИ-чата, который составит письмо-рекламацию поставщику. Запрос доступен только роли Admin, письмо всегда на английском (выбор языка убран), а об источнике в запрос попадает только адрес входа без логинов, паролей и ключей. Без активного нарушения узел запрос не формирует (Помощник для рекламаций).
Сдвиг увеличенного кадра мозаики — в окне исходного кадра увеличенную картинку можно сдвигать мышью с зажатой правой кнопкой, а на телефоне и планшете — масштабировать щипком и сдвигать пальцем (Исходный кадр).
Имя OTT адаптивного набора без пробелов — поле «Имя OTT» адаптивного набора больше не принимает пробелы: они ломали воспроизведение и экспорт плейлиста. Стример тоже удаляет их — при добавлении и изменении набора через API и при загрузке настроек (с записью в журнал); очищенное имя записывается при следующем сохранении. Если после удаления пробелов имена двух наборов совпали, настройки всё равно загружаются: второе имя не раздаётся, в журнал пишется предупреждение (раньше такие настройки не загружались) (Адаптивный набор).
Экспорт в M3U: адаптивные наборы и DASH — в плейлист экспортируются и адаптивные наборы: мастер-плейлист HLS и манифест DASH набора, каждый — пока его отдаёт хотя бы один поток набора. Вариант «Все активные» добавляет после потоков все работающие наборы, а новый протокол DASH включает манифесты наборов и потоки в режиме DASH. Раньше выбранные наборы экспортировать было нельзя (Экспорт и импорт M3U).
Логотип в кадре транскодера — на выходы транскодера NVIDIA и программного транскодера (CPU) можно наложить логотип из PNG-файла: на каждом выходе свой файл, положение, непрозрачность и размытие фона под логотипом. Логотип не масштабируется; веб-интерфейс сразу проверяет, помещается ли он в кадр выхода, и показывает превью в масштабе. Файлы логотипов загружаются в веб-интерфейсе и хранятся на узле. Бэкенд декодера с логотипом можно переключать между NVIDIA и программным; кадр у них при тех же настройках размера может отличаться на несколько пикселей, и логотип должен поместиться в кадр выбранного бэкенда. У Intel логотипа нет (Логотип в кадре).
Быстрый останов и перезапуск — транскодеры, внешние команды входов и выходов
stdи команда оповещений завершаются вместе со службой, а во время остановки узел больше не перезапускает транскодеры. Раньше они не реагировали на сигнал остановки, и останов или перезапуск службы ждал, пока система завершит их принудительно, — обычно около 15 секунд.Статистика транскодера — очередь декодера и задержка больше не замирают после того, как узел перезапустил транскодер.
Оповещения по группам — экран «Оповещения» по умолчанию группирует действующие оповещения по узлу и по коду, с числом строк и наибольшей важностью в заголовке группы; большие группы открываются свёрнутыми. Метки «ресинхр. (висит)» и «резервный вход» отличают рекомендации по ресинхронизации и ошибки резервных входов от текущих аварий. Прежний список доступен переключателем «Списком» (Оповещения).
Алерты без мигания — алерт о ресурсах узла (CPU, память, сеть, GPU, видеопамять GPU, диск DVR, рабочие потоки DVB-адаптеров) поднимается, только когда значение продержится за порогом 30 секунд, а снимается после 60 секунд ниже порога. Алерт ошибок счётчика непрерывности потока (код 15) поднимается, только когда потери продолжаются 30 секунд, и снимается после 60 секунд без потерь; уровень ошибки держится, пока число ошибок не упадёт ниже половины порога. Раньше нагрузка, скачущая через порог, и единичные потерянные пакеты давали алерты, которые появлялись и исчезали за секунды. Время задаётся на экране «Оповещатель» (параметры
system-alert-raise-sec,system-alert-clear-sec,stream-cc-raise-secиstream-cc-clear-secсекцииalerter); 0 возвращает прежнее поведение (Настройки алертера).Алерт о заполнении видеопамяти GPU — новый алерт кода 64 на каждую карту NVIDIA: предупреждение при заполнении видеопамяти на 85 %, ошибка — на 95 % (строка «Видеопамять GPU» экрана «Оповещатель», параметры
gpu-mem-warning-pctиgpu-mem-error-pct; 0 выключает уровень). Карта с заполненной видеопамятью не запускает новый канал транскодера, хотя её загрузка может выглядеть нормальной. Для GPU Intel алерта нет. Данные системного монитора (/data/sysmon) показывают для каждой карты NVIDIA занятую и общую видеопамять и процент заполнения, а системный монитор админки — полосу «Видеопамять»; прежняя полоса «Память» карты NVIDIA называется теперь «Шина памяти». При разносе системных алертов узлы прежних версий в том же домене показывают этот алерт без названия, пока их не обновят (Каталог кодов алертов).Неисправный резерв — одним алертом — новый алерт кода 65 (уровень «предупреждение», один на поток) перечисляет входы, которые в ошибке, пока поток идёт через другой вход. Такие входы больше не держат собственные строки кода 1, а код 1 теперь всегда критический: поток потерял источник. Внешнее назначение получает снятие строк кода 1 и подъём кода 65 вместо прежнего обновления «критический» → «ошибка». Настраивается в блоке «Резервные входы (код 65)» экрана «Оповещатель» (Каталог кодов алертов).
Тише алерты ресинхронизации — алерт кода 61 (разрыв PCR без потерь) теперь информационный и по умолчанию выключен, его порог — отдельный ключ
stream-sync-absorbed-count. Коды 58, 59 и 61 снимаются после двух часов ниже порога вместо шести часов без единого события, а строка входа, с которого поток переключился, снимается сразу. Пороги и число спокойных часов задаются в новом блоке «Ресинхронизация входа (коды 58, 59, 61)» экрана «Оповещатель» (Каталог кодов алертов).Алерт ACME снимается сам — алерт об ошибке выпуска сертификата из-за проблемы на узле (нет HTTPS-сервера с именем хоста, занят порт проверки HTTP-01, ключ учётной записи) снимается после первой попытки, прошедшей этот шаг; раньше он держался до выключения автоматического выпуска (Каталог кодов алертов).
Внешние оповещения: возникновение и снятие парой — порог минимальной важности каналов «Процесс», Telegram и e-mail применяется к инциденту, а не к каждому сообщению. Инцидент, важность которого поднялась до порога, сообщается в момент повышения, а снятие приходит всегда, когда сообщили о возникновении. Раньше при смене важности относительно порога приходило снятие без возникновения или возникновение без снятия (Когда запускается скрипт).
Скрипты оповещений и stderr — поток ошибок скрипта читается, пока скрипт работает: обильный вывод в stderr больше не приводит к таймауту, а оставленный в фоне процесс не задерживает следующие оповещения. Ошибкой доставки считается только ненулевой код завершения; в журнал попадают последние 4 КБ stderr (Результат, таймаут и журнал).
Meshwork: защита обмена между узлами — узел проверяет, что ответ соседа подписан тем же секретом или ключом домена, то есть пришёл от настоящего участника сети, и отклоняет сообщение соседа, записанное раньше и отправленное повторно, а также сообщение, адресованное другому узлу. Ключ домена передаётся зашифрованным: записанный обмен, повторённый позже, его не получает. Раньше тот, кто ответил на соединение (перехваченная связь по HTTP или TLS без проверки сертификата), мог подменить данные узлов, сеансы входа и ключ домена. Настраивать ничего не нужно (Соседи и секреты).
Meshwork: часы узлов должны быть синхронизированы — узел, часы которого расходятся с часами соседа больше чем на 5 минут, сосед отклоняет, и связь показывается недоступной. Оба узла пишут в журнал предупреждение с именем соседа и величиной расхождения; первое предупреждение появляется уже при половине допуска. Допуск задаёт новый дополнительный параметр
cluster-hello-window-sec(по умолчанию 300 секунд, 0–86400); 0 выключает проверку часов для узлов, часы которых синхронизировать нельзя, а повторённые сообщения отклоняются и тогда. Перед обновлением проверьте, что на всех узлах работает NTP (Требования и достижимость).Обновление и откат Meshwork — по возможности обновите все узлы домена сразу. Если так нельзя, сначала обновите узлы, к которым подключаются остальные (центральные узлы и узлы с публичными адресами), затем узлы за NAT. Пока в домене работают узлы разных версий, обмен данными идёт с ограничениями, а сообщения узлов прежних версий ещё можно повторить. Узел, возвращённый на прежнюю версию, его соседи на новой версии отклоняют до своего перезапуска: откатывайте домен целиком или перезапустите узлы новой версии после отката (Обновление узлов домена).
Тише при плановых перезапусках узлов Meshwork — алерт о недоступном узле (код 26) поднимается после минуты молчания, а не через 15 секунд, поэтому быстрый перезапуск соседа не будит весь домен. Узел, который останавливают или перезапускают намеренно, сначала предупреждает соседей (узлы прежних версий уведомление не получают), и те 5 минут не поднимают для него алерт, а в таблице узлов он значится как «Перезапуск (N с)». Время задают поля блока «Контакт Meshwork (расширенное)» настроек сервера (параметры
cluster-node-down-secиcluster-leave-grace-secсекцииcluster, Каталог кодов алертов). Исправлено: узел мог дважды показывать себя в сети и повторять собственные алерты как пришедшие от соседа.Изменение настроек Meshwork — сохранение настроек больше не убирает автообнаруженные узлы из карты сети и не снимает по ошибке их алерты «узел сети замолчал» (Каталог кодов алертов).
Автовход с другого узла домена — сеанс автовхода, пришедший с другого узла домена, на узле, где такой учётной записи нет, получает роль Viewer. Если запись на узле есть, действует её роль, как и раньше (Веб-сервер и учётные записи).
Внешний биллинг и соседние узлы — серверы биллинга больше не получают запрос входа соседнего узла Meshwork, который узел уже отклонил сам.
Секреты в ответах API и их запись обратно — ответ на добавление или изменение записи через API (
POSTв/config/…) больше не повторяет пароли и другие секреты, в том числе для роли Admin: они приходят как********; чтение настроек (GET) не изменилось. Секрет или командная строка, переданные в записи как********, оставляют сохранённое значение, так же как адрес, скрытый со следом<hidden>: полученный ответ можно отправить обратно, не потеряв пароли. Сам********задать паролем больше нельзя (Управление через HTTP API).Адреса в ответах для ролей Viewer и Restricted admin — в потоке событий
/data/events(адрес активного входа потока и тексты ошибок), в текстах событий/data/dbstatи в причинеreasonиз/data/cert/acme/statusлогины, пароли и секретные параметры адресов скрыты, как в XML/data. Для роли Admin ничего не меняется.Отклонённое изменение настроек ничего не меняет — если узел отклоняет изменение потока, входа, выхода или настроек сервера (например, недопустимое имя узла), объект остаётся таким, каким был. Раньше ключи, применённые до отказа, оставались в силе вплоть до перезапуска (Как приходят ошибки).
Статистика из базы без отсутствующих таблиц — запрос
/data/dbstatс параметромmissing=skipпропускает таблицы, которых нет, а не отклоняет весь запрос.Файлы настроек закрыты от чтения — pss.json и его резервные копии читает только пользователь службы. Экспортёр метрик
pss-metrics, запущенный под другим пользователем, подключается к порту 43971; при другом порте веб-сервера задайтеPSS_URL, в том числе в файле/etc/pss-metrics.conf. Исправлено: экспортёр подключался к порту 8808, если в pss.json не задан порт веб-сервера, и не учитывалPSS_URLиз этого файла (Файлы и службы, Конфигурация).Локальные логины по IP-адресу и клиенты IPv6 — подключение клиента по IPv6 больше не вызывает ошибку при проверке логинов по IP-адресу: такой клиент просто не совпадает с адресами IPv4 (Пользователи / Логины).
Разрешённые потоки локального логина — логин, у которого к запуску узла не осталось ни одного из потоков списка «Разрешённые потоки», не получает ни одного потока. Раньше такой логин мог смотреть все потоки (Пользователи / Логины).
Включение и выключение EPG-сервера — «Включить EPG-сервер» теперь управляет обоими портами, HTTP и HTTPS, и действует сразу, без перезапуска: выключенный сервер не открывает ни одного порта. Раньше выключенный сервер всё равно занимал порты при запуске службы (подключения зависали), выключение на ходу перезапускало HTTP-порт, а HTTPS-порт флаг не учитывал (Выдача XMLTV).
Полная выгрузка EPG с данными привязки — новый путь EPG-сервера
/xmltv-src(и/xmltv-src.gz) выдаёт каналы всех или выбранных источников с данными для привязки эфирных каналов: номер и имя источника, идентификатор канала в ленте; можно выгрузить только каталог каналов или добавить прошедшие сутки. Доступ — учётной записи EPG-сервера с признаком «Все каналы в /xmltv-src» (all-channels) или с самого узла (Полная выгрузка с данными привязки, Настройки EPG).Возрастной рейтинг в программе передач — суточная программа канала в JSON для OTT middleware выдаёт возрастной рейтинг передачи (возраст и систему рейтинга, например 16+), взятый из ленты XMLTV или из родительского рейтинга DVB EIT; в расписании канала в веб-интерфейсе он показывается значком (Суточная программа в JSON, База данных EPG).
Подзаголовок передачи отдельным полем — подзаголовок из ленты XMLTV (
<sub-title>, например название серии) на языке названия или без указания языка выдаётся в суточной программе канала в JSON отдельным полемsub, а в полной выгрузке/xmltv-src— элементом<sub-title>; название передачи там без подзаголовка. Обычная выдача/xmltvне изменилась. Подзаголовки появляются после очередного обновления каждого источника (Суточная программа в JSON).Загрузка EPG по очереди — большие ленты загружаются и обрабатываются по одной, остальные ждут в очереди, а при запуске службы загрузки разнесены во времени: пик памяти при перезапуске с несколькими большими лентами — как у одной ленты. Неудачная загрузка повторяется через 2, 5 и 15 минут, затем каждые 30 минут, а не через полный интервал обновления. В веб-интерфейсе источник в очереди отмечен, а вкладка «Состояние источников» показывает поля «Следующая попытка» и «Неудачных загрузок подряд» (Очередь загрузок и повторы, База данных EPG).
Таймаут загрузки источника EPG — новый параметр источника «Тайм-аут загрузки, с» (
fetch-timeout) для медленных источников, которые собирают файл по запросу; по умолчанию, как и раньше, 30 секунд (Настройка источников).Источники EPG — «URL / путь источника» при изменении должен быть адресом
httpилиhttpsлибо абсолютным путём к файлу, иначе изменение отклоняется. Cookies источника теперь действительно передаются — в стандартном заголовкеCookieи только настроенному хосту; раньше заголовок называлсяCookies, и серверы его не учитывали. После изменения включённого источника (например, его адреса) данные загружаются сразу, а не по истечении интервала обновления (Настройка источников).Удаление набора каналов EPG — состав набора удаляется вместе с набором и только если удаление прошло. Раньше у набора без учётных записей состав оставался в базе, а отклонённое удаление набора, назначенного учётной записи, могло стереть его состав.
EPG: передачи через полночь — передача, которая идёт через полночь (UTC), показывается в обоих днях программы, а её метка в плейлисте OTT находится и после полуночи. Раньше такая передача пропадала из обоих дней.
Исправлено: в выгрузке
/xmltvпередача могла повториться, если два источника выдают канал с одним идентификатором; программа передач из EIT потоков сразу показывает изменённую передачу, а не старый текст или рейтинг.Исправлено: «Автоочистка осиротевших каналов» могла удалить каналы источника EPG, лента которого не изменилась; изменения программы во внешних источниках теперь распознаются надёжнее, а правки названий каналов в веб-интерфейсе сохраняются (База данных EPG).
EIT — служба больше не завершается аварийно при формировании EIT из XMLTV, если у события два и более возрастных рейтинга или длинное описание на польском, чешском, венгерском, хорватском или боснийском языке: слишком длинный текст делится на несколько дескрипторов. Длинное описание на кириллице и других нелатинских алфавитах больше не дробится на однобайтовые фрагменты, нумерация дескрипторов верна, а длинное событие сохраняет возрастной рейтинг (Генератор EIT).
NIT — узел отслеживает версию NIT и после сброса (раньше список логических номеров каналов мог остаться пустым) и применяет только NIT своей сети (actual).
Автоматический тип сервиса — при
Service type0 программа H.264 считается HD (тип 0x19) начиная с уровня 3.1. Раньше порогом был уровень 3.0, и SD 576i/480i этого уровня помечался как HD; теперь — SD (0x16) (Параметры программ).Приём multicast на петлевом интерфейсе — вход UDP или RTP с интерфейсом
loили127.0.0.1вступает в группу multicast только на петлевом интерфейсе и принимает группу, отправляемую на этом же узле. Раньше вход вступал в группу на внешнем интерфейсе и ничего не получал. Чтобы принимать группу из сети, укажите сетевой интерфейс или оставьте поле пустым (Вход).Повторное вступление в группу multicast — у входов UDP, RTP и Pro-MPEG период повтора ограничен 3600 секундами: большее значение узел не принимает, а при запуске снижает до 3600. Раньше значение больше 4294 секунд заставляло вход повторять вступление непрерывно. Неудачная попытка теперь повторяется через период, а не прекращает повторы до переподключения входа; у входа Pro-MPEG повторно подписываются и потоки FEC (Вход).
Проверка адреса входа UDP и RTP — при изменении адрес, не являющийся адресом IPv4 (например,
999.999.1.1), отклоняется с сообщениемIncorrect IPv4 address. Сохранённые ранее настройки при запуске заново не проверяются (Вход).Вход RIST multicast — вступает в группу на интерфейсе из столбца Interface; раньше всегда использовался маршрут по умолчанию. У выхода RIST multicast интерфейс по-прежнему не действует: трафик уходит по системному маршруту к группе (Список пиров).
RIST без аварийных остановок — передатчик RIST, у которого размер блока данных не кратен 188 байтам, больше не останавливает службу: такие блоки отбрасываются, а запись в журнале появляется не чаще раза в минуту. Замена всех входов или выходов потока одним изменением при работающем входе или выходе RIST тоже больше не приводит к аварийному завершению службы.
Вход RTSP — при смене адреса, паузе, понижении до резервного или переподключении вход действительно закрывает прежнюю сессию. Раньше он мог продолжать получать поток со старого источника.
DVB: без периодических разрывов потока — неполное чтение данных с устройства DVB больше не приводит к перезапуску входа и повторной настройке тюнера, из-за которых поток с DVB-T/S периодически прерывался (DVB-приёмник).
Медленный получатель выходов file, pipe и std — если получатель надолго отстаёт от потока, выход переходит в ошибку
Output queue fullи перезапускается, как и выходы других типов; переданные данные идут по порядку. Раньше TS-пакеты в такой ситуации молча терялись и переставлялись (Внешние приложения (std)).Выход std с обильным stderr — приложение, которое много пишет в stderr, больше не останавливается после 64 КБ вывода и не перезапускается по кругу. При сбое в тексте ошибки выводится конец его stderr (Внешние приложения (std)).
Повреждённые таблицы во входном потоке — повреждённые секции PAT, PMT, CAT, NIT, EIT и TOT и дескрипторы в них узел отбрасывает; аварийно завершить службу они больше не могут.
Метка ESCR в PES — потоки с меткой ESCR в заголовках PES разбираются правильно; раньше их разбор прерывался ошибкой.
Добавление потока с транскодером — добавление потока, вход transcoder которого подключён к уже работающему декодеру, больше не приводит к аварийному завершению службы (Подключение).
HTTP/3: потоковые ответы без искажений — по HTTP/3 MPEG-TS over HTTP (
/http/) и части LL-DASH в прямом эфире передаются целыми, так же как по HTTP/1.1. Раньше тело такого ответа приходило повреждённым: начиналось не с границы TS-пакета, фрагменты пропадали или повторялись, и плееры теряли синхронизацию. Сегменты HLS и DASH и другие файлы ошибка не затрагивала (HTTP/3 (QUIC)).OTT — выдача DASH и LL-HLS возобновляется после смены PID видео в потоке (раньше только после перезапуска OTT); раздача MPEG-TS over HTTP больше не сбрасывает вход при кратковременном замедлении диска DVR.
Удаление входа или выхода не останавливает запись DVR — после удаления входа или выхода потока архив DVR продолжает записываться. Раньше запись останавливалась до следующего изменения настроек OTT потока.
DVR: повреждённая запись индекса — если одна запись индекса архива повреждена (например, после отключения питания), узел пропускает её и загружает остальной архив, теряется только этот фрагмент. Раньше всё записанное после неё пропадало из архива при каждом перезапуске, а файлы затем удалялись (Хранилища DVR).
DVR: очистка архивов MP4 — при превышении предела использования диска удаляются и самые старые сегменты архивов MP4 (DASH и LL-HLS). Раньше очищался только архив TS, и диск с одними архивами MP4 оставался переполненным.
DVR: субтитры — архив субтитров WebVTT сохраняется при перезапуске; раньше он терялся (Субтитры WebVTT).
DVR: аварийный запас места — поле «Аварийный запас места, GiB» хранилищ DVR на работу не влияло и не влияет: значение сохраняется, но остановки записи по свободному месту нет. Теперь поле описано как зарезервированное; диск в пределе удерживает очистка по месту, которая не трогает архив моложе защищённого минимума (Хранилища DVR).
Прочие улучшения и исправления ошибок.
версия 2.0.2.408¶
19.10.2026
Неисправный диск DVR не останавливает живую раздачу — переполненный, доступный только для чтения или сбоящий диск DVR больше не прекращает живую раздачу потока по HLS и DASH. Раньше ошибка записи архива без записи в журнале останавливала и живую раздачу, и архив до перезапуска, и стирание архива не помогало. Теперь журнал отмечает начало и конец сбоя записи, а после устранения неисправности архив снова пишется, в том числе после стирания архива потока (Статистика потока). То же относится к архиву субтитров.
Изменение настроек не блокирует API — правка потока (параметр, выход, удаление потока) больше не может зависнуть при упавшем или простаивающем входе или под нагрузкой. Раньше вместе с ней переставали отвечать все запросы конфигурации и список потоков в веб-интерфейсе.
Сохранение настроек без потерь — изменение, сделанное непосредственно перед штатной остановкой или перезапуском службы, больше не теряется; неудачная запись файла настроек повторяется каждые 10 секунд, а журнал называет причину; изменение, сделанное перед автоматическим перезапуском после восстановления из резервной копии, больше не перезаписывает восстановленную конфигурацию.
Повторное подключение входов и выходов — после повторной попытки подключения вход или выход больше не может зависнуть в попытке запуска, так ничего и не открыв, до перезапуска службы или правки настроек. Чаще всего это случалось со входом SRT в режиме listener; затрагивало также PS1, RTMP/RTMPS, RTSP, вход HLS, TCP и транскодер.
SRT: неверная парольная фраза не блокирует вход — вызывающие стороны, которые раз за разом подключаются к порту SRT в режиме listener с неверной парольной фразой или без неё, больше не занимают все места подключения: отправитель с верной фразой подключается сразу.
Репозиторий пакетов по HTTPS и с подписью — репозиторий работает по HTTPS, пакеты и метаданные подписаны ключом репозитория. Новые команды подключения — Установка на системы семейства RHEL и Установка на системы семейства Debian; подключённый ранее репозиторий продолжает работать.
Создание потока с недопустимым значением — запрос на создание потока через HTTP API с недопустимым значением параметра отклоняется целиком, и поток не создаётся. Раньше значение отбрасывалось, а поток создавался (Как приходят ошибки).
Порядок ключа ``mpts`` не важен —
mptsприменяется раньше остальных ключей записи потока, где бы он ни стоял. Параметры OTT и другие настройки потока с одной программой, переданные при создании потока через HTTP API безmptsили записанные в файле настроек выше него, больше не теряются (Порядок ключей внутри объекта значим).SIGHUP — штатная остановка — сигнал SIGHUP останавливает службу так же, как SIGTERM: потоки останавливаются, последнее изменение настроек сохраняется. Раньше процесс завершался сразу.
Вход Pro-MPEG в каталоге Meshwork — вход Pro-MPEG, принимающий группу multicast, объявляется в общем каталоге ресурсов домена так же, как входы UDP и RTP (Общий каталог ресурсов).
Прочие улучшения и исправления ошибок.
версия 2.0.2.399¶
01.10.2026
Буфер T-STD — только метрика — модель видеобуфера давала ложные срабатывания на исправных потоках, поэтому её показатель остаётся в статистике для диагностики, но аварию (код 11) не поднимает и в сводный вердикт TR 101 290 (код 49) не входит (Каталог кодов алертов).
OTT без заполнения CBR — NULL-пакеты, которыми выравнивается постоянный битрейт, не отдаются ни одному OTT-клиенту, в том числе при раздаче по HTTP без сегментера. Постоянный битрейт сохраняется только на транспортных выходах — UDP, SRT, PS1, RIST.
Части LL-HLS по ключевым кадрам — каждый IDR открывает новую часть с признаком INDEPENDENT, поэтому проигрыватель, подключающийся у живого края, находит точку входа в пределах одной GOP.
Много входов HLS на узле — входы HLS загружают сегменты через общий пул: открытый вход больше не держит собственных рабочих потоков выполнения, а при занятом пуле загрузка сегмента откладывается, а не перезапускает вход.
Прочие улучшения и исправления ошибок.
версия 2.0.2.362¶
06.09.2026
Меню CI-модуля — у модуля читается его собственное меню: состояние карты, подписки, серийный номер, ввод PIN и сервисные пункты доступны прямо с экрана оборудования — то же, что модуль показал бы на экране телевизора. Там же появился паспорт модуля — изготовитель, код изделия и тип приложения EN 50221, — а его название узел раскодирует, поэтому кириллические названия больше не приходят искажёнными (Меню модуля).
Дескремблирование отдельным модулем CI — модуль в самостоятельном картоприёмнике обслуживает любой вход потока, а не только приём с DVB-карты: через него проходит весь транспорт входа, а список программ лишь указывает, какие из них дескремблировать. Слот назначается на самом входе, и там же видно, каким входом он занят (CI/CAM на входе потока).
Несколько слотов CI на одном входе — мультиплекс проводится последовательно через несколько модулей, по своему набору программ на каждый слот. Тактовая частота шины CI подбирается по фактическому битрейту входа, а слот, оставшийся занятым, освобождается по запросу с экрана оборудования.
Служебные таблицы при демультиплексировании — таблицы сети и времени и прочие служебные PID исходного мультиплекса подчиняются тем же ключам
mpegts-filter-nit,mpegts-filter-tdt,mpegts-filter-unnecessaryиmpegts-filter-cat, что и на остальных трактах, а не отбрасываются безусловно. Умолчание при этом изменилось: выделенный из мультиплекса поток несёт таблицы сети и времени, которых прежде не нёс, — приёмник за таким потоком, и модуль CI в первую очередь, рассчитывает их видеть. Прежнее поведение возвращаетmpegts-filter-nit.Разрыв PCR не сбрасывает джиттер-буфер — вход, поймавший скачок PCR вперёд, пересаживает точку синхронизации прямо в полосе, не сливая очередь, поэтому разрыв обходится одной заминкой вместо повторного набора буфера. Окно, за которым скачок считается разрывом, подбирается автоматически (Синхронизация).
Быстрый старт входа HLS — живой плейлист подхватывается с хвоста: в очередь идут только последние сегменты, нужные под заданный джиттер, а не всё окно, поэтому вход выходит в эфир с задержкой в пару сегментов вместо целого окна плейлиста. Завершённый плейлист (VOD) по-прежнему воспроизводится с начала.
Подавление дребезга аварий — авария, которая раз за разом поднимается и снимается, сворачивается в один инцидент: узел удерживает её на время затишья и закрывает, только когда дребезг действительно прекратился. Шторм повторов не расходится ни по журналу, ни по внешним каналам. Однажды опознанный дребезжащий источник остаётся таким и после затишья: следующая его серия удерживается с первого же повторения.
Правка канала EPG — у канала задаются идентификатор XMLTV отдельно от отображаемого имени и названия по языкам, а ненужный канал удаляется целиком: вместе с ним уходят его названия, события и членство в наборах.
Прочие улучшения и исправления ошибок.
версия 2.0.2.335¶
27.08.2026
Meshwork (мультидомен) — несколько серверов объединяются в именованные домены, и домен служит границей изоляции: членство узлов, каталог ресурсов и аварии расходятся только внутри своего домена, между доменами не передаётся ничего. Узел может состоять сразу в нескольких доменах, не смешивая их данные. Подробно — Meshwork.
Автообнаружение узлов — достаточно задать домен и одну точку входа: узлы обмениваются списками соседей и сами достраивают полносвязную сеть прямых связей. Общий доменный ключ вырабатывается автоматически и передаётся только по защищённому каналу — TLS либо доверенный сегмент локальной сети.
Распределённая библиотека ресурсов — выходы UDP, RTP, Pro-MPEG и RIST, multicast-входы UDP, RTP и RIST, а также связи PS1 и SRT публикуются в общем каталоге домена (
/data/library): единый список multicast-групп, портов, VLAN, SSM-источников и связей точка-точка с указанием узла и потока. По каталогу видно, какие адреса и порты уже заняты, а новый вход подключается прямо из него — выбором потока, уже отдаваемого на другом узле домена, без ручного ввода адреса.Обзор узлов домена — по каждому узлу видны статус, время последнего контакта, роль, регион, версия сборки, время работы с момента запуска, загрузка CPU, трафик по физическим интерфейсам и число потоков в эфире, а по каждой межузловой связи PS1 или SRT — битрейт, RTT, доля повторов и потерь и вердикт состояния. Упавший узел не пропадает из списка: он держится в нём как недоступный вместе со своей аварией семь суток, а выведенный из эксплуатации убирается из обзора отдельной командой.
Работа через NAT — узел за NAT участвует в домене полноценно и без проброса входящих портов: он подключается сам, публичная точка доступа достраивается по фактически видимому адресу и объявленному порту, а его состояние соседи ретранслируют на один хоп — узел виден и тем, кто не может обратиться к нему напрямую.
Имя узла из сертификата — узел, у которого не задано имя хоста, объявляет соседям имя, покрытое его собственным сертификатом, и только после того, как это имя разрешается обратно в него, а результат проверки виден в данных сервера как
cert-hostиcert-host-refused.Автологин связей внутри домена — для PS1- и SRT-связей между узлами одного домена не нужно заводить логин и пароль на каждую связь: на вызывающей стороне (вход PS1, вход SRT, выход SRT в режиме caller) достаточно включить настройку «Meshwork peer auth», и авторизация выполняется по общему доменному секрету. Подтверждённый узел-партнёр и его поток видны в библиотеке ресурсов и в списке сессий.
Low-Latency HLS и MPEG-DASH на CMAF — новый режим раздачи «OTT / LL-HLS / DASH»: встроенный мультиплексор формирует фрагментированный MP4 (CMAF), поверх которого отдаются MPEG-DASH на
/dashи Low-Latency HLS на/llhls; адаптивные наборы собираются и для этих форматов. Подробно — Режимы раздачи.Малая задержка LL-HLS — медиаплейлист дробится на части, применяются блокирующая перезагрузка плейлиста и подсказка предзагрузки, поэтому плеер начинает воспроизведение, не дожидаясь готовности полного сегмента. Сегменты CMAF несут Producer Reference Time, манифест DASH объявляет UTCTiming и целевую задержку, а настройка «Целевая длительность LL-части (ms)» применяется на лету, без перезапуска потока.
HTTP/3 (QUIC) — HLS, MPEG-DASH, LL-HLS и MPEG-TS over HTTP отдаются поверх QUIC на отдельном UDP-порту, с необязательным 0-RTT; переход на QUIC клиент запрашивает параметром
?h3. QUIC работает только поверх TLS: при выключенном TLS слушатель не поднимается и клиенту не предлагается, а фактическое состояние слушателя видно в данных HTTP-сервера, а не только в настройке. Административные маршруты остаются только на TCP.Выравнивание сегментов по IDR — сегментер различает IDR и обычный I-кадр: на источниках с closed-GOP каждый сегмент начинается с полноценной точки входа, поэтому плеер открывает поток с любого сегмента; на источниках с open-GOP границей служит ближайший I-кадр.
Защита контента (DRM) — OTT-раздачу потока можно шифровать: HLS AES-128 с ключом от самого сервера или от внешнего key-сервера и с необязательной ротацией по временным окнам, либо MPEG Common Encryption (ISO/IEC 23001-7) по схемам cenc и cbcs для CMAF и DASH. Шифрование выполняется один раз, в момент формирования сегмента, поэтому архив DVR хранится зашифрованным и переживает любое число ротаций ключа. Подробно — Защита контента (DRM).
Каждое соединение MPEG-TS over HTTP — отдельная сессия — в списке клиентов потока теперь одна строка на соединение со своим
sess-id, подробности доступны по/data/stream/http-clients/<sess-id>, отдельное соединение закрывается черезPOST /data/kick?sess-id=<id>, а ограничениеmax-connсоблюдается и при значениях больше единицы.DVR (сетевой архив) — каждый OTT-канал пишется на диск параллельно с раздачей, той же сегментацией и без отдельного рекордера; в режиме низкой задержки архив ведётся двумя линиями, MPEG-TS и CMAF, поэтому запись доступна в том же контейнере, что и живое вещание. Подробно — DVR.
Воспроизведение архива (VOD) — архив отдаётся по тем же HLS, DASH и LL-HLS URL, что и живое вещание:
t=<время>включает режим VOD и задаёт начало окна,d=<секунды>— его длительность. Плейлист HLS при этом закрытый, манифест DASH статический, разрывы записи оформлены отдельными периодами; адаптивные наборы воспроизводят архив теми же параметрами.Catch-up по EPG — вместо
tиdдостаточно передатьepg=<время>: сервер сам находит на привязанном канале EPG передачу, идущую в этот момент, и берёт её начало и длительность как границы окна воспроизведения.Субтитры в архиве — дорожки WebVTT пишутся на диск вместе с сегментами и воспроизводятся в VOD по тем же URL; окна без реплик места на диске не занимают.
Хранилища DVR — хранилищ может быть несколько, у каждого свой предел заполнения и свой порядок очистки. Глубина архива («Хранение (часы)», до 90 суток) и защищённый минимум задаются отдельно для каждого потока, а очистка по свободному месту не трогает ни защищённый минимум, ни окна открытых VOD-сессий.
Монитор DVR — отдельный экран показывает состояние и заполнение хранилищ, объём и глубину архива по потокам и задержки чтения и записи, а гистограмма покрытия (
/data/dvrstat) отмечает не только дыры в архиве, но и их причину — обрыв входа, смену PMT, скремблирование, срабатывание очистки. Отсюда же стираются архив отдельного потока и каталоги удалённых потоков.Сбой диска архива не останавливает узел — ошибка обслуживания архива DVR ограничивается тем хранилищем и тем шагом, где возникла: остальные потоки и остальные линии записи продолжают работать, а пострадавший архив помечается требующим перестроения.
Алертер — новая служба оповещений: каждая авария становится инцидентом, который поднимается, обновляется и снимается автоматически, а дедуплицированный активный набор показывает только то, что происходит сейчас. Серьёзность задаётся единой шкалой — от информационной до требующей вмешательства администратора; такой инцидент снимается подтверждением оператора. Подробно — Оповещения (алертер).
Каталог кодов аварий — более пятидесяти типов инцидентов в одном списке: потоки и их входы и выходы, нарушения TR 101 290, ресурсы узла, хранилища и здоровье записи DVR, приём DVB и CI/CAM, транскодеры, OTT, сертификаты и узлы домена. Пороги срабатывания настраиваются в разделе оповещений.
Внешняя доставка оповещений — аварии уходят за пределы веб-консоли: письмом по SMTP (STARTTLS, implicit TLS, AUTH), сообщением в Telegram и запуском произвольной команды, которой инцидент передаётся переменными окружения и полным JSON на стандартный вход. У каждого канала свой выключатель и свой порог серьёзности.
Аварии всего домена — дежурный видит аварии любого узла с любого другого: активный набор расходится вместе с keep-alive и снимается сразу, как только исчез у источника, а у каждой строки указан узел-источник. Аппаратные и системные аварии по умолчанию остаются локальными и поднимаются до доменных отдельной настройкой.
Журнал в базе данных — сообщения сервиса пишутся в SQLite: типизированные записи с источником и уровнем серьёзности, свёртка идущих подряд повторов в одну строку со счётчиком, ограничение хранения по сроку и по объёму. В отличие от активного набора аварий журнал переживает перезапуск.
Общий выключатель оповещений — при выключенном
enableв настройках оповещателя узел не поднимает собственных аварий и не отправляет наружу ничего, включая аварии, полученные от соседей по домену; в списке и в потоке событий остаются только разнесённые по домену аварии соседей.Тяжесть аварии ввода-вывода — по последствиям — отказавший вход, который в этот момент не несёт поток, отмечается уровнем Error, а несущий вход, любой выход и отказ при отсутствии эфира — уровнем Critical, причём оценка пересчитывается, пока авария открыта, и следует за переключением на резерв.
Цвет во внешних оповещениях — в текст сообщения добавлен цветовой маркер уровня (красный для ошибок, жёлтый для предупреждений, зелёный для снятия, синий для информационных), а письмо уходит сразу в двух вариантах: обычный текст и HTML с цветной полосой.
Оповещения в Telegram переживают шторм — накопленные аварии объединяются в наименьшее число сообщений, которое допускает предел в 4096 символов, а при ответе об ограничении частоты узел выжидает указанное время и повторяет отправку вместо того, чтобы отбросить оповещение.
Задержка оповещения распространена на резервный вход — предупреждение о работе потока на резервном входе поднимается, только если положение продержалось дольше
alert-delay, поэтому источник, который проверяется и снова падает, больше не даёт череду поднятий и снятий; приalert-delayравном нулю поведение прежнее.Монитор TR 101 290 — непрерывный контроль соответствия входного потока стандарту: единый вердикт («Норма», «Проблема», «Проверка…») и структурный отчёт по приоритетам 1, 2 и 3, где для каждого показателя указаны пункт стандарта, измеренное значение и предел. Мультиплекс MPTS оценивается целиком — по всем PID, программам и таблицам SI. Поток автоматически классифицируется как CBR или VBR, и проверки, осмысленные только при постоянном битрейте, на VBR-источнике не оцениваются и не дают ложных срабатываний. Подробно — Монитор TR 101 290.
Дрейф опорного генератора — систематический уход тактовой частоты источника измеряется линейной регрессией в ppm при допуске ISO/IEC 13818-1 ±30 ppm и выводится отдельной метрикой. Медленный уход отрабатывается плавными микросдвигами точки синхронизации («Компенсация дрейфа синхронизации», включена по умолчанию), поэтому на выходе нет рывков.
Модель буфера T-STD — анализ видеобуфера эталонного декодера по ISO/IEC 13818-1 со счётчиками переполнений и опустошений для MPEG-2, H.264 и HEVC; отсчёт ведётся по часам PCR, а скорость слива подстраивается под фактический битрейт видео. Включается настройкой «Анализировать видеобуфер T-STD».
Анализ для вставки рекламы — разбор секций SCTE-35 с событиями склейки, точки склейки транспортного уровня с настраиваемым упреждением и метки случайного доступа. Данные выводятся в статистике потока при включённом глубоком анализе.
Помощник для рекламаций — по потоку с устойчивыми нарушениями формируется готовое текстовое задание для AI-чата, по которому тот составляет формальное письмо-рекламацию поставщику потока: перечень устойчивых нарушений, измеренные значения, пункты стандарта и влияние на декодер. Задание отдаётся запросом
GET /data/stream/<id>/ai-complaint-prompt; название потока и адрес источника в текст не включаются.CI/CAM (EN 50221) — встроенный хост Common Interface: обнаружение модуля, чтение его имени и списка поддерживаемых CA_system_id, выбор программ для дескремблирования и передача CA_PMT по каждой из них. Модуль, совмещённый с DVB-приёмником, дескремблирует выбранные программы принятого мультиплекса инлайн, несколько одновременно; состояние слотов и вердикт по каждой программе видны в интерфейсе.
Программный дескремблер BISS-1 / BISS-E — применяется не только к приёму с DVB-карты, но и к любому входу потока: ключ задаётся на SPTS целиком или по программам мультиплекса и меняется на лету, без перезапуска входа. На приёме с DVB-карты результат дополнительно проверяется по самому потоку, поэтому неверный ключ не выглядит как успешное дескремблирование, а поднимает отдельную аварию.
Очистка условного доступа на приёме DVB — из мультиплекса, принятого DVB-картой, отдельной настройкой адаптера удаляются PID ECM и EMM, а из PMT — CA-дескрипторы открытых программ: дальше по тракту уходит чистый FTA-поток. При потере ключа разметка условного доступа возвращается, чтобы приёмник ниже по цепочке смог заново запросить доступ.
Телеметрия транскодера — по каждому энкодеру публикуется медиаинформация перекодированного выхода: формат кадра, кодек видео, набор аудиокодеков и текущий битрейт, а по каждому процессу — загрузка CPU и занятая память.
RTMP и RTMPS — канал публикуется на любой RTMP-приёмник, включая YouTube и Facebook: видео H.264 или HEVC (HEVC — через Enhanced RTMP) и одна дорожка AAC, для
rtmps://узел подключается как TLS-клиент. В обратную сторону вход сам забирает поток с источникаrtmp://илиrtmps://и ремультиплексирует FLV в MPEG-TS.Бесшовное переключение источника — при смене активного входа на передатчике приёмные пиры PS1 не переподключаются: нумерация и метки времени остаются непрерывными, всплеск очереди гасится отбрасыванием самых старых пакетов, а пропуск добирается штатной ретрансмиссией.
Адаптивная ретрансмиссия PS1 — приёмник измеряет фактический RTT до передатчика и сам подстраивает под него интервалы повторных запросов; измеренный RTT, текущий интервал перезапроса и признак слишком малой задержки выведены в статистику связи. Задержка приёмного тоннеля задаётся напрямую в миллисекундах вместо прежнего множителя от RTT.
Состояния «Переподключение» и «Действие администратора» — потерявший источник вход или выход переоткрывается на месте и остаётся в состоянии «Переподключение» на всё время попыток, поднимая одно предупреждение на эпизод вместо сообщения на каждую попытку. Причину, которую повтором не устранить — занятый порт, отсутствующий интерфейс, данные не MPEG-TS, отказ SRT по шифрованию, — узел переводит в состояние «Действие администратора» с удерживаемым оповещением, а правка настроек применяется сразу.
Дата последней ошибки — рядом с текстом последней ошибки входа или выхода публикуется её время (
last-error-ts, то же поле есть и в потоке событий), поэтому давнюю причину, оставшуюся на приостановленном входе, видно отдельно от текущего сбоя.Диагноз при непригодном содержимом входа — сообщение о нарушении синхронизации MPEG-TS называет вероятную причину: пакеты найдены, но смещены на известное число байт, либо структуры MPEG-TS нет вовсе, и для входов PS1 и Pro-MPEG добавляется подсказка о парольной фразе шифрования.
Фактический размер приёмного буфера — вход публикует
socket-buffer-actual, размер, который выдало ядро, тогда какsocket-buffer-sizeостаётся лишь запросом и урезается системным пределом, поэтому расхождение теперь видно сразу, а не проявляется потерями на высоком битрейте.MPTS-мультиплексор: исходная идентичность — программы могут сохранять свои исходные PID, а порядок программ в PAT, SDT и NIT задаётся вручную, поэтому мультиплекс переносится на Perfect Streamer без смены идентичности потока для приёмного оборудования. Программы с TS-скремблированием переносятся с исходными метками времени.
Автоматическая нумерация PID для SPTS —
enable-autopidвместе сautopid-baseпереносит всю программу в предсказуемое окно из 64 идентификаторов, начиная с PMT и далее видео, аудио и остальные элементарные потоки в порядке исходной таблицы; программа, не поместившаяся в окно, целиком остаётся с исходными PID.Размер датаграммы задаётся на всех выходах — настройка
packetsтеперь применяется не только на SRT, но и на выходах UDP, RTP, Pro-MPEG и RIST, а на выводе в файл и в стандартный поток задаёт размер записываемого блока. Значения по умолчанию совпадают с прежним поведением, поэтому конфигурация, в которой ключ никогда не задавался, не меняется; сохранённое значение, отличное от умолчания, прежние сборки игнорировали, и теперь оно вступает в силу с первым же перезапуском — проверьте его до обновления.Интеграция с внешним биллингом — каждая зрительская сессия авторизуется во внешней биллинг- или CRM-системе, удерживается периодической ре-авторизацией и по завершении сообщается ей же: жизненный цикл Start / Interim / Stop в стиле RADIUS, отзыв подписки сбрасывает сессию посреди просмотра. Охвачены OTT, пиринг PS1 и выходы SRT, а сам биллинг подключается шаблонами запроса и разбора ответа, без доработки ПО.
Встроенный клиент ACME (Let’s Encrypt) — выпуск и автоматическое продление сертификатов для веб-сервера, HTTP/OTT-сервера и EPG-сервера: сертификат заказывается на каждое настроенное имя хоста, продление проверяется ежедневно, при неудаче поднимается авария. Поддерживаются произвольный удостоверяющий центр и внешняя привязка учётной записи, а новый сертификат применяется без перезапуска сервиса.
Быстрая остановка сервиса — остановка больше не ждёт клиента, переставшего читать данные: под той же нагрузкой узел завершается за 2–4 секунды вместо примерно минуты, поэтому перезапуск занимает секунды и не оставляет эфир без вещания.
pss_lic 2.0 — консольная утилита управления лицензией переведена на команды
apply,c2v,fingerprint,recipient,keys,detach,rehostиcancelс длинными ключами: она применяет присланное обновление лицензии, выгружает состояние ключа для поставщика и переносит лицензию с узла на узел, в том числе временно, а любой файл принимает со стандартного ввода и выдаёт в стандартный вывод. Подробно — pss_lic.Правка файла конфигурации вручную — вместе с документацией публикуется схема JSON Schema для
pss.json(строгая и совместимая) и пошаговое руководство по правке и переносу файла: конфигурацию остановленного узла разрешено править напрямую и переносить между установками и версиями, проверив результат по схеме, тогда как прежде единственным поддерживаемым способом был HTTP API. Подробно — Файл настроек pss.json.Новый веб-интерфейс — управление узлом переведено на новую консоль, которая открывается по адресу узла (путь
/admin): обзор, потоки, мониторинг системы, DVB, DVR, транскодеры, клиенты, журнал, аварии и все настройки сервера. Отдельные схемы показывают топологию домена Meshwork и тракт выбранного потока от входов до выходов. Прежний интерфейс сохранён по адресу/classic. Подробно — Веб-интерфейс.Единый вход в домене — учётной записи можно разрешить автовход: после одного входа по паролю браузер 14 дней открывает панель этого узла без формы входа и переживает перезапуск. Переход по ссылке из этой панели передаёт сеанс на соседний узел домена, если выполнены условия перехода (Веб-сервер и учётные записи); набранный вручную адрес соседа сеанса не передаёт. Скрипт или сторонняя панель предъявляют тот же ключ заголовком
X-Auth-Tokenили параметромauth-token, а администратор отзывает автовход сразу во всём домене.CORS для административного API — узлы одного домена Meshwork разрешены без всякой настройки, остальные источники перечисляются в
web-server/cors-origin(значение*разрешает любой источник,noneвыключает механизм), поэтому интерфейс одного узла обращается к API другого; кросс-доменный запрос обязан нести токен явно — cookie и Digest в нём не действуют.Токен своей сессии —
GET /data/auth-tokenвозвращает клиенту его собственный токен и абсолютный срок действия, а в/data/serverдобавлено полеweb-login-expires, поэтому интерфейс показывает, до какого момента действителен вход, не читая сам токен.Завершение сессии автологина —
POST /data/auth-tokens/revoke?login=<login>закрывает все действующие сессии учётной записи, а?id=<hex>— одну по идентификатору из списка сессий; в ответе приходит число закрытых сессий, и отзыв расходится по всему домену.Причина отказа при переходе на соседний узел — если переход не дал автоматического входа, узел возвращает в адресе параметр
jumpсо значениемno-session,foreign-domain,autologin-offилиtoken-refused, вместо того чтобы молча показать форму ввода пароля.Обновление в реальном времени — узел отдаёт своё состояние потоком событий на
/data/events: при подключении приходит полный снимок, дальше раз в секунду обновляются кадры потоков, системных ресурсов, клиентов и DVB-адаптеров, а аварии и смены состояния приходят событиями. Интерфейс и внешние панели работают без периодического опроса.Контекстная справка — каждый экран и каждое важное окно нового интерфейса снабжены вызовом справки, который открывает раздел документации именно по тому, что сейчас открыто: общая кнопка справки — для экрана, кнопка «?» в заголовке окна — для этого окна. Раздел открывается на языке интерфейса.
Языки, темы и раскладки — интерфейс переведён на шесть языков (русский, английский, немецкий, французский, испанский, португальский), поддерживает светлое и тёмное оформление и сам подстраивает плотность раскладки под телефон, планшет, рабочую станцию и видеостену.
Доступ без ограничения по числу подключений — у лимитов подключений получателя появилось третье состояние «Без ограничения» рядом с «Протокол запрещён» и «Не более» с числом; прежде неограниченный доступ изображали заведомо большим числом. Ноль по-прежнему означает запрет протокола, поэтому смысл сохранённых настроек после обновления не меняется. Подробно — Пользователь: добавление и изменение.
Правка доступа к потокам не задевает посторонние сессии — добавление потока в список разрешённых и возврат к пустому списку не разрывают ни одной сессии, а сужение списка закрывает сессии PS1 и SRT только на тех потоках, которые из него ушли. Прежде любая правка списка отключала запись целиком по всем протоколам.
Активация лицензии из веб-интерфейса — на экране «Лицензия» появился раздел «Активация»: выгрузка состояния ключа для поставщика — файлом C2V или в буфер обмена — и применение присланного ключа V2C файлом или вставкой текста. Применение ключа перезапускает узел. Подробно — Лицензия.
Предупреждение об истечении лицензии — узел поднимает аварию за две недели до конца срока и повышает её до требующей вмешательства, когда срок истёк. Авария расходится по домену, поэтому истекающую лицензию соседа видно с любого узла (Оповещения (алертер)).
Неподлинная лицензия останавливает узел — узел, чья лицензия признана неподлинной, поднимает аварию, требующую вмешательства администратора, перезапускает службу, и запуск отклоняется: служба остаётся остановленной, пока на узле не окажется подлинная лицензия. Авария расходится по домену (Оповещения (алертер)).
Откат на последнюю рабочую конфигурацию — узел хранит копию настроек, с которыми в прошлый раз стартовал начисто, и при неприемлемом
pss.jsonподнимается на ней — со всеми своими потоками, а не на настройках по умолчанию, в которых потоков нет. Архив отвергнутых файлов приведён в порядок: имена по UTC, номерной суффикс вместо перезаписи при двух отказах в одну секунду, двадцать последних копий; путь архивной копии авария называет прямо. Подробно — Поведение при старте и ошибках конфигурации.Приоритет входов правится мышью и с клавиатуры — администратору входы потока переставляются перетаскиванием или сочетаниями
Alt+↑иAlt+↓, на вкладке «Входы» редактора и в раскрытой строке списка потоков (на телефоне порядок только показывается); добавленный вход всегда встаёт последним и не подменяет собой основной (Потоки).Номер входа — его место в списке резервирования — один и тот же номер стоит теперь в строке потока, в раскрытой строке, в редакторе и в тексте оповещения. Входы с одинаковым значением приоритета сохраняют порядок записи и при последующих правках настроек (Резервирование источников).
Отказ оставленного входа читается как история — вход, с которого поток ушёл на резерв, останавливается, но причину сохраняет: интерфейс показывает её приглушённой строкой с возрастом, а не как текущий сбой, и оповещение об ошибке этого входа снимается. Причина при этом своя, транспортная, если вход успел сообщить её сам (Резервирование источников).
Сортировка списка клиентов — на экране «Клиенты» заголовок колонки сортирует список: числовые колонки открываются по убыванию, текстовые — от А к Я, третье нажатие возвращает порядок узла. Сортируется весь найденный список, а не показанная страница (Клиенты).
Переход к потоку с экрана транскодеров — в строке декодера и каждого энкодера появилась кнопка, открывающая список потоков на нужном потоке. Доступна в любой роли (Транскодеры).
Программа демультиплексора выбирается из списка и для DVB-адаптера — работающий адаптер публикует свой мультиплекс, и поле «PNR» предлагает его программы с именами, включая внутренние программы T2-MI под составными номерами (Демультиплексор (demuxer)). Адаптер у входа
dvbтоже выбирается по имени, а не вводится номером записи (DVB-адаптер (dvb)).Приём DVB больше не зависит от сборки — тип входа
dvbи раздел DVB-адаптеров доступны на любом узле; единственное условие — обнаруженный фронтенд и драйвер, который даёт службе его открыть (DVB-приёмник).Сканер DVB уступает тюнер настроенному адаптеру — применять найденный мультиплекс можно, не дожидаясь конца прохода: адаптер забирает тюнер и поднимается примерно через секунду, а сканирование заканчивается отменённым, сохраняя свои результаты на экране. Проход останавливается кнопкой «Стоп» и закрытием окна (Сканирование).
Панели обзора узла — по наличию подсистемы — «Транскодеры» и «DVB-адаптеры» на обзоре показываются там, где есть само оборудование или экземпляры либо есть что доложить об отказе. На узле без транскодеров и без тюнера этих панелей нет, и входа в их разделы с обзора тоже (Обзор узла).
Адреса интерфейсов в системном мониторе — карточка «Сеть» и графики истории подписаны адресом IPv4 интерфейса, если узел его сообщает, включая вложенные VLAN (Системный монитор).
Путь хранилища DVR пишется без завершающего разделителя — интерфейс и HTTP API такое значение отклоняют: два написания одного каталога прошли бы проверку уникальности как два разных хранилища (Хранилища DVR).
Пакету нужна служба защиты 10.33 или новее — pstreamer поставляет библиотеки системы защиты нового поколения, и более старый aksusbd их не принимает (Требования к системе). Служба лежит в том же репозитории и ставится вместе с пакетом, но обновление её необратимо, независимо от типа ключа — порядок и последствия описаны на страницах установки (Установка на системы семейства RHEL, Установка на системы семейства Debian).
Явный выбор PLP на DVB-T2 — у поля «Stream id (ISI/PLP)» появилось значение «авто» (-1): фильтр не применяется, тюнер берёт поток по умолчанию драйвера, и новый адаптер создаётся именно таким. Явный ноль стал при этом настоящим выбором нулевого потока, а не «не задано», поэтому адаптер, у которого ноль сохранён в настройках, после обновления узла станет принимать только его (Адаптеры).
Сканер находит PLP — поле «Проверять PLP до» перебирает PLP на транспондерах DVB-T2 и выводит каждый найденный отдельной строкой со своим списком программ; номер переносится в созданный адаптер, а в статистике адаптера появилась строка «PLP / ISI» (Сканирование).
Поиск в справочниках сканера — сотни спутников и региональных диапазонов отсортированы по названию и фильтруются строкой поиска; уже выбранная строка из списка не исчезает, что бы ни было набрано (Сканирование DVB).
Исправление ссылки на PCR в PMT — новая настройка MPEG-TS для источников, у которых таблица не объявляет пригодного PCR: узел объявляет в PMT тот PID, на котором PCR действительно передаётся (Модификация потока).
Восстановление джиттер-буфера после просадки источника — вход, переживший остановку источника, больше не остаётся с почти пустой очередью, передавая на выходы каждую следующую заминку: узел один раз перестраивает буфер, ценой единственного разрыва (Синхронизация).
Режим управления битрейтом видеокодера — у транскодера появился выбор между постоянной скоростью и двумя переменными режимами: заданное число трактуется как средний битрейт (пики доходят до полутора его величин) либо как жёсткий потолок (средняя скорость составляет две трети от него). Число при этом остаётся одно — второй предел кодер выводит сам из фиксированного отношения пика к среднему 1,5. В переменных режимах кодер перестаёт добивать элементарный поток, поэтому экономия полосы получается только там, где поток-приёмник не выравнивает битрейт обратно (Настройки кодера).
Перезапуск транскодера объясняется в журнале — каждый перезапуск дочернего процесса называет свою причину и код выхода уровнем «Уведомление», а не молча в трассировке. Кроме того, узел перестал бесконечно переоткрывать канал, который не отвечает: после двух неудачных попыток он запрашивает новый процесс (Контроль работы).
Удалённый поток виден в открытом редакторе — если поток удалён с узла, пока открыт его редактор или схема обработки, узел сообщает об этом отдельной строкой, а сохранение становится недоступным с той же причиной рядом с кнопкой. Прежде у такого потока просто пустели все списки, что выглядело как поток без настроенных входов и выходов (Настроить поток).
Отказ сохранения называет причину — вместо одной общей фразы на все случаи форма сообщает, что именно помешало: истёкшее время ожидания ответа, запрет по роли или собственный отказ узла его же словами.
Подписи и выбор PID в правилах фильтрации — каждый номер подписан видом и кодеком, а на мультиплексе — ещё и программой, которой он принадлежит; в строке добавления появился список тех PID, которые источник действительно несёт. Ручной ввод при этом остаётся: транспорт может нести PID, о котором ничего не декодировано (Редактор входа и выхода).
На экранах DVB показан адресуемый номер программы — у сервиса внутри несущей T2-MI в списке программ адаптера и в его статистике стоит составной PNR, тот же, которым программа адресуется в выборе у демультиплексора, BISS и CAM. Собственный номер внутри несущей на транспондере с зеркальными группами повторяется у каждой несущей и не указывает ни на что (Статистика адаптера).
Слот BISS всегда предлагается списком — открытые программы попали в него последними, с пометкой
· clear ·, поэтому на мультиплексе без единой закодированной программы список больше не оказывается пустым: ключ нередко задают заранее, а событийный фид между событиями открыт (Дескремблирование).Из статистики потока — к транскодеру и к его источнику — если активный вход потока создан транскодером, его значение стало ссылкой на экран транскодеров с раскрытой строкой нужного экземпляра, а рядом появилась плашка с именем потока, который этот экземпляр декодирует. Обе ссылки доступны в любой роли (Статистика потока).
Границы прогонов в журнале — каждый запуск службы отмечен в ленте отдельной строкой с моментом старта и сборкой, на которой прогон поднялся: у текущего рядом стоит аптайм, у прошедших — сколько прогон проработал и сколько узел простоял до следующего запуска, а завершившийся без штатной остановки помечается особо. Разделитель ставится и при включённом фильтре по важности (Журналы).
Предел объёма базы статистики — базу метрик ограничивает не только окно хранения, но и размер. Узел отчитывается о последней чистке — сколько истории осталось, каков объём базы и сколько заняла чистка — и прямо сообщает, если предел объёма оказался жёстче настроенного окна (Настройки сервера).
Подрезанные при загрузке значения объявляются сразу — если узел, читая настройки, подтянул значение к допустимому пределу, он сообщает об этом на экране сразу после запуска, а не только строкой в журнале (Поведение при старте и ошибках конфигурации).
Лицензия устаревшего поколения не принимается — узел с подлинной лицензией прежнего поколения не запускается и поднимает отдельную аварию. Это не истёкший срок и не подделка: поколение 2 принимается только как временная пробная лицензия, поэтому бессрочная лицензия того поколения отклоняется сразу, а не доживает до даты (Каталог кодов алертов).
Автоматическое заполнение считает цель по содержимому — в автоматическом режиме битрейта узел отталкивается от фактической скорости содержимого, а не от собственного выхода, поэтому цель больше не ползёт вверх без возврата и опускается обратно, как только содержимое снова умещается в настроенную скорость (Управление битрейтом).
Окно компенсации дрейфа соразмерно буферу — мягкое окно ограничено четвертью целевого размера джиттер-буфера, но не меньше 100 мс: вход со стандартным буфером больше не работает без запаса, компенсация подтягивает синхронизацию раньше, а аварийная перестройка буфера при опустошении наконец срабатывает (Синхронизация).
Прочие улучшения и исправления ошибок.