Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Overview

WCS 5.2 allows to receive an incoming SIP call from a PBX and republish this call’s stream as RTMP to another server (Wowza for example). Also, another stream published on WCS or captured from mp4 file can be injected into the SIP call, so SIP caller can see and hear the injected stream.

To do this, WCS should be configured with SIP trunks as SIP callee. Then WCS waits for incoming calls from PBX. When SIP call is established, a stream is created from SIP call and republished to target RTMP server. When call is finished, stream is stopped.

Operation flowchart

  1. SIP caller makes a call to SIP trunk number on PBX
  2. PBX forwards a call to WCS as callee
  3. WCS receives media data and creates a stream
  4. WCS connects to RTMP server
  5. WCS publishes SIP call stream to RTMP server

How to get this working

WCS configuration

On WCS side, the following parameter should be set in flashphoner.properties file

sip_add_contact_id=false

Also, SIP trunk should be set up in WCS_HOME/conf/sip_trunk.yml file as follows:

trunks:
 pbx_t0:
  localPort : 40000
  proxyIp : pbx_address
  remotePort : 5060
  url : rtmp://rtmp_server:1935/live
  sdp : |
   v=0
   o=10009 2469 1555 IN IP4 0.0.0.0
   c=IN IP4 0.0.0.0
   t=0 0
   m=audio 7270 RTP/AVP 96
   a=rtpmap:96 opus/48000/2
   a=recvonly
   m=video 9202 RTP/AVP 96
   a=rtpmap:96 H264/90000
   a=fmtp:96 profile-level-id=42801F
   a=recvonly

Where

  • pbx_t0 – WCS SIP trunk name
  • localPort – port to receive incoming SIP calls
  • proxyIp – PBX address
  • remotePort – PBX port to register
  • url – RTMP server URL to republish SIP call stream
  • sdp – SDP to send to PBX in 200 OK response

WCS supports both TCP and UDP transport for SIP calls, so it listens for incoming both TCP and UDP port defined by localPort parameter.

By default, RTMP stream name will be rtmp_0123456, where 0123456 is callee number. To remove a prefix, set the following parameter in flashphoner.properties file

rtmp_transponder_stream_name_prefix=

PBX configuration

On PBX side, SIP trunk should be set up to redirect SIP calls to WCS. Calls should be redirected to the port defined in WCS_HOME/conf/sip_trunk.yml file (40000 in example above).

For example, OpenSIPS can be set up to route calls as follows:

route{
        ...
        #WCS Sip trunk routing, 00 prefix + XX for server number (e.g. WCS1 => 01) + X for trunk number
        if ($rU =~ "^00050[0-9]+$") {
            # WCS5 address and port
            rewritehostport("192.168.1.5:40000");
            route(relay);
        }
}

Testing

For test we use:

  • WCS server
  • PBX server
  • Softphone to make a call
  • RTMP server
  • VLC to play RTMP stream

1. Open softphone, connect to PBX server, make a call to a callee number defined in PBX SIP trunk setup, for example 001201234

2. In VLC player open network stream rtmp://rtmp_server:1935/live/rtmp_001201234

3. Send /call/inject_stream query to inject stream from a local file

4. Injected file contents is displayed in softphone video window

5. Send /call/inject_stream/terminate query to stop stream injection

 

  • No labels