Table of Contents |
---|
Overview
WCS can work as a WebRTC-SIP gateway. In this case, audio and video stream of a SIP call made through WCS can be captured and played in a browser or republished to another server.
Typical use case
- A video call is established between WCS and a SIP device (SIP MCU, conference server or a SIP softphone)
- WCS receives audio and video data from this SIP device
- The WCS server redirects the received audio and video traffic to an RTMP server or another device capable of receiving and processing an RTMP stream
Supported protocols
- RTMP
- SIP
Supported SIP codecs
- Video: H.264, VP8
- Audio: G.711, Speex
Supported RTMP codecs
- Video: H.264
- Audio: AAC, G.711, Speex
Capturing and republishing of SIP calls is managed using REST API queries.
REST-queries
General rules
- Each SIP call can be associated with just one RTMP stream. If a new SIP call is initiated with the same RTMP URL and stream name (rtmpUrl+rtmpStream) as the existing call, that second call is declined by the server with the HTTP status of 409 Conflict. However, publishing of a call to an RTMP stream using the /push/startup REST query does not limit the number of RTMP streams created for one call.
- SIP Call ID of a call must be unique. An attempt to initiate a new SIP call with an already existing Call ID is declined by the WCS server with the HTTP status of 409 Conflict.
...
Where:
- test.flashphoner.com - is the address of the WCS server
- 8081 - is the standard REST / HTTP port of the WCS server
- 8444 - is the standard HTTPS port
- rest-api - is the required part of the URL
- /call/startup - the REST method used
REST-methods and response statuses
REST-method | Example of REST-query | Example of REST-response body | Response status | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
/call/startup |
| {} | 200 - The call is accepted for processing 409 - Conflict with an existing RTMP URL | ||||||||||||||
/call/find |
|
| 200 - call is found | ||||||||||||||
/call/find_all | {} |
| 200 - calls are found | ||||||||||||||
/call/terminate |
| 200 - call is terminated | |||||||||||||||
/call/send_dtmf |
| 200 - DTMF is sent | |||||||||||||||
/call/inject_stream |
| 200 - audio stream is added to the call |
Parameters
Parameter name | Description | Example |
---|---|---|
callId | SIP Call ID - a unique identifier string | Xq2tlLcX89tTjaji |
callee | SIP callee | 10001 |
toStream | Name of the stream on the WCS server the call is published to | call_stream1 |
rtmpUrl | RTMP URL - address of the RTMP server | rtmp://rtmp-server.flashphoner.com:1935/live Here live - is the name of the RTMP application. |
rtmpStream | Name of the RTMP stream on the RTMP server | streamName2 |
hasAudio | If true, SDP will have the 'sendrecv' parameter in audio. If false, it gets 'recvonly'. | true |
hasVideo | If true, SDP will have the 'sendrecv' parameter in video. If false, it gets 'recvonly'. | true |
status | Call status on the WCS server | ESTABLISHED The complete list of statuses is available in the Call Flow (see the CallStatusEvent method). |
sipStatus | Associated SIP-status | 200 |
rtmpStreamStatus | Status of the RTMP stream | RTMP_STREAM_ACTIVE RTMP_STREAM_WAIT - RTMP-stream is initializing |
caller | SIP caller | |
visibleName | Displayed name of the caller | |
mediaProvider | NOT USED | NOT USED |
SDP parameters recvonly and sendrecv
There are two main modes for SIP-REST calls:
...
WCS uses the built-in 'callApp' application to send intermediate statuses.
Examples
- TRYING, RTMP_STREAM_WAIT
...
These are notifications that are sent only locally on the server side via the internal REST interface. See the Application management section to get more information about internal REST applicaitons. Also, a third-party web application can be created to receive notifications from the WCS server.
Configuration
Configure startup
By default, the WCS server starts in the dev mode.
...
In the production mode, support for HTTPS for REST is enabled.
CallApp application
http://localhost:9091/CallApp is an internal address available by default that receives all intermediate statuses of a call made via REST: RING, TRYING and so on.
Also, intermediate statuses of the RTMP stream associated with this call are sent:
...
This address can be changed via WCS CLI. Se the description of the command line interface to get more information about application management in WCS.
Enabling HTTPS
REST works via HTTP at the port 8081 (by default) and via HTTPS at the port 8444.
...
After that WCS self-signed certificate is imported to your browser and the HTTPS URL can be used for REST calls, for example https://sip-as-rtmp.flashphoner.com:8444/rest-apil/call
Authentication
When the 'production' mode is on, each REST/HTTPS or REST/HTTP query requires HTTP Basic Authentication.
Standard username and password are admin:admin.
You can change the password in WCS CLI. (See more about Command Line Interface here.)
...
As a result, the authorization header is set.
Known issues
1. When republishing SIP as RTMP to Wowza servers and when receiving a stream from Wowza via HLS, a spectator can see freezes, short time non-synchronous playback.
...