2.6. Конфигурационный файл

Примечание

Конфигурация соответствует версии зонда 2.1.1 (2022.05.17 07:38:25 UTC)

Общая информация

Конфигурационный файл

Конфигурационный файл - это файл monitor.cfg, получаемый в пакете зонда из личного кабинета, лежащий в директории с исполняемым файлом streamMonitor. Файл предназначен для хранения настроек зонда, включая список задач. При управлении зондом, назначении задач для анализа и других действиях на сервере данный файл модифицируется приложением зонда. При запуске, перезапуске и незапланированном перезапуске зонд использует monitor.cfg для восстановления состояния.

Следует знать, что в файл monitor.cfg не попадают настройки проекта. Например, в файл не сохраняются настройки триггеров всех оповещений, настройки системных оповещений (пороги и триггеры), настройки доступа. Настройки пороговых значений отображаются в monitor.cfg, однако при запуске зонда будут использованы настройки, хранящиеся на сервере.

  • Один из вариантов постановки задач зонду - редактирование файла monitor.cfg

  • Один из вариантов переноса настроек и бэкапа - сохранение и копирование файла monitor.cfg.

Важно

При управлении зондом из браузера все настройки и изменения отражаются в файле monitor.cfg. При этом происходит полное переформатирование текста файла к формату по умолчанию для используемой версии ПО зонда. Поэтому, если вы намерены назначать задачи зонду путем редактирования файла monitor.cfg, всегда сохраняйте резервную копию файла.

Редактирование

Перед редактированием конфигурации необходимо ознакомиться с информацией ниже:

  1. Файл конфигурации monitor.cfg, находящийся в архиве зонда, уже включает минимальный набор параметров, необходимый для успешного запуска приложения зонда.

  2. При работе с файлом конфигурации очень внимательно отнеситесь к JSON синтаксису (частая причина ошибок).

  3. Файл конфигурации monitor.cfg необходимо сохранять в формате utf-8.

  4. Перед управлением из браузера сохраняйте копию monitor.cfg при отладке.

  5. Задачи зонду можно поставить простым списком в monitor.cfg. Все необходимые настройки добавляются групповым редактированием задач в браузере.

Конфигурация сохраняется в формате, схожем с форматом JSON. Дополнительно:

  • Поддерживаются C-подобные комментарии:
    • Текст, начинающийся с /* и оканчивающийся на */, образует блок комментариев;

    • Текст, начинающийся с // и до конца строки, является комментарием.

  • Поддерживается дополнительная запятая после последнего значения в массиве или в объекте.

Структура файла

Общая конфигурация

Содержит описание ограниченного числа настроек, которые распространяются на все задачи, а также настройки зонда.

Конфигурация из скачанного архива

Конфигурация из скачанного архива содержит настройки зонда, необходимые для успешного соединения зонда с сервером, и не содержит информации ни об одной задаче мониторинга:

Конфигурация из скачанного архива
 {
   "config":{
     "AppDescription":"My probe name", // probe description
     "server":"https://api.boro.elecard.com",
     //"proxy":"http://192.168.1.2:3128", // proxy to connect with Boro server
   }
 }

Общая конфигурация

Ниже приведен пример конфигурации, в которой пользователь указал все возможные общие настройки и, после успешного запуска зонда, добавил две задачи мониторинга из web:

Общая конфигурация
 {
   "config":{
     "allowDownloadPcapDump": false,
     "AppDescription":"My Probe address and description",
     "server":"https://api.boro.elecard.com",
     "proxy":"http://10.192.173.239:3128",
     "defaultBindAddress":"10.10.30.152",
     "epsnrCalc":false,
     "captureThumbnails":false,
     "checkFreeze":true,
     "videoFreezePeriod":5,
     "EITMessages":false,
     "ottAllRenditions":false,
     "checkMasterPlaylist":false,
     "uri":[
       {
         //Конфигурация задачи #1
       },
       {
         //Конфигурация задачи #2
       }
     ]
   }
 }
  • allowDownloadPcapDump - логический тип, включает/выключает возможность скачивания записи в формате Pcap. В целях информационной безопасности по умолчанию отключено;

  • AppDescription - строка, текстовое описание/название зонда;

  • server - строка, адрес сервера сбора данных. При скачивании архива зондов данное поле заполняется автоматически, не рекомендуется его изменять;

  • proxy - строка, указывает proxy сервер для коммуникации зонда с сервером. Proxy сервер для получения анализируемых данных настраивается в конфигурации задачи индивидуально;

  • defaultBindAddress - строка, определяет NIC IP адрес по умолчанию. Зонд будет получать данные через указанный интерфейс, если в конфигурации задачи не указано иное значение;

  • epsnrCalc - логический тип, включает/выключает вычисление EPSNR 1. Применяется ко всем анализируемым потокам, если в конфигурации задачи не задано иное значение. По умолчанию выключен;

  • captureThumbnails - логический тип, включает/выключает захват эскизов. Применяется ко всем анализируемым потокам, если в конфигурации задачи не задано иное значение. По умолчанию выключен;

  • checkFreeze - логический тип, включает/выключает определение замирания картинки. Применяется ко всем анализируемым потокам, если в конфигурации задачи не задано иное значение. По умолчанию выключен;

  • videoFreezePeriod - целое число, задает промежуток времени в секундах, если в течение этого интервала сцена не изменяется, зонд определяет состояние «Ошибка замирания картинки». Применяется ко всем анализируемым потокам, если в конфигурации задачи не задано иное значение. По умолчанию равен 0с;

  • EITMessages - логический тип, включает/выключает отправку на сервер EIT события. По умолчанию выключен. Не поддерживается сервером;

  • ottAllRenditions - логический тип, режим анализа OTT сервиса. Применяется ко всему списку анализируемых потоков, если в конфигурации задачи не задано иное значение:
    true - режим анализа всех альтернатив медиа-данных всех вариантов потока. Зонд анализирует все ссылки на альтернативы медиа-данных, заявленные в Мастер-плейлисте (даже если альтернатива не имеет связи ни с одним из вариантов потока). Создаются одна мастер-задача и дочерние задачи для анализа каждой альтернативы. При изменении конфигурации у мастер-задачи зонд применяет одинаковые настройки ко всем подзадачам. В файле monitor.cfg содержатся настройки только мастер-задачи;
    false (по умолчанию) - режим «плеера». Зонд использует обычный алгоритм поведения, присущий OTT медиаплеерам, т. е. анализирует вариант потока с наибольшим битрейтом, который позволяет закачивать сеть в текущий момент времени. Если анализируемый вариант потока состоит из различных типов медиа-данных (AUDIO, VIDEO и SUBTITLES), будет производиться анализ каждого типа. Т. е. создаётся одна мастер-задача и несколько дочерних задач. Если вариант потока подразумевает альтернативы медиа-данных, то производится анализ альтернативы по умолчанию (DEFAULT=YES). Если в группе ни одна альтернатива медиа-данных не помечена как альтернатива по умолчанию, для анализа будет взят URL произвольной альтернативы из данной группы.
  • checkMasterPlaylist - логический тип, включает/выключает обновление Мастер-плейлиста. Применяется ко всем анализируемым потокам, если в конфигурации задачи не задано иное значение. По умолчанию выключен. Если разрешено, плейлист обновляется в соответствии с периодом, заданным в masterPlaylistUpdatePeriod;

  • uri - массив объектов, передающих конфигурацию каждой задачи.

