Table of Contents |
---|
Описание
WCS может выступать в качестве WebRTC-SIP шлюза. При этом аудио- и видеопоток SIP-звонка, произведенного через WCS, может быть захвачен и воспроизведен в браузере, либо ретранслирован на другой сервер.
Типичный сценарий использования
- Между WCS и SIP-устройством (SIP MCU, сервер конференций или SIP-софтфон) установлен видеозвонок
- WCS получает аудио и видео данные с этого SIP-устройства
- Полученный аудио и видео трафик WCS-сервер перенаправляет на RTMP-сервер или другое устройство, способное принять и обработать RTMP-поток
Поддерживаемые протоколы
- RTMP
- SIP
Поддерживаемые кодеки на SIP
- Видеокодеки: H.264, VP8
- Аудиокодеки: G.711, Speex
Поддерживаемые кодеки на RTMP
- Видеокодеки: H.264
- Аудиокодеки: AAC, G.711, Speex
Захват и ретрансляция SIP-звонков управляется при помощи REST API вызовов.
REST-вызовы
Общие правила
- Каждый SIP-звонок при создании может быть ассоциирован только с одним RTMP-потоком. В случае, если инициируется новый SIP-звонок с тем же RTMP URL и именем потока (rtmpUrl+rtmpStream), как у существующего звонка, этот второй звонок будет отклонен сервером с HTTP статусом 409 Conflict. Однако, при ретрансляции звонка в RTMP-поток при помощи REST-запроса /push/startup, количество RTMP-потоков, создаваемых из одного звонка, не ограничивается.
- SIP Call ID звонка должен быть уникальным. Попытка инициировать новый SIP-звонок с уже существующим Call ID будет отклонена WCS-сервером с HTTP-статусом 409 Conflict.
...
- sip-as-rtmp.flashphoner.com - адрес WCS-сервера
- 8081 - стандартный REST / HTTP порт WCS-сервера
- 8444 - стандартный HTTPS порт
- rest-api - обязательная часть URL
- /call/startup - используемый REST-метод
REST-методы и статусы ответа
REST-метод | Пример тела REST-запроса | Пример тела REST-ответа | Статусы ответа | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/call/startup |
| 200 - Звонок принят на обработку 409 - Конфликт с существующим RTMP URL | ||||||||||||||||||||||
/call/find |
or
|
| 200 - звонок найден 404 - звонок с указанными параметрами не найден | |||||||||||||||||||||
/call/find_all |
| 200 - звонки найдены 404 - звонков не найдено | ||||||||||||||||||||||
/call/terminate |
| 200 - звонок прерван 404 - звонок не найден | ||||||||||||||||||||||
/call/send_dtmf |
| 200 - DTMF отправлен 404 - звонок не найден | ||||||||||||||||||||||
/call/inject_stream |
| 200 - аудиопоток добавлен к звонку 404 - звонок не найден |
Параметры
Имя параметра | Описание | Пример |
---|---|---|
callId | SIP Call ID - уникальный идентификатор в виде строки | Xq2tlLcX89tTjaji |
callee | SIP callee - вызываемый абонент | 10001 |
toStream | Имя потока на WCS-сервере, в который транслируется звонок | call_stream1 |
rtmpUrl | RTMP URL - адрес RTMP-сервера | rtmp://rtmp-server.flashphoner.com:1935/live Здесь live - имя RTMP-приложения. В RTMP URL также могут быть указаны instance name и строка запроса, например rtmp://rtmp-server.flashphoner.com:1935/live/_definst_?param1=value1¶m2=value2 |
rtmpStream | Название RTMP-потока на RTMP-сервере | streamName2 |
hasAudio | Если true, SDP будет иметь 'sendrecv' параметр в аудио части. Если false, то 'recvonly'. | true |
hasVideo | Если true, SDP будет иметь 'sendrecv' параметр в видео части. Если false, то 'recvonly'. | true |
status | Статус звонка на WCS-сервере | ESTABLISHED Полный список статусов доступен здесь (см CallStatusEvent). |
sipStatus | Ассоциированный SIP-статус | 200 |
rtmpStreamStatus | Статус RTMP-потока | RTMP_STREAM_ACTIVE RTMP_STREAM_WAIT - RTMP-поток инициализируется RTMP_STREAM_ACTIVE - RTMP-поток проинициализирован и соединение установлено RTMP_CONNECTION_LOST - RTMP-соединение было потеряно RTMP_CONNECTION_FAILED - RTMP-соединение не было установлено |
caller | SIP caller - вызывающий абонент | |
visibleName | Отображаемое имя вызывающего абонента | |
mediaProvider | НЕ ИСПОЛЬЗУЕТСЯ | НЕ ИСПОЛЬЗУЕТСЯ |
SDP параметры recvonly и sendrecv
SDP параметры recvonly и sendrecv
...
Если ваше SIP-устройство - это MCU или сервер SIP-конференций, скорее всего оно корректно отработает режим 'recvonly', и звонок сможет быть установлен на длительное время.
Дополнительная информация по статусам
WCS использует внутреннее приложение 'callApp' для передачи промежуточных статусов.
...
Это нотификации, которые проходят локально на стороне сервера через внутренний REST-интерфейс. См. раздел "Управление приложениями", чтобы получить больше информации о внутренних REST-приложениях. Кроме этого, может быть создано стороннее web-приложение, которое будет получать нотификации с WCS-сервера.
Настройка
Конфигурация запуска
По-умолчанию, WCS-сервер запускается в dev-режиме.
Чтобы запустить сервер с профилем 'production', раскомментируйте следующую строку в файле /usr/local/FlashphonerWebCallServer/conf/wcs-manager.properties:
-Dspring.profiles.active=production
В production-режиме включается поддержка HTTPS для REST.
Приложение CallApp
http://localhost:9091/CallApp - это внутренний адрес, доступный по умолчанию, который будет получать все промежуточные статусы звонка, сделанного через REST: RING, TRYING и др.
Кроме этого, передаются промежуточные статусы RTMP-потока, ассоциированного с этим звонком:
...
Этот адрес может быть изменен через WCS CLI. См. описание интерфейса командной строки, чтобы получить больше информации об управлении приложениями WCS.
Настройка HTTPS
Включение HTTPS
REST работает через HTTP на порту 8081 (по умолчанию) и по HTTPS на порту 8444.
...
После этого WCS self-signed сертификат будет импортирован в ваш браузер и HTTPS URL может быть использован для REST-звонков, например https://sip-as-rtmp.flashphoner.com:8888/rest-apil/call
Аутентификация
Когда включен режим 'production', каждый REST/HTTPS или REST/HTTP запрос требует HTTP Basic Authentication.
Стандартные имя пользователя и пароль - это admin:admin.
Пароль можно поменять в WCS CLI. (Получить больше информации о Command Line Interface можно в Руководстве Администратора.)
...
В результате будет установлен Authorization-заголовок
Известные проблемы
1. При ретрансляции SIP as RTMP на серверы Wowza и получении потока с Wowza по HLS зритель наблюдает фризы, кратковременную рассинхронизацию.
...