Для настройки медиасервера выполните следующие шаги:

1. Установка медиасервера
Установка программного медиасервера производится из репозитория ECSS-10, пакет ecss-media-server.
Перед установкой рекомендуется удалить старые версии медиасервера вместе с конфигурацией, если они были установлены ранее:
Например:
sudo apt purge ecss-media-server |
Для установки в консоли ОС Linux необходимо выполнить команду:
sudo apt update
sudo apt install ecss-media-server |
В ходе установки необходимо будет ответить на ряд вопросов для формирования конфигурационного файла. Можно вводить ответы по умолчанию, тогда нужно будет вручную править файл /etc/ecss/ecss-media-server/config.xml. Описание параметров приведено на странице Настройка конфигурационного файла MSR.
Также возможно заранее перед установкой подготовить обычный текстовый файл ответов.
ecss-media-server ecss-media-server/accounts/core1/MsrName string msr_2
ecss-media-server ecss-media-server/mcc/bind-addr/configure? boolean true
ecss-media-server ecss-media-server/transport/port string 5040
ecss-media-server ecss-media-server/accounts/core2/MsrName string msr_2
ecss-media-server ecss-media-server/transport boolean true
ecss-media-server ecss-media-server/accounts/core1/configure? boolean true
ecss-media-server ecss-media-server/accounts/core2/RealmAddr/port string 5000
ecss-media-server ecss-media-server/media/video-src/configure? boolean false
ecss-media-server ecss-media-server/codec/g729 select 0
ecss-media-server ecss-media-server/codec/h264 select 1
ecss-media-server ecss-media-server/codec/speex select 0
ecss-media-server ecss-media-server/codec/select multiselect pcma, pcmu, g722, h264, h263-1998, t38
ecss-media-server ecss-media-server/accounts/core2/configure? boolean true
ecss-media-server ecss-media-server/accounts/core2/add? boolean true
ecss-media-server ecss-media-server/mcc/bind-addr string 192.168.2.22
ecss-media-server ecss-media-server/accounts/core1/RealmAddr/port string 5000
ecss-media-server ecss-media-server/transport/port/configure? boolean false
ecss-media-server ecss-media-server/media/video-src string /usr/share/ecss-media-server/video/dummy_video.yuv
ecss-media-server ecss-media-server/accounts/core2/RealmAddr/addr string 192.168.2.22
ecss-media-server ecss-media-server/codec/gsm select 0
ecss-media-server ecss-media-server/mcc/configure? boolean true
ecss-media-server ecss-media-server/codec/g722 select 3
ecss-media-server ecss-media-server/mcc/port/configure? boolean false
ecss-media-server ecss-media-server/accounts/core1/RealmAddr/addr string 192.168.2.21
ecss-media-server ecss-media-server/transport/bind-addr string 192.168.2.22
ecss-media-server ecss-media-server/accounts/core2/RealmAddr/configure? boolean true
ecss-media-server ecss-media-server/transport/bind-addr/configure? boolean true
ecss-media-server ecss-media-server/accounts/core1/RealmAddr/configure? boolean true
ecss-media-server ecss-media-server/accounts/core2/RealmAddr/port/configure? boolean false
ecss-media-server ecss-media-server/codec/configure? boolean false
ecss-media-server ecss-media-server/accounts/core2/MsrName/configure? boolean true
ecss-media-server ecss-media-server/media-server/configure? boolean true
ecss-media-server ecss-media-server/codec/l16 select 0
ecss-media-server ecss-media-server/codec/pcmu select 2
ecss-media-server ecss-media-server/accounts/core1/MsrName/configure? boolean true
ecss-media-server ecss-media-server/codec/t38 select 1
ecss-media-server ecss-media-server/accounts/core1/RealmAddr/port/configure? boolean false
ecss-media-server ecss-media-server/accounts/core2/RealmAddr/addr/configure? boolean true
ecss-media-server ecss-media-server/accounts/configure? boolean true
ecss-media-server ecss-media-server/mcc/port string 5700
ecss-media-server ecss-media-server/codec/ilbc select 0
ecss-media-server ecss-media-server/accounts/core1/RealmAddr/addr/configure? boolean true
ecss-media-server ecss-media-server/codec/h263-1998 select 2
ecss-media-server ecss-media-server/media/configure? boolean true
ecss-media-server ecss-media-server/codec/pcma select 1
|
|
Далее внести изменения в debconf командой:
sudo debconf-set-selections <имя файла ответов> |
И после этого уже ставить пакет. Вопросов задаваться не будет
2. Настройка конфигурационного файла MSR
Конфигурационный XML-файл после установки медиасервера находится по пути /etc/ecss/ecss-media-server/config.xml.
<?xml version="1.0" encoding="utf-8"?>
<config date="09:20:39 13.10.2019">
<general log-level="3" log-rotate="yes" max-calls="8192" max-in-group="512" load-sensor="media" load-delta="10" spool-dir-size="100M" log-name="msr.log" log-path="/var/log/ecss/media-server" use-srtp="disabled" suspicious-mode="no"/>
<transport bind-addr="127.0.0.1" port="5040" transport="udp+tcp"/>
<media mixer-clock-rate="48000" use-vad="no" cng-level="0" jb-size="60" rtcp-timeout="0" rtp-timeout="350" udp-src-check="no" cn-multiplier="3" port-start="12000" port-range="1024" tias-in-sdp="no" thread-cnt="2" silence-threshold="-30" dtmf-flash-disable="no" video-dscp="0" other-dscp="0" dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720"/>
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" g7221="0" opus="0" h264="1" h263-1998="2" t38="1" tel-event-pt="0"/>
<accounts>
<dynamic msr_name="MSR.name" realm="sip:127.0.0.1:5000" dtmf_mode="rfc+inband+info" auth_name="user" auth_password="password"/>
</accounts>
<pbyte>
<mcc bind-addr="127.0.0.1" port="5700"/>
</pbyte>
<conf_dir path="/etc/ecss/ecss-media-server/conf.d"/>
</config |
где - general - общие настройки медиасервера:
- transport - настройки транспорта:
- bind-addr - IP-адрес, который будет использовать медиасервер для SIP-сигнализации (по умолчанию: "127.0.0.1"). Данный параметр необходимо настроить в соответствии с сетевыми настройками хоста;
- port - номер порта для SIP (по умолчанию: "5040"). Если на хосте, где установлен медиасервер, порт 5040 уже занят, то значение данного параметра необходимо изменить;
- transport - тип транспорта (по умолчанию: "udp+tcp"), принимает значения: "udp", "tcp", "udp+tcp". Данный параметр не требует изменений.
- media - параметры медиа:
mixer-clock-rate - частота используемая внутренним микшером медиасервера (по умолчанию: "48000"). Данный параметр настраивается в соответствии с аппаратными возможностями сети. (К примеру, для поддержки работы G.722 в режиме HD, параметр устанавливается в соответствии с частотой дискретизации данного кодека "16000"). Диапазон значений-8000-48000. Если будет задано значение > 48000, то будет устновлено в 48000. (в syslog будет предупреждение об этом). - При установке ECSS-10 версии 3.14, данный параметр имеет дефолтное значение 48000. Это сделано для поддержки HD кодеков, а также уверенного распознавания речи в таких сервисах как ivr, транскрибирование, ASR.
- Выставление mixer-clock-rate = 48000 приводит к увеличению нагрузки на CPU, увеличение сетевого трафика и объема записанных файлов разговоров.
- При штатном обновлении этот параметр сам собой не изменится.
|
- use-vad - включить Voice Activity Detection (по умолчанию: "no"). Данный параметр не требует изменений;
- cng-level - 0 - выкл, любое другое значение будет подставляться в поле level пакета. По умолчанию указывается "0" в целях сохранения обратной совместимости.
- jb-size - максимальная задержка в мс, которая будет вноситься для поддержания непрерывного потока media;
- rtcp-timeout - если в течение этого периода времени не приходит RTCP медиасерверу, то можно считать, что клиент неактивен (по умолчанию: "0" - не используется). При использовании функции контроля, контроль включается только после приема от встречной стороны одного RTCP пакета;
- rtp-timeout - тайм-аут RTP-трафика, аналогично предыдущему параметру (по умолчанию: "0" - не используется);
- cn-multiplier - множитель к
rtp-timeout, если последний полученный RTP-пакет был с comfort noise (по умолчанию: "2"); - port-start - начало диапазона портов, которые будут использоваться для RTP-потоков (по умолчанию: "12000");
- port-range - размер диапазона (по умолчанию: "1024");
- tias-in-sdp - включение/отключение передачи атрибута b=TIAS/AS в offer SDP (по умолчанию: "no");
- thread-cnt - количество рабочих потоков для обработки медиаданных (по умолчанию: "2");
- silence-threshold - пороговый уровень тишины для Voicemail в дБ (по умолчанию: "-30" дБ);
- dummy-video-src - путь к файлу видеозаставки (формат YUV420), которая отображается при отсутствии видеопотока (по умолчанию: "/usr/share/ecss-media-server/video/dummy_video.yuv");
- video-enc-width и video-enc-height - все кадры поступающие на енкодер с шириной или высотой больше данных будут конвертированы в данный размер. По умолчанию устанавливаются в 1280х720.
- video-dscp - значение DCSP для видео(по умолчанию - 0);
- other-dscp - значение DCSP для остальных типов медии(по умолчанию - 0);
- codec - приоритеты кодеков (1 - максимальный, 255 - минимальный, 0 - кодек отключен). Поддерживаемые кодеки:
- pcma
- pcmu
- ilbc
- gsm
- g722
- g722.1
- g729
- speex
- l16
- h264
- h263-1998
- t38
- tel-event-pt
- accounts - все аккаунты для регистрации медиасервера. Может содержать до 32-х элементов acc;
- dynamic - отдельный аккаунт с параметрами:
- msr_name - имя MSR, отображаемое на ECSS;
- realm - сервер регистрации в формате sip:domain. Указывается адрес SIP-сервера для регистрации медиасервера;
- dtmf_mode - режим детектирования DTMF ("rfc", "inband", "info"). Данный параметр необходимо настроить в соответствии с настройками отправки DTMF на абонентском устройстве.
- auth_name - имя пользователя, используемое для авторизации;
- auth_password - пароль для авторизации.
- rtp - режим подмены ip в sdp.
- pbyte - настройка соединений pbyte;
- mcc - настройка управляющего соединения media control channel;
- bind-addr - IP-адрес, на котором будет ожидаться подключение;
- port - порт для входящих подключений, (по умолчанию: 5700).
- conf_dir path - путь до папки в которой будут содеражться конфигурации MSR. Данные конфигурации будут переопределять дефолтную конфигурацию config.xml
|
- Не используйте плавающие (keepalive) адреса для медиасервера.
- Не используйте 0.0.0.0 в качестве listen-ip
- Если вы настроили свой MSR через дефолтный конфиг config.xml, то при последуюущем обновлении или настройке с помощью dpkg-reconfigure он будет полностью перезатерт и сброшен в дефолт. Поэтому свой MSR лучше настраивать в отдельном файле, например в /etc/ecss/ecss-media-server/conf.d/01-ecss-conf.xml
|
Переопределять настройки конфигурационных файлов можно в каталогах:
- /etc/ecss/ecss-media-server/conf.d для файла config.xml
- /etc/ecss/ecss-media-server/conf-without-video.d - для файла config-without-video.xml
- В общем случае - /etc/ecss/ecss-media-server/conf-<имя_запускаемого_экземпляра_msr>.d - для файла config-<имя_запускаемого_экземпляра_msr>..xml
Подробнее о запуске нескольких экземпляров - ниже, в разделе "Запуск медиасервера"
Для этого создаются конфигурационные файлы, которые читаются в алфавитном порядке, например:
<!-- 01-ecss-conf.xml -->
<?xml version="1.0" encoding="utf-8"?>
<config>
<general log-level="666" />
<accounts>
<dynamic msr_name="some name" realm="sip:x.x.x.x:zzzz"
dtmf_mode="rfc+inband+info" auth_name="user1" auth_password="password123"/>
</accounts>
</config>
<!-- 02-ecss-conf.xml -->
<?xml version="1.0" encoding="utf-8"?>
<config>
<rtp>
<auto name="1.1.1.1"/>
</rtp>
</config> |
В результате должен переопределиться уровень логгирования и добавится аккаунт, а также включена опция подмены ip в sdp.
3. Запуск медиасервера