Внимание

Конфигурация задач через указание общих настроек является устаревшим методом.
Предпочтительно осуществлять конфигурацию задач из web после запуска зонда. В таком случае настройки будут сохранены в виде индивидуальных конфигураций задач.

Конфигурация задачи

Содержит описание всех настроек конкретной задачи. Обязательным полем является addr, остальные поля будут добавлены сервером после запуска зонда. Настройки задачи имеют приоритет над аналогичными общими настройками.

Пример конфигурации задачи
 {
   "taskId":199498,
   "addr":"udp://235.0.0.5:1234",
   "name":"1st Channel",
   "protocol":"udp",
   "iface":{
     "iface_name":"{EE5A8772-AEDC-4387-A643-AC1827642969}",
     "iface_description":"Intel(R) 82574L Gigabit #4",
     "iface_friendly_name":"Ethernet 4",
     "iface_index":6,
     "iface_v6_index":6,
     "ip":"10.10.30.203",
     "ipv6":"fe80::3dc8:a7ae:1e79:e4fd%6",
     "speed":1000
   },
   "closeCaptions":false,
   "proxy":"172.16.1.2:3128",
   "igmpSourceFilter":[
     "10.10.30.5"
   ],
   "ottGreedyVOD":false,
   "Source_only":false,
   "DSM-CC":{
     "enable":true,
     "additional_tag":[
       5
     ]
   },
   "freeze":{
     "enable":true,
     "threshold":5,
     "forceCheck":60
   },
   "ottAllRenditions":false,
   "checkMasterPlaylist":false,
   "thumbnail":{
     "enable":true,
     "default_period":10,
     "freeze_period":"startEnd",
     "scte35_period":1,
     "storeThumbLocal":false,
     "keepAspectRatio":false,
     "jpeg_quality":70,
     "resolutions":[
       {
         "width":264,
         "height":148
       },
       {
         "width":468,
         "height":264
       }
     ]
   },
   "ott":{
     "download_period":0,
     "noBodyMethod":"head"
   },
   "record_triggers":{
     "VideoFreeze":{
       "enable":false
     },
     "Scte35":{
       "enable":false
     }
   },
   "audio":{
     "enableAnalysis":true,
     "checkDecodability":true
   },
   "avrgBitrateInterval":10,
   "video":{
     "epsnr":false,
     "DecodabilityMode":"off"
   },
   "usePcr":"auto",
   "srt":{
       "mode":"caller",
       "username":"user",
       "password":"pass",
       "keyLength":"AES-128"
   },
   "thresholdsProfile":{       //The *thresholds* profile
     "eth":{
       "enabled":true,
       "IAT_error":50,
       "IAT_warning":45,
       "MLR_error":8,
       "MLR_warning":1,
       "bitrate_max":15000,
       "bitrate_min":100
     },
     "etr290":{
       "enabled":true,
       "maxPmtInterval":500,
       "maxPatInterval":500,
       "maxPidVAInterval":5000,
       "maxPidInterval":5000,
       "maxPTSInterval":1000,
       "excludeType":[
         "0x86",
         "0x5",
         8191
       ],
       "excludeCCType":[
         "0x86",
         8191
       ],
       "excludeTimestampType":[
         "0x86"
       ]
     },
     "etr290p2":{
       "enabled":true,
       "maxPTSRepetitionPeriod":700,
       "pcrRepetitionTime":40
     },
     "etr290p3":{
       "enabled":true,
       "deliverySystem":"Auto",
       "defIntervals":{
         "defMinInterval":25,
         "defBatInterval":10000,
         "defTotTdtInterval":30000,
         "defNitInterval":{
           "actual":10000,
           "other":10000
         },
         "defSdtInterval":{
           "actual":2000,
           "other":10000
         },
         "defEitInterval":{
           "actual":2000,
           "other":10000
         },
         "defEitSheduleInterval":{
           "actual":10000,
           "other":30000
         }
       }
     },
     "freeze":{
       "interval":5,
       "psnrThreshold":42
     },
     "audio":{
       "silence_threshold":-70,
       "DecodabilityThreshold":50
     },
     "video":{
       "DecodabilityThreshold":50
     },
     "ott":{
       "enabled":false,
       "download_speed_error":100,
       "download_speed_warning":80,
       "actual_bitrate_min":50,
       "actual_bitrate_max":200,
       "identical_playlist_cnt":3,
       "manifest_size":500000,
       "min_profiles":1,
       "check_hls_segments":0,
       "masterPlaylistUpdatePeriod":30,
       "hlsAnalyzeFrom":"default",
       "dashAnalyzeFrom":"default",
       "ottDownloadKey":"auto"
     },
     "OttOnEndOfStream":"restart",
     "http_url_params":[
       {
         "key":"key1",
         "value":"val2",
         "force":false,
         "type":"url"
       }
     ],
     "ottCustomTagDetection":{
       "case_sensitive":true,
       "filter":[
         {
           "tag":"DATERANGE",
           "includes":[
             "DURATION"
           ],
           "excludes":[
             "SCTE35-IN"
           ]
         }
       ]
     },
     "bufferCheck":{
       "enable":true,
       "bufferUpperBound":2000,
       "bufferLowerBound":0
     },
     "digitalProgramInsertion":{
       "scte35TagInOttSubs":true,
       "adInsertionMode":"auto",
       "resetStateOnBadSource":"5"
     }
   }
 }
  • taskId - целое число, идентификатор задачи;

  • addr - строка (массив строк), путь (пути) к анализируемым потокам. Поддерживаются следующие префиксы: file://, udp://, rtp://, http://, https://. Поддерживается формат HLS (URL должен оканчиваться на .m3u или .m3u8);

  • name - строка, имя потока (например, название канала);

  • protocol - строка, задает протокол потока (сервиса) принудительно, имеет больший приоритет чем протокол указанный в URI задачи. Поддерживаются следующие варианты: file, udp, rtp, http, https, hls;

  • iface - объект, состоит из:
    • iface_name - строка, имя сетевого интерфейса;

    • iface_description - строка, описание сетевого интерфейса, используется в Windows;

    • iface_friendly_name - строка, дружественное имя сетевого интерфейса, используется в Windows;

    • iface_index - целое число, индекс сетевого интерфейса для IPv4 протокола, используется в Windows;

    • iface_v6_index - целое число, индекс сетевого интерфейса для IPv6 протокола, используется в Windows;

    • ip - строка, IPv4 адрес сетевого интерфейса;

    • ipv6 - строка, IPv6 адрес сетевого интерфейса;

    • speed - целое число, скорость сетевого интерфейса в Mbps.

  • closeCaptions - логический тип, поле зарезервировано для дальнейшего использования;

  • proxy - строка, proxy сервер для получения данных при анализе HLS сервиса;

  • igmpSourceFilter - массив строк, содержит IPv4-адреса индивидуальных источников вещания (только для IGMPv3);

  • ottGreedyVOD - логический тип, задает режим анализа VoD HLS:
    true - анализировать как VoD. Агрессивный режим скачивания, контент анализируется на максимально возможной скорости;
    false (по умолчанию) - анализировать как live, т. е. со скоростью проигрывания сегментов.
  • Source_only - логический тип, режим «анализировать только доставку» потока:
    true - производится анализ, связанный только с доставкой. Для OTT: анализируются сегменты, ключи и плейлисты, без аналитики тела сегментов. Для IPTV: измеряются только Ethernet параметры;
    false (по умолчанию) - стандартный режим анализа разрешенных параметров.
  • DSM-CC - объект, описывает настройки для парсинга DSM-CC данных 2:
    • enable - логический тип, включает/выключает парсинг DSM-CC данных. По умолчанию выключен;

    • additional_tag - массив целых чисел, список типов элементарных потоков, которые необходимо рассматривать как потоки, содержащие DSM-CC данные. По умолчанию пуст.

  • freeze - объект, содержащий настройки для вычисления замирания видео картинки:
    • enable - логический тип, включает/выключает определение замирания картинки. По умолчанию выключен. Имеет приоритет над глобальной настройкой checkFreeze;

    • threshold - целое число, задает соотношение между I и P кадрами, если I кадр больше P кадра в указанное количество раз, зонд сравнит два соседних I кадра для определения замирания видео потока. По умолчанию в 5 раз;

    • forceCheck - целое число, задает интервал в секундах, через который зонд принудительно сравнит два соседних I кадра на предмет замирания видео потока. Т. е. в данном режиме результат первичной проверки игнорируется и производится принудительная проверка второго уровня. По умолчанию равен 60 сек.

  • ottAllRenditions - логический тип, режим анализа OTT сервиса. Имеет приоритет над глобальной настройкой ottAllRenditions:
    true - режим анализа всех альтернатив медиа-данных всех вариантов потока. Зонд анализирует все ссылки на альтернативы медиа-данных, заявленные в Мастер-плейлисте (даже если альтернатива не имеет связи ни с одним из вариантов потока). Создаются одна мастер-задача и дочерние задачи для анализа каждой альтернативы. При изменении конфигурации у мастер-задачи зонд применяет одинаковые настройки ко всем подзадачам. В файле monitor.cfg содержатся настройки только мастер-задачи;
    false (по умолчанию) - режим «плеера». Зонд использует обычный алгоритм поведения, присущий OTT медиаплеерам, т. е. анализирует вариант потока с наибольшим битрейтом, который позволяет закачивать сеть в текущий момент времени. Если анализируемый вариант потока состоит из различных типов медиа-данных, будет производиться анализ каждого типа (AUDIO, VIDEO и SUBTITLES). Т. е. создаётся одна мастер-задача и несколько дочерних задач. Если вариант потока подразумевает альтернативы медиа-данных, то производится анализ альтернативы по умолчанию (DEFAULT=YES). Если в группе ни одна альтернатива медиа-данных не помечена как альтернатива по умолчанию, для анализа будет взят URL произвольной альтернативы из данной группы.
  • checkMasterPlaylist - логический тип, включает/выключает обновление Мастер-плейлиста. Имеет приоритет над глобальной настройкой checkMasterPlaylist. По умолчанию выключен. Если разрешено, плейлист обновляется в соответствии с периодом, заданным в masterPlaylistUpdatePeriod;

  • thumbnail - объект, содержит настройки для захвата эскизов в различные периоды. Соблюдается следующая приоритетность действия периодов (в порядке убывания приоритета): scte35_period, freeze_period, default_period.
    • enable - логический тип, включает/выключает захват эскизов. По умолчанию выключен. Имеет приоритет над глобальной настройкой captureThumbnails;

    • default_period - целое число или строка. Целое число задает интервал между захватами эскизов в секундах, установка нуля запрещает захват эскизов в период вещания программ. По умолчанию равен 10 сек. Строка задает режим работы:
      off - запрещает захват эскизов;
      allIFrame - эскизы будут захватываться с каждого опорного кадра.
    • freeze_period - целое число или строка. Целое число задает интервал между захватами эскизов в секундах, установка нуля запрещает захват эскизов в период замирания видео потока. По умолчанию равен 10 сек. Строка задает режим работы:
      off - запрещает захват эскизов;
      startEnd - сделать эскиз в начале и в конце события (только для video freeze);
      allIFrame - эскизы будут захватываться с каждого опорного кадра.
    • scte35_period - целое число или строка. Целое число задает интервал между захватами эскизов в секундах, установка нуля запрещает захват эскизов в период действия рекламы (SCTE35 события). По умолчанию равен 1 сек. Строка задает режим работы:
      off - запрещает захват эскизов;
      allIFrame - эскизы будут захватываться с каждого опорного кадра.
    • storeThumbLocal - логический тип, true - зонд будет отправлять на сервер события «Thumbnail» без эскизов, а сами эскизы будут сохраняться в папку thumb рядом с исполняемым файлом 2. Значение по умолчанию - false;

    • keepAspectRatio - логический тип, true - эскизы будут создаваться с сохранением оригинального aspect ratio 2. Значение по умолчанию - false;

    • jpeg_quality - целое число, задает качество сжатия jpeg в интервале значений 0 - 100. По умолчанию равен 70.

    • resolutions - массив объектов, описывающих разрешения эскизов 2:
      • width - целое число, задает ширину эскиза в пикселях, по умолчанию равно 160;

      • height (опциональное поле) - целое число, задает высоту эскиза в пикселях. Если не задано или равно 0, высота будет вычислена автоматически с сохранением оригинального aspect ratio. По умолчанию равно 0.

  • ott - объект, содержит настройки анализа OTT:
    • download_period - целое число, время в секундах, задает интервал для последовательного анализа сегментов:
      0 (режим по умолчанию) - зонд будет скачивать все сегменты последовательно и полностью;
      -1 - для всех сегментов будет скачиваться только http заголовок;
      <интервал> - время в секундах, зонд полностью скачивает сегмент через указанный интервал времени, для остальных сегментов скачиваются только http заголовки.
      Уменьшение частоты скачивания или полный запрет скачивания сегментов существенно снижает нагрузку на сеть. Однако в таких режимах зонд не может измерять некоторые QoS и все QoE параметры, а также не может корректно осуществлять Запись сервиса.
    • noBodyMethod - строка, задает метод скачивания http заголовков когда download_period не равен нулю:
      head (режим по умолчанию) - для http(s) будет выполнен HEAD запрос;
      range - для http(s) будет выполнен GET запрос с указанием диапазона скачивания файла равным 1 байту.
  • record_triggers - объект, задает триггеры, по которым будет осуществляться автоматическая запись:
    • VideoFreeze - запись по замиранию картинки. В запись включается Пребуферизация, Длительность записи после начала события и отдельно момент Окончания состояния, если замирание длилось продолжительное время;
      • enable - логический тип, включает/выключает запись по замиранию картинки.

    • SCTE35 - запись вставки рекламы (SCTE35 событие). В запись включается Пребуферизация, Длительность записи после начала события и отдельно момент Окончания состояния, если рекламная вставка длилась продолжительное время.
      • enable - логический тип, включает/выключает запись вставки рекламы.

  • audio - объект, содержит настройки QoE анализа 3 звукового сопровождения:
    • enableAnalysis - логический тип (по умолчанию false), разрешает проведение следующих измерений:
      1) Вычисление громкости звуковой программы и пиковых уровней аудиосигналов согласно EBU R 128-2011;
      2) Определение тишины (Audio silence).
    • checkDecodability - логический тип, включает/выключает анализ возможности декодирования аудио (подсчет битрейта на выходе из декодера и его отношение к заявленному битрейту). По умолчанию выключен.

  • avrgBitrateInterval - целое число, время в секундах, интервал времени, использующийся зондом для расчета среднего битрейта (применяется для вычисления Delay Factor). По умолчанию равен 10. Служебное поле. Не рекомендуется изменять значение установленное по умолчанию;

  • video - объект, содержит настройки QoE анализа для видео:
    • epsnr - логический тип, включает/выключает вычисление EPSNR 1 для задачи. По умолчанию выключен. Имеет приоритет над глобальной настройкой epsnrCalc;

    • DecodabilityMode - строка, включает/выключает анализ возможности декодирования видео. Сравнивается количество корректно декодированных кадров с заявленной частотой кадров. Режимы оценки:
      off - метрика выключена;
      lite - производится семантический анализ элементарного потока без последующего декодирования; точность измерения - средняя, потребление ресурсов - среднее. Данный режим является достаточным для оценки возможности декодирования потока, но не учитывает возможные проблемы внутри кадра;
      full - производится полное декодирование; точность измерения - высокая, потребление ресурсов - высокое. В данном режиме корректность кадра подтверждается его полным декодированием.
  • usePcr - строка, указывает какой счетчик времени использовать для расчета битрейтов потоков, анализа ETR290 и пр.
    auto (режим по умолчанию) - автоматический выбор (PTS/DTS для OTT и PCR для всех остальных типов потоков);
    off - использовать PTS/DTS;
    on - использовать PCR.
  • srt - объект, содержит настройки анализа SRT протокола:
    • mode - строка, режим соединения по протоколу SRT:
      caller (режим по умолчанию) - в этом режиме зонд самостоятельно инициирует соединение к источнику SRT потока;
      listener - в этом режиме зонд находится в состоянии ожидания входящего соединения;
      rendezvous - в этом режиме оба узла (зонд и источник SRT потока) инициируют связь. Такой режим используется, когда оба узла находятся за брандмауэрами и позволяет осуществлять связь без настройки брандмауэра.
    • username (опциональное поле) - строка, имя пользователя;

    • password (опциональное поле) - строка, пароль;

    • keyLength (опциональное поле) - строка, длина криптографического ключа:
      AES-128 - 16 байт;
      AES-192 - 24 байта;
      AES-256 - 32 байта.

