Mixer (mix)

Описание

Обеспечивает подготовку, упаковку и размещение файлов записей разговоров на основе событий системы. Размещение производится в общем хранилище (Локальные пути - recstore), откуда потом записи разносятся по хранилищам доменов функциональной ролью jrnl.

Резервируется и масштабируется в режиме Active-Active.

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

Table 1. Системные характеристики

Код

mix

Режим работы

Сервис

Режим резервирования

Active-Active

Типы сайтов

Любые

Слой

Бизнес-логика

Размещение

Внутренний

Сохранение и восстановление состояния при перезагрузке

Нет

Приложение

rostell_mix

Управляемое приложение

rtx_mixer

Ограничения

  • Образует плотную загрузку процессора в момент проведения микширования. При разделении сервера с другими функциональными ролями следует серьезно ограничивать число потоков, которые могут использоваться функциональной ролью, иначе возникает риск 100% загрузки процессора на сервере.

  • Микширование проводится в процессе имеющем минимальный приоритет.

  • Необходимо обеспечивать такое количество вычислительной мощности для функциональной роли на сайте, чтобы в среднем в течение дня все экземпляры функциональной роли успевали упаковывать все осуществляемые на сайте разговоры.

Параметры

Table 2. Параметры
Имя Тип Умолчание Описание

name

str

required

Имя. Может состоять из латинских букв и цифр, должно начинаться с буквы.

roletype

str

required

Тип функциональной роли. Возможные значения: "mix".

iface

str

required

Алиас сетевого интерфейса сервера, на котором будет происходить внутреннее взаимодействие функциональных ролей между собой.

roleid

int

required

Идентификатор функциональной роли. Уникален для всей системы, независимо от сайта или сервера.
Нельзя изменить после присвоения. Целое число от 1 до 9999

separate

bool

required

Признак выделения функциональной роли в отдельную ноду.

recstorageid

str

required

Алиас каталога на сервере для хранения записей разговоров.
Если каталог не существует, он будет создан.
При работе функциональной роли jrnl записи из общего хранилища переносятся в доменные хранилища. По умолчанию хранилищем записей домена выступает подкаталог общего каталога хранения записей.
В зависимости от того, настроен ли перенос записей в доменные хранилища за пределами кластера (например в S3-хранилище), размещение записей в каталоге может быть кратковременным, либо долговременным с накоплением.
Формат значения: alias://paths/<ALIAS_NAME>.

subscrqlist

array<str>

required

Список ключей очередей, на которые подписан экземпляр функциональной роли.
Ключи задаются в настройках функциональных ролей sq, фактически микшеру нужны очереди для класса событий mixerevents

cachefolder

str

empty

Алиас каталога на сервере для размещения служебных файлов микшера.
Если каталог не существует, он будет создан.
По умолчанию: "/var/lib/rostell/_workdir/<NODE_NAME>"

channels

int

1

Количество каналов в файле после микширования.
Доступно для изменения только у форматов mp3 и pcm.
Возможные значения:

  • 1 – моно,

  • 2 – стерео.

encoding

str

"mp3"

Формат в который будет производиться упаковка файла аудио-записи после микширования.
Возможные значения: "mp3", "pcm", "pcma", "pcmu", "gsm".

maxevents

int

8

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

samplerate

int

8000

Outdated. Частота дискретизации. Функциональная роль применяет константное значение - 8000Hz

bitrate

int

8000

Битрейт.
Возможно изменять только для формата mp3.
Возможные значения для mp3: 8000, 16000, 32000.

Пример конфигурации

Управление конфигурацией производится в приложении, доступном для администраторов мастер-домена. Приложение скрывает полное содержание конфигурации, однако тем не менее оно доступно через API.

Конфигурация содержит раздел для описания всех экземпляров всех функциональных ролей. Параметры определяются для каждого конкретного экземпляра функциональной роли.

Пример узла
{
  "name": "mix1",
  "roletype": "mix",
  "iface": "eth0",

  "recstorageid": "main4",
  "subscrqlist": [
    "q3"
  ],

  "channels": "2",
  "encoding": "mp3",
  "samplerate": "8000"
}

См. также