Запуск медиасервера в виде сервиса (по умолчанию)
Для работы сервис использует конфигурацию из файла
/etc/ecss/ecss-media-server/config.xml |
Подробнее о настройках - в разделе "Настройка конфигурационного файла MSR".
При изменении конфигурации необходимо обязательно перезапустить сервис ecss-media-server
Запуск сервиса:
sudo systemctl start ecss-media-server.service |
Остановка сервиса:
sudo systemctl stop ecss-media-server.service |
Перезапуск сервиса:
sudo systemctl restart ecss-media-server.service |
Запуск медиасервера вручную в виде приложения
Описание опций команды ecss-media-server [options]
[options] - опция команды ecss-media-server, принимает значения:
- --help - вывод помощи;
- --dbg - вывод логов на экран;
- --version - вывод информации о версии;
- --daemon - запуск процесса в фоновом режиме, все пути должны быть абсолютными;
- --noiput - не пытаться читать какие-либо входные данные;
- --config=file - настройка пути к конфигурационному XML-файлу;
- --analyze=script - синтаксический и семантический анализ IVR-скрипта.
Пример:
ecss-media-server --config=/home/ssw/config.xml |
Запуск более одного медиасервера на одном хосте через systemd сервис
В состав deb пакета ecss-media-server был добавлен сервис 'ecss-media-server@', который позволяет запускать мн-во экземпляров медиасервера.
Так же, для медиасервера был добавлен предсконфигурированный файл конфигурации(с выключенной поддержкой видео) с именем config-without-video.xml.
После установки deb пакета располагается по пути: /etc/ecss/ecss-media-server. Хотя данный файл предсконфигурирован, но для каждого конкретного случая его нужно донастраивать/перенастраивать:
- секция transport
- параметры bind-addr и port
- секция accounts -> секция dynamic
- параметры msr_name и realm
- секция pbyte -> секция mcc
- параметры bind-addr и port.
| Отдельно нужно обратить внимание на секцию media, параметры port-start и port-range не должны пересекаться с параметрами уже запущенных msr-ов, иначе в ходе работы на одном из msr-ов могут возникнуть ошибки, в виду того, что данные порты уже будут заняты. Так же стоит обратить внимание на секцию mcc, параметр port так же не должен пересекается с параметрами уже запущенных msr-ов по той же причине. |
Конфигурационные файлы
Для каждого нового экземпляра медиасервера, который будет развернут на хосте, требуется использовать свой файл конфигурации медиасервера.
<?xml version="1.0" encoding="utf-8"?>
<config date="12:02:54 15.03.2018">
<general log-level="0" log-rotate="yes" max-calls="4000" max-in-group="128" load-sensor="media" load-delta="10"
log-path="/var/log/ecss/media-server/without-video" />
<transport bind-addr="192.168.1.1" port="5045" transport="udp+tcp" />
<ivr fetchtimeout_ms="600" />
<media use-vad="yes" cng-level="70" video-dscp="2" other-dscp="2"
rtcp-timeout="0" rtp-timeout="0" cn-multiplier="3" port-start="40100" port-range="10000"
tias-in-sdp="no" thread-cnt="4" silence-threshold="-30" dtmf-flash-disable="no"
dummy-video-src="/usr/share/ecss-media-server/video/dummy_video.yuv" video-enc-width="1280" video-enc-height="720" />
<codec pcma="1" pcmu="2" ilbc="0" gsm="0" g722="3" g729="0" speex="0" l16="0" h264="0" h263-1998="0" t38="1" tel-event-pt="1"/>
<accounts>
<dynamic msr_name="msr-without-video.ecss1" realm="sip:192.168.1.1:5000" dtmf_mode="rfc+inband+info" auth_name="msr_second_to_ecss1" auth_password="L0@%Y5" />
<dynamic msr_name="msr-without-video.ecss2" realm="sip:192.168.1.2:5000" dtmf_mode="rfc+inband+info" auth_name="msr_second_to_ecss2" auth_password="2mV5x3" />
</accounts>
<pbyte>
<mcc bind-addr="192.168.1.1" port="5702" />
</pbyte>
</config> |
|
| Отдельно нужно обратить внимание на секцию media, параметры port-start и port-range не должны пересекаться с параметрами уже запущенных msr-ов, иначе в ходе работы на одном из msr-ов могут возникнуть ошибки, в виду того, что данные порты уже будут заняты. Так же стоит обратить внимание на секцию mcc, параметр port так же не должен пересекается с параметрами уже запущенных msr-ов по той же причине. Параметр log-path должен быть уникальным для каждого MSR. Если путь указанный в log-path еще не существует, оператор SSW должен прописать его вручную (пользователь для директории с логами должен быть ssw:ssw). |
Включение и запуск множества экземпляров сервиса ecss-media-server@
В systemd есть возможность запускать множество экземпляров сервиса, но предварительно данные экземпляры нужно включить.
Включение:
sudo systemctl enable ecss-media-server@<имя_запускаемого_экземпляра>
Запуск:
sudo systemctl start ecss-media-server@<имя_запускаемого_экземпляра>
В данном случае, этому медиасерверу будет соответствовать файл конфигурации с именем config-<имя_запускамого_экземпляра>.xml располагаемый по пути: /etc/ecss/ecss-media-server/
Например, включенному и запущенному экземпляру msr-а с именем without-video:
sudo systemctl enable ecss-media-server@without-video
Created symlink /etc/systemd/system/multi-user.target.wants/ecss-media-server@without-video.service → /lib/systemd/system/ecss-media-server@.service.
sudo systemctl start ecss-media-server@without-video |
будет соответствовать файл конфигурации с именем config-without-video.xml расположенный по пути: /etc/ecss/ecss-media-server/
Для каждого экземпляра медиасервера должен быть сконфигурирован свой файл конфигурации медиасервера.
Убедиться, что экземпляр ecss-media-server@without-video запустился можно следующей командой:
ecss1@ssw 05:04:58 ~$ sudo systemctl status ecss-media-server@without-video
● ecss-media-server@without-video.service - daemon ecss-media-server-without/video of ecss-10
Loaded: loaded (/etc/systemd/system/ecss-media-server@.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2018-12-07 08:07:58 +07; 4s ago
Main PID: 12144 (ecss-media-serv)
Tasks: 19 (limit: 4915)
CGroup: /ecss.slice/ecss-media-server@without-video.service
└─12144 /usr/bin/ecss-media-server --config=/etc/ecss/ecss-media-server/config-without-video.xml --noinput
дек 07 08:07:58 ssw systemd[1]: Started daemon ecss-media-server-without/video of ecss-10.
дек 07 08:07:59 ssw ecss-media-server[8867]: WARNING: no real random source present! |
4. Настройка ECSS-10 для работы с медиасервером
Проверка контрольной коннекции
Настройка таймеров контрольной коннекции
Настройка параметров Registrar-сервера
Добавление медиаресурсов