Группа настроек, относящихся к профилю Thresholds

  • thresholdsProfile - объект, группа настроек, относящихся к профилю Пороговые значения (Thresholds).

  • eth - объект описывает настройки, связанные с Ethernet параметрами:
    • enabled - логический тип, включает/выключает вычисление Ethernet параметров (таких как IAT, DF, MLR). По умолчанию выключен;

    • IAT_error - целое число, время в миллисекундах, пороговое значение IAT, при превышении которого зонд выставит состояние «Ошибка maxIAT». По умолчанию равен 50 мс;

    • IAT_warning - целое число, время в миллисекундах, пороговое значение IAT, при превышении которого зонд выставит состояние «Предупреждение maxIAT». По умолчанию равен 45 мс;

    • MLR_error - целое число, пороговое значение потерянных транспортных пакетов за секунду, при превышении которого зонд выставит состояние «Ошибка MLR». По умолчанию равен 8 шт.;

    • MLR_warning - целое число, пороговое значение потерянных транспортных пакетов за секунду, при превышении которого зонд выставит состояние «Предупреждение MLR». По умолчанию равен 1 шт.;

    • bitrate_max - целое число, верхний порог скорости потока 4 в Кбит/с, при превышении которого зонд выставит состояние «Скорость потока выше порога». По умолчанию равен 15000 Кбит/с;

    • bitrate_min - целое число, нижний порог скорости потока 4 в Кбит/с, при преодолении которого зонд выставит состояние «Скорость потока ниже порога». По умолчанию равен 100 Кбит/с.

  • etr290 - объект, содержащий настройки для вычисления ETR 290 ошибок (первый приоритет):
    • enabled - логический тип, включает/выключает вычисление ETR 290 ошибок первого приоритета;

    • maxPmtInterval - целое число, время в миллисекундах. Состояние «Ошибка PMT» возникает, когда секция с table_id 0x02 (т. н. PMT таблица) появляется в потоке реже, чем установленный интервал. PMT таблица имеет PID, назначенный в таблице PAT. Значение интервала по умолчанию 500 мс. Установка нулевого значения отключает обнаружение ошибки;

    • maxPatInterval - целое число, время в миллисекундах. Состояние «Ошибка PAT» возникает, когда PID 0x0000 (PAT таблица) появляется в потоке реже, чем установленный интервал. Значение интервала по умолчанию 500 мс;

    • maxPidVAInterval - целое число, время в миллисекундах. Состояние «Ошибка Аудио/Видео PID» возникает, когда данные для заявленных Аудио/Видео PID не появляются в течение установленного интервала. Означает частичную потерю сервиса или ошибки в PAT/PMT таблицах. Значение интервала по умолчанию 5000 мс. Установка нуля отключает обнаружение ошибки;

    • maxPidInterval - целое число, время в миллисекундах. Состояние «Ошибка PID» возникает, когда данные для заявленных PID не появляются в течение установленного интервала. Означает частичную потерю сервиса или ошибки в PAT/PMT таблицах. Значение интервала по умолчанию 5000 мс. Установка нуля отключает обнаружение ошибки;

    • maxPTSInterval - целое число, время в миллисекундах. Состояние ошибки «Разрыв меток синхронизации» возникает при обнаружении неравномерности временных меток (для MPEG-TS это PTS/DTS метки) потока. Отслеживается наличие резких скачков и обратного прироста времени (обычно связано с потерями пакетов и/или в результате склейки потока). Данный параметр задает максимально допустимую разницу значений времени меток синхронизации. Отрицательный прирост генерирует ошибку вне зависимости от величины порога. Значение интервала по умолчанию 1000 мс. Установка нуля отключает обнаружение ошибки;

    • excludeType - массив, состоящий из строк (значения медиа типа элементарного потока в hex или dec формате) и/или целых чисел (pid элементарного потока в dec формате), которые необходимо исключить из проверки на Ошибку PID и Ошибку Аудио/Видео PID;

    • excludeCCType - массив, состоящий из строк (значения медиа типа элементарного потока в hex или dec формате) и/или целых чисел (pid элементарного потока в dec формате), которые необходимо исключить из проверки на CC Ошибку;

    • excludeTimestampType - массив, состоящий из строк (значения медиа типа элементарного потока в hex или dec формате) и/или целых чисел (pid элементарного потока в dec формате), которые необходимо исключить из проверки на Ошибку разрывов меток синхронизации.

  • etr290p2 - объект, содержащий настройки для вычисления ETR 290 ошибок (второй приоритет):
    • enabled - логический тип, включает/выключает вычисление ETR 290 ошибок второго приоритета;

    • maxPTSRepetitionPeriod - целое число, время в миллисекундах. Состояние возникает, когда временной интервал между пакетами с PTS метками превышает установленный интервал. Значение интервала по умолчанию 700 мс;

    • pcrRepetitionTime - целое число, время в миллисекундах. Состояние «Ошибка повторения PCR» возникает, когда временной интервал между пакетами с PCR метками превышает установленный интервал. Значение интервала по умолчанию 40 мс;

  • etr290p3 - объект, содержащий настройки для вычисления ETR 290 ошибок (третий приоритет):
    • enabled - логический тип, включает/выключает вычисление ETR 290 ошибок третьего приоритета;

    • deliverySystem - строка, тип системы доставки, согласно которой будут определяться временные интервалы между таблицами (см. ETSI TR 101 211, п. 4.4):
      Auto (режим по умолчанию) - автоматически определить систему доставки. Если не удалось определить систему доставки, будут использованы временные интервалы, заданные пользователем;
      Manual - использовать временные интервалы заданные пользователем;
      Satellite - использовать временные интервалы заданные в стандарте для типа доставки Satellite;
      Cable - использовать временные интервалы заданные в стандарте для типа доставки Cable;
      Terrestrial - использовать временные интервалы заданные в стандарте для типа доставки Terrestrial.
    • defIntervals - объект, содержащий настройки для проверки интервала между таблицами:
      • defMinInterval - целое число, время в миллисекундах. Минимальный интервал времени между поступлением последнего байта секции и первым байтом следующей переданной секции с тем же PID, table_id и table_id_extension и с тем же или другим номером section_number. Значение интервала по умолчанию 25 мс.

      • defBatInterval - целое число, время в миллисекундах. Все секции BAT таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

      • defTotTdtInterval - целое число, время в миллисекундах. Все секции TOT и TDT таблиц должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 3x104 мс.

      • defNitInterval - объект, содержащий настройки для проверки времени повторения NIT таблицы:
        • actual - целое число, время в миллисекундах. Все секции NIT Actual таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

        • other - целое число, время в миллисекундах. Все секции NIT Other таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

      • defSdtInterval - объект, содержащий настройки для проверки времени повторения SDT таблицы:
        • actual - целое число, время в миллисекундах. Все секции SDT Actual таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 2x103 мс.

        • other - целое число, время в миллисекундах. Все секции SDT Other таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

      • defEitInterval - объект, содержащий настройки для проверки времени повторения EIT Present/Following таблицы:
        • actual - целое число, время в миллисекундах. Все секции EIT Present/Following Actual таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 2x103 мс.

        • other - целое число, время в миллисекундах. Все секции EIT Present/Following Other таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

      • defEitSheduleInterval - объект, содержащий настройки для проверки времени повторения EIT Schedule таблицы:
        • actual - целое число, время в миллисекундах. Все секции EIT Schedule Actual таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 1x104 мс.

        • other - целое число, время в миллисекундах. Все секции EIT Schedule Other таблицы должны передаваться в течении указанного интервала времени. Значение интервала по умолчанию 3x104 мс.

  • freeze - объект, содержащий настройки для вычисления замирания видео картинки:
    • interval - целое число, задает промежуток времени в секундах, если в течение этого интервала сцена не изменяется, зонд определяет состояние «Ошибка замирания картинки». По умолчанию равен 0с. Имеет приоритет над глобальной настройкой videoFreezePeriod;

    • psnrThreshold - целое число, чувствительность детектора замирания видео картинки, задается пороговым значением степени схожести кадров по метрике PSNR (пиковое отношение сигнала к шуму) в децибелах. Чем выше пороговое значение, тем более строгое условие схожести соседних кадров. По умолчанию равен 42,0 dB 5.

  • audio - объект, содержит настройки QoE анализа звукового сопровождения:
    • silence_threshold - целое число, порог кратковременной громкости звука в LUFS, при достижении которого (и ниже) определяется тишина. Значение по умолчанию -70.0 LUFS;

    • DecodabilityThreshold - целое число, порог отношения битрейта декодированного аудио потока к заявленному битрейту (channels * sample_rate * sample_size(bit)), в процентах. Используется для оценки возможности декодирования аудио. Значение по умолчанию 50%.

  • video - объект, содержит настройки QoE анализа для видео:
    • DecodabilityThreshold - целое число, порог отношения количества корректно декодированных кадров к заявленной частоте кадров, в процентах. Используется для оценки возможности декодирования видео. Значение по умолчанию 50%.

  • ott - объект, содержит настройки анализа OTT:
    • enabled - логический тип, включает/выключает анализ OTT;

    • download_speed_error - целое число, измеряется в %. Пороговое значение минимально допустимой скорости скачивания, при превышении которого возникает ошибка «Недопустимо низкая скорость скачивания». Данный параметр выражается в процентном соотношении и рассчитывается по формуле: Время загрузки / Длительность сегмента >= Порог ошибки (%). Например, превышение порога 100% означает, что время загрузки сегмента превышает его длительность. По умолчанию равен 100%;

    • download_speed_warning - целое число, измеряется в %. Пороговое значение минимально допустимой скорости скачивания, при превышении которого возникает предупреждение «Низкая скорость скачивания». Данный параметр выражается в процентном соотношении и рассчитывается по формуле: Время загрузки / Длительность сегмента >= Порог предупреждения (%). Порог предупреждения не может быть выше порога ошибки. По умолчанию равен 80%;

    • actual_bitrate_min - целое число, пороговое значение минимально допустимого среднего битрейта, при превышении которого возникает ошибка «Низкий фактический битрейт». Данный параметр задает нижнюю границу относительно битрейта, заявленного в Мастер-плейлисте, в процентах. Условие генерации ошибки: Размер скачанного сегмента / Заявленная длительность <= Заявленного битрейта варианта потока (%). По умолчанию равен 50%;

    • actual_bitrate_max - целое число, пороговое значение максимально допустимого среднего битрейта, при превышении которого возникает ошибка «Высокий фактический битрейт». Данный параметр задает верхнюю границу относительно битрейта, заявленного в Мастер-плейлисте, в процентах. Условие генерации ошибки: Размер скачанного сегмента / Заявленная длительность >= Заявленного битрейта варианта потока (%). По умолчанию равен 200%;

    • identical_playlist_cnt - целое число, количество попыток скачивания Медиа-плейлиста. Между попытками выдерживается пауза, равная длительности последнего скачанного сегмента. Если Медиа-плейлист не обновился в течение нескольких скачиваний подряд, генерируется ошибка «Неизменяющийся плейлист». По умолчанию 3 попытки;

    • manifest_size - целое число, пороговое значение максимально допустимого размера плейлиста в байтах, при превышении которого возникает ошибка «Размер плейлиста». По умолчанию равен 5x105 байт;

    • min_profiles - целое число, пороговое значение минимально допустимого количества профилей, заявленных в Мастер-плейлисте, при превышении которого возникает ошибка «Недостаточное количество профилей». По умолчанию равен 1;

    • check_hls_segments - целое число, включает/выключает анализ количества сегментов в Медиа-плейлисте:
      0 (по умолчанию) - проверка с автоматическим порогом. Порог вычисляется как среднестатистическое количество сегментов в плейлисте за 10 минут деленное пополам. Производится округление к ближайшему целому (не меньше 1);
      -1 - проверка выключена;
      <значение> - количество сегментов, проверка относительно заданного порога.
      Если количество сегментов меньше допустимого значения, зонд выставит состояние «Минимальное кол-во сегментов»;
    • masterPlaylistUpdatePeriod - целое число, период обновления Мастер-плейлиста в секундах. Чтобы плейлист обновлялся, настройка checkMasterPlaylist должна быть включена. По умолчанию равен 30 с.

    • hlsAnalyzeFrom - строка, задает начало (смещение) анализа в Медиа-плейлисте. Только для протокола HLS:
      default (по умолчанию) - анализ начинается с третьего снизу сегмента плейлиста;
      <значение>s - смещение в секундах относительно сегмента, который появился в плейлисте самым последним. Если смещение больше длительности плейлиста, анализ начинается с верхнего сегмента в плейлисте;
      <значение>% - смещение в процентах относительно сегмента, который появился в плейлисте самым последним. Где 0% - анализировать с самого свежего сегмента, а 100% - анализировать весь плейлист.
    • dashAnalyzeFrom - строка, задает начало (смещение) анализа в манифесте. Только для протокола DASH:
      default (по умолчанию) - анализ начинается с сегмента, который был заявлен в манифесте последним, если в манифесте не задан параметр @timeShiftBufferDepth. Если параметр @timeShiftBufferDepth задан, то смещение будет эквивалентно глубине буфера минус длительность одного сегмента;
      <значение>s - смещение в секундах относительно сегмента, который был заявлен в манифесте последним. Если смещение больше длительности плейлиста, анализ начинается с первого сегмента в манифесте;
      static - анализ всех сегментов, заявленных в манифесте. Используйте данную настройку для анализа <b>VoD</b> сервисов (@type=»static»).
    • ottDownloadKey - строка, управление загрузкой ключей шифрования:
      auto (по умолчанию) - скачивать ключ шифрования только при изменении ссылки. В данном режиме зонд использует скачанный ключ до тех пор пока не будет обновлена ссылка на скачивание ключа в плейлисте. Если зонду не удается скачать ключ, он переходит в асинхронный режим проверки доступности ключа. Каждые 30с зонд будет осуществлять фоновые попытки скачивания, которые не препятствуют последовательной загрузке сегментов;
      onEachSegment - скачивать ключ шифрования перед каждым скачиванием сегмента. Данный режим позволяет чаще проверять доступность ключа, но создает повышенную нагрузку на сервер раздачи ключей. Необходимо знать, что при выборе данного режима существует вероятность потери сегментов, если при запросе ключа отсутствует HTTP-ответ. Запрос завершается по тайм-ауту в 15с и в этот период сегменты не скачиваются, в то время как плейлист может быть обновлен несколько раз;
      disable - запретить скачивание ключей шифрования.
  • OttOnEndOfStream - поведение зонда при обнаружении состояния EndOfStream (плейлист не обновляется И все заявленные сегменты уже скачаны и проанализированы):
    restart - перезапустить задачу анализа (зацикливание анализа);
    stop - остановить задачу;
    continue - продолжить задачу (ожидать появление новых сегментов).
  • http_url_params - массив объектов, содержащий параметры HTTP-запроса в формате ключ:значение, которые отправляются зондом в каждом HTTP-запросе. Параметры могут быть переданы как в URL, так и в виде заголовков:
    • key - строка, название параметра (ключ);

    • value - строка, значение параметра;

    • force - логический тип, задает возможность принудительного переназначения указанных параметров, если они уже присутствуют в запросе. Если настройка force отключена, для параметров с совпадающим названием переназначение применяться не будет. Если указанные параметры отсутствуют в запросе, они будут добавлены вне зависимости от состояния force;

    • type - строка, задает каким образом передавать параметры:
      url (по умолчанию) - параметры добавляются в URL запроса (Query String Parameters);
      headers - параметры передаются в HTTP-заголовках запроса.
  • ottCustomTagDetection - объект, настройки фильтра поиска пользовательских тегов в HLS Мастер и Медиа-плейлистах. Зонд определяет любой тег, который имеет стандартную форму записи #<TagName>:<Content>
    • case_sensitive - логический тип, включает чувствительность к регистру при поиске. Распространяется на все элементы фильтра, включая контент. По умолчанию выключен;

    • filter - массив объектов, содержащий группы фильтров обнаружения тегов. В одной группе поле tag и несколько полей includes/excludes объединяются логикой И. Группы фильтров объединяются логикой ИЛИ;

    • tag - строка, имя или часть имени тега. Разделяющий символ «:» не должен использоваться;

    • includes - массив строк, содержимое или часть содержимого контента (информация идущая после #<TagName>:), которая должна присутствовать в искомом теге. Если хотя бы одна из строк массива отсутствует в содержимом тега, он не будет зарегистрирован (логика И);

    • excludes - массив строк, содержимое или часть содержимого контента (информация идущая после #<TagName>:), которая НЕ должна присутствовать в искомом теге.

  • bufferCheck - объект, содержит настройки для определения проблем связанных с рассинхронизацией между временными метками(PTS, DTS, PCR):
    • enable - логический тип, включает/выключает вычисление проблем связанных с рассинхронизацией между временными метками. По умолчанию включен;

    • bufferUpperBound - целое число, пороговое значение максимально допустимого расхождения между временными метками (ошибка переполнения буфера). По умолчанию равен 2000 ms;

    • bufferLowerBound - целое число, пороговое значение минимально допустимого расхождения между временными метками. По умолчанию равен 0 ms;

  • digitalProgramInsertion - объект, содержит настройки контроля меток вставки рекламы:
    • adInsertionMode - строка, режим отслеживания вставки рекламы (влияет на работу триггера Вставка рекламного блока SCTE-35 отсутствует):
      auto (по умолчанию) - зонд принимает решение об отслеживании вставки рекламы в определенной программе или плейлисте автоматически. Для транспортного потока зонд выбирает программы, в которых присутствует PID, несущий метки SCTE-35. Для OTT зонд сканирует плейлисты на наличие каких-либо меток вставки и при их обнаружении, такое медиапредставление попадает в список ожидания на вставку;
      allProgram - зонд ожидает появления меток вставки в каждой заявленной программе транспортного потока или в плейлистах каждого представления медиаданных.
    • scte35TagInOttSubs - логический тип, включает/выключает проверку плейлистов субтитров на наличие меток SCTE-35 (влияет на работу триггера Метки SCTE-35 не найдены в плейлисте). По умолчанию проверка включена (установлено значение true);

    • resetStateOnBadSource - целое число, длительность защитного интервала. Если в течение установленного интервала отсутствует сигнал (Ошибка источника), счетчик времени в триггерах будет сброшен. Настройка распространяется на триггеры: Вставка рекламного блока SCTE-35 отсутствует и Метки SCTE-35 не найдены в плейлисте. После восстановления сигнала зонд заново определит для каких программ необходимо ожидать вставку, и счетчики соответствующих триггеров начнут счет заново. Установка нуля отключает защитный интервал, счетчик будет сброшен сразу после потери сигнала. По умолчанию равен 5с.

1(1,2)

EPSNR (Estimated Peak Signal to Noise Ratio) – метрика, представляющая статистическую оценку степени искажения цифровых видеоданных при их кодировании. Измеряется в децибелах и определяется отношением пикового квадратичного значения видеосигнала к среднеквадратическому отклонению декодированного изображения от исходного. Величина EPSNR оценивается на основании данных, содержащихся в закодированном видеопотоке, и не требует наличия исходных (незакодированных) видеоизображений. Вычисление EPSNR требует значительных аппаратных ресурсов.

2(1,2,3,4)

Данная настройка предназначена для определенных программных продуктов на основе Boro зонда, для получения подробностей свяжитесь с технической поддержкой.

3

Следующие пункты не требуют включения enableAnalysis или checkDecodability для: 1) отображения заголовков аудио потоков (окно Характеристики аудиопотока); 2) проверки наличия по крайней мере одного аудиопотока в программе (Audio track missing).

4(1,2)

Скорость потока - это количество данных, приходящих от источника вещания за 1 секунду.

5

PSNR 20 - кадры похожи, но присутствует существенная разница. PSNR 35 - кадры сильно похожи, но есть визуальные различия. PSNR 42 - верхняя граница восприятия ошибки человеческим зрением. PSNR 60-100 кадры практически идентичны.

Примеры запуска задач

Для запуска задач из конфигурационного файла достаточно указывать обязательное поле addr, остальные настройки можно указать в web после запуска зонда.

Важно

После запуска зонда происходит полное переформатирование текста файла к формату по умолчанию для используемой версии ПО зонда. Поэтому, если вы намерены назначать задачи зонду путем редактирования файла monitor.cfg, всегда сохраняйте резервную копию файла.

Можно передать задачи простым списком URI:

Простой список задач
 {
   "config":{
     "AppDescription":"My probe name",
     "server":"https://172.16.11.111",
     "uri":[
       "udp://239.0.0.22:1234",
       "udp://239.0.0.41:1234",
       "udp://239.0.0.71:1234",
       "udp://239.0.0.73:1234",
       "udp://239.0.0.181:1234"
     ]
   }
 }

Если необходимо указать несколько параметров задачи, например URI, Имя и Сетевой интерфейс, то они передаются как поля объекта задачи:

Задачи с параметрами
 {
   "config":{
     "AppDescription":"My probe",
     "server":"https://boro.elecard.ru",
     "uri":[
       {
         "addr":"udp://239.0.0.22:1234",
         "name":"Channel_1",
         "iface":"10.10.30.197"
       },
       {
         "addr":"udp://239.0.0.41:1234",
         "name":"Channel_2",
         "iface":"10.10.30.197"
       },
       {
         "addr":"udp://239.0.0.71:1234",
         "name":"Channel_3"
       },
       {
         "addr":"udp://239.0.0.73:1234",
         "name":"Channel_4"
       },
       {
         "addr":"udp://239.0.0.181:1234",
         "name":"Channel_5"
       }
     ]
   }
 }

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

Задачи с параметрами «в строку»
 {
   "config": {
     "AppDescription": "My probe",
     "server": "https://boro.elecard.ru",
     "uri": [
       {"addr": "udp://239.0.0.22:1234","name": "Channel_1","iface":"10.10.30.197"},
       {"addr": "udp://239.0.0.41:1234","name": "Channel_2","iface":"10.10.30.197"},
       {"addr": "udp://239.0.0.71:1234","name": "Channel_3"},
       {"addr": "udp://239.0.0.73:1234","name": "Channel_4"},
       {"addr": "udp://239.0.0.181:1234","name": "Channel_5"}
     ]
   }
 }