[Freeswitch-users] Broadcasting conference with mod_rtmp

Stephen Dame sdame at 207me.com
Wed Sep 14 22:52:48 MSD 2016


rtmp://nothangout.media.mit.edu/plenary-test  <--- this needs to be a server
publish point on some red5/fms server. or nginx configured correctly to
publish the stream to it at that mount point.



Regards,
Stephen

HostBBB - Online Learning Solutions  
207 Technology Group Inc.   1-888-229-9756  skype: Stephen_Dame

-----Original Message-----
From: freeswitch-users-bounces at lists.freeswitch.org
[mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of Charlie
DeTar
Sent: Wednesday, September 14, 2016 1:56 PM
To: freeswitch-users at lists.freeswitch.org
Subject: Re: [Freeswitch-users] Broadcasting conference with mod_rtmp

Thanks!  I tried this, but didn't get success yet.  Maybe I've misunderstood
something.  Here's what I tried:

1. I added `<load module="mod_av"/>` to modules.conf.xml, and restarted
freeswitch.

2. I connected participants to a conference with destination number
"plenary-test".  This is what `conference list` in fs_cli shows after
this:

Conference plenary-test (1 member rate: 44100 flags:
running|answered|enforce_min|dynamic|exit_sound|enter_sound|livearray_sy
running|answered|nc|transcode_video|video_muxing|minimize_video_encoding
running|answered||json_status)
1;verto.rtc/plenary-test;4ae28d9e-cf98-363f-ed40-2b6544fb8685;Anonymous;plen
ary_user at nothangout.media.mit.edu;hear|speak|video|floor|vid-floor;0;0;0;200

3. In fs_cli, I issued the following command:

    conference plenary-test record
    rtmp://nothangout.media.mit.edu/plenary-test

The domain here is the same domain as the freeswitch server.  There is no
red5/wowza/nginx-mod-rtmp/etc running on this server yet.  This produced the
logs below. [0]

4. I attempted to connect to
rtmp://nothangout.media.mit.edu/plenary-test using mplayer, vlc, and
rtmpdump. None of them receive any data.

Shortly after issuing `conference plenary-test record ...`, whether or not I
attempt to connect an rtmp client, freeswitch appears to crash -- the logs
show freeswitch starting up, the verto browser session reloads, and the
fs_cli socket is lost.  I don't see anything in the logs about a crash (it
just up-and-reboots).


Have I missed a step here?  Does freeswitch need a running red5/etc.
server that it is connecting to when I issue the `record` command, or is it
producing a stream that an rtmp client should be able to consume? 
Forgive my ignorance here; I'm new to rtmp streaming.

I'm running freeswitch 1.6.10~17~726, via freeswitch's debian packages, on
debian 8.5.

best,
Charlie


[0] Debug log after issuing `conference plenary-test record ...`, and before
freeswitch crashes:

2016-09-14 17:41:57.378173 [DEBUG] avformat.c:1701 sample rate: 44100,
channels: 2
Parsing...
Parsed protocol: 0
Parsed host    : nothangout.media.mit.edu
Parsed app     : plenary-test
RTMP_Connect1, ... connected, handshaking
2016-09-14 17:41:57.408166 [NOTICE] mod_rtmp.c:903 New RTMP session
[81e27b34-92ae-4fd8-9d8b-6ba58ed32e80]
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [INFO]
rtmp_tcp.c:234 Rtmp connection from 18.85.44.183:54786
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:882 Sent handshake response
HandShake: Type Answer   : 03
HandShake: Server Uptime : 414322
HandShake: FMS Version   : 0.0.0.0
HandShake: Handshaking finished....
RTMP_Connect1, handshaked
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:907 Done with handshake
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:1081 [chunk_stream=3 type=0x14 ts=0 stream_id=0x0] len=116 Invoking
connect
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:192 [amfnumber=3] Got INVOKE for connect
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=2 type=0x1 stream_id=0x0] len=4
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=2 type=0x5 stream_id=0x0] len=4
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=2 type=0x6 stream_id=0x0] len=5
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=2 type=0x4 stream_id=0x0] len=6 HandleChangeChunkSize,
received: chunk size change to 512
HandleServerBW: server BW = 2097152
HandleClientBW: client BW = 2097152 1
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=3 type=0x14 stream_id=0x0] len=201 HandleCtrl,
received ctrl. type: 0, len: 6 HandleCtrl, Stream Begin 0
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=3 type=0x14 stream_id=0x0] len=61
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [NOTICE]
rtmp_sig.c:122 Sent connect reply
RTMP_ClientPacket, received: invoke 201 bytes (object begin)
Property: <Name:           no-name., STRING:    _result>
Property: <Name:           no-name., NUMBER:    1.00>
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:             fmsVer, NUMBER:    1.00>
Property: <Name:       capabilities, NUMBER:    31.00>
(object end)
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:   
NetConnection.Connect.Success>
Property: <Name:        description, STRING:    Connection succeeded>
Property: <Name:           clientId, NUMBER:    217834719.00>
Property: <Name:     objectEncoding, NUMBER:    0.00>
(object end)
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <connect> Invoking
releaseStream Invoking FCPublish Invoking createStream RTMP_ClientPacket,
received: invoke 61 bytes (object begin)
Property: <Name:           no-name., STRING:    connected>
Property: <Name:           no-name., NUMBER:    0.00>
Property: NULL
Property: <Name:           no-name., STRING:   
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80>
(object end)
HandleInvoke, server invoking <connected>
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:1081 [chunk_stream=3 type=0x14 ts=0 stream_id=0x0] len=29
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:192 [amfnumber=3] Got INVOKE for releaseStream
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [WARNING]
rtmp.c:198 Unhandled invoke for "releaseStream"
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:1081 [chunk_stream=3 type=0x14 ts=0 stream_id=0x0] len=25
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:192 [amfnumber=3] Got INVOKE for FCPublish
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [WARNING]
rtmp.c:198 Unhandled invoke for "FCPublish"
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:1081 [chunk_stream=3 type=0x14 ts=0 stream_id=0x0] len=25
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:192 [amfnumber=3] Got INVOKE for createStream
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=3 type=0x14 stream_id=0x0] len=29
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [INFO]
rtmp_sig.c:137 Replied to createStream (0) RTMP_ClientPacket, received:
invoke 29 bytes (object begin)
Property: <Name:           no-name., STRING:    _result>
Property: <Name:           no-name., NUMBER:    4.00>
Property: NULL
Property: <Name:           no-name., NUMBER:    1.00>
(object end)
HandleInvoke, server invoking <_result>
HandleInvoke, received result for method call <createStream> Invoking
publish
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:1081 [chunk_stream=4 type=0x14 ts=0 stream_id=0x1] len=30
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:192 [amfnumber=4] Got INVOKE for publish
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=2 type=0x4 stream_id=0x0] len=6
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [DEBUG]
rtmp.c:656 [amfnumber=5 type=0x14 stream_id=0x1] len=138
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:57.408166 [INFO]
rtmp_sig.c:290 Got publish on stream 1.
HandleCtrl, received ctrl. type: 0, len: 6 HandleCtrl, Stream Begin 1
RTMP_ClientPacket, received: invoke 138 bytes (object begin)
Property: <Name:           no-name., STRING:    onStatus>
Property: <Name:           no-name., NUMBER:    0.00>
Property: NULL
Property: <Name:           no-name., OBJECT>
(object begin)
Property: <Name:              level, STRING:    status>
Property: <Name:               code, STRING:    NetStream.Publish.Start>
Property: <Name:        description, STRING:    description>
Property: <Name:            details, STRING:    details>
Property: <Name:           clientid, NUMBER:    217834719.00>
(object end)
(object end)
HandleInvoke, server invoking <onStatus> HandleInvoke, onStatus:
NetStream.Publish.Start
2016-09-14 17:41:57.408166 [DEBUG] avformat.c:1804 use video codec: [28]
h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10)
2016-09-14 17:41:57.408166 [WARNING] avformat.c:506 Codec [aac] is
experimental feature in libavcodec, never mind
2016-09-14 17:41:57.408166 [NOTICE] avformat.c:531 sample_rate: 44100
nb_samples: 1024
2016-09-14 17:41:57.408166 [NOTICE] avformat.c:535 sample_fmt 8 !=
AV_SAMPLE_FMT_S16, start resampler Output #0, flv, to
'rtmp://nothangout.media.mit.edu/plenary-test':
    Stream #0.0: Audio: aac, 44100 Hz, stereo, fltp, 131 kb/s
2016-09-14 17:41:57.408166 [INFO] avformat.c:1829 Opening File
[rtmp://nothangout.media.mit.edu/plenary-test] 44100hz  with VIDEO
2016-09-14 17:41:57.408166 [DEBUG] conference_record.c:279 Setup timer
success interval: 20  samples: 882 using cpu capabilities: MMX2 SSE2Fast
SSSE3 SSE4.2 AVX profile Constrained Baseline, level 4.1
264 - core 142 r2431 a5831aa - H.264/MPEG-4 AVC codec - Copyleft
2003-2014 - http://www.videolan.org/x264.html - options: cabac=0 ref=1
deblock=1:0:0 analyse=0x1:0x111 me=hex subme=2 psy=1 psy_rd=1.00:0.00
mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0
deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=4
lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0
bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=30
keyint_min=16 scenecut=40 intra_refresh=0 rc_lookahead=10 rc=crf
mbtree=1 crf=18.0 qcomp=0.60 qpmin=10 qpmax=31 qpstep=4 ip_ratio=1.41
aq=1:1.00
2016-09-14 17:41:57.478159 [INFO] avformat.c:2366 use video codec
implementation Video: libx264, yuv420p, 800x600, q=10-31, 516 kb/s
2016-09-14 17:41:57.478159 [NOTICE] avformat.c:613 video thread start
81e27b34-92ae-4fd8-9d8b-6ba58ed32e80 2016-09-14 17:41:58.458161 [DEBUG]
rtmp.c:1081 [chunk_stream=4 type=0x12 ts=0 stream_id=0x1] len=382


On Wed, Sep 14, 2016, at 05:58 AM, Stephen Dame wrote:
> You want to load mod_av
> 
> Then use
> 
> conference xxxxxx record rtmp://yourserver.cpm/stream_id
> 
> you can pass avconv args in this command as well to control encoding 
> options like frames per second and presets.
> 
> This will send output of MCU to your red5, wowza, or properly 
> configure nginx rtmp module.
> 
> Can also send it directly to youtube.
> 
> Regards,
> Stephen
> 
> HostBBB - Online Learning Solutions  
> 207 Technology Group Inc.   1-888-229-9756  skype: Stephen_Dame
> 
> -----Original Message-----
> From: freeswitch-users-bounces at lists.freeswitch.org
> [mailto:freeswitch-users-bounces at lists.freeswitch.org] On Behalf Of 
> Charlie DeTar
> Sent: Tuesday, September 13, 2016 10:55 PM
> To: freeswitch-users at lists.freeswitch.org
> Subject: [Freeswitch-users] Broadcasting conference with mod_rtmp
> 
> Hi,
> 
> I'm trying to broadcast a WebRTC video conference (via mod_conference 
> and
> mod_verto) over an rtmp stream, with the ultimate goal of transcoding 
> the rtmp stream for broadcast as an HTML5 video stream (likely using 
> something like https://github.com/arut/nginx-rtmp-module
> for HSL and MPEG-DASH broadcasts).  I expect I have the same sort of 
> requirements of freeswitch that one would need for broadcasting rtmp 
> to youtube, which the docs mention glancingly without detail [0]. :)
> 
> The video conferencing is working great -- but I'm struggling to 
> figure out how to access the RTMP stream for it.  My rtmp.conf.xml is 
> basically the default (but with `auth-calls` set to `false`).  My 
> dialplan is as
> follows:
> 
> <include>
>   <extension name="plenary">
>     <condition field="destination_number" expression="^plenary-.*$"
>     break="never">
>       <action application="answer"/>
>       <action application="info"/>
>       <action application="conference"
>               data="${destination_number}@plenary-conference-profile"/>
>     </condition>
>   </extension>
> </include>
> 
> I'm able to connect to freeswitch using RTMP clients (I've tried 
> rtmpdump, mplayer, and vlc).  In fs_cli, I see debug info (example 
> copied below
> [1])
> that seems to indicate successful connections. 
> However, the RTMP client never receives any data from the server and 
> disconnects after around 30 seconds.
> 
> I'm trying to connect via URLs like:
> rtmp://<domain>:<port>/plenary-conferencename
> rtmp://<domain>:<port>/plenary-conferencename at plenary-conference-profi
> le rtmp://<domain>:<port>/default/plenary-conferencename
> and so on, and all exhibit the same behavior.  It doesn't seem to 
> matter what path I put -- freeswitch accepts the connection, sends no 
> data, then disconnects after a while.  This leads me to suspect I 
> might just be getting the path name wrong.
> 
> My questions, if anyone has experience with this:
> 
> What is the correct path for the rtmp URL to connect to a video 
> conference
> -- is it just the $destination_number, or something else?
> Are there any obvious steps I'm missing to set up rtmp feeds, or any 
> suggestions for how to do smarter debugging of this?
> Does anyone have an example project that successfully broadcasts RTMP 
> from a video conference to e.g. youtube?
> Is there a better or more convenient approach to broadcasting a video 
> stream from a conference that you prefer to rtmp?
> 
> 
> The full freeswitch config I'm using is here:
> https://gitlab.com/cdetar/plenary-server/tree/master/ansible/roles/ple
> nary/t
> emplates/freeswitch
> , if that's helpful.  (Those are templates for an ansible config, so 
> they contain variables that get interpolated in using {{var}} syntax).
> 
> best,
> Charlie
> 
> [0] Glancing reference to youtube+rtmp:
> https://freeswitch.org/confluence/display/FREESWITCH/FreeSWITCH+1.6+Vi
> deo#Fr
> eeSWITCH1.6Video-What%27snew
> 
> [1] fs_cli debug info while attempting to connect via RTMP:
> 
> 2016-09-13 23:37:40.551744 [NOTICE] mod_rtmp.c:903 New RTMP session 
> [1513874f-9084-470c-a2de-7e5f92bb2296]
> 2016-09-13 23:37:40.551744 [INFO] rtmp_tcp.c:234 Rtmp connection from
> 98.127.250.255:44131
> 2016-09-13 23:37:40.551744 [DEBUG] rtmp.c:882 Sent handshake response
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:907 Done with handshake
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:1081 [chunk_stream=3 
> type=0x14
> ts=0 stream_id=0x0] len=204
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:192 [amfnumber=3] Got INVOKE 
> for connect
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x1 
> stream_id=0x0] len=4
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x5 
> stream_id=0x0] len=4
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x6 
> stream_id=0x0] len=5
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x4 
> stream_id=0x0] len=6
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=3 type=0x14 
> stream_id=0x0] len=201
> 2016-09-13 23:37:40.711748 [DEBUG] rtmp.c:656 [amfnumber=3 type=0x14 
> stream_id=0x0] len=61
> 2016-09-13 23:37:40.711748 [NOTICE] rtmp_sig.c:122 Sent connect reply
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:1081 [chunk_stream=2 
> type=0x5
> ts=0 stream_id=0x0] len=4
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:1184 Set window size: from
> 2097152 to 2097152 bytes
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:1081 [chunk_stream=2 
> type=0x4
> ts=0 stream_id=0x0] len=10
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:91 Control (3): 00 00 00 00 
> 00
> 00 01 2c
> 2016-09-13 23:37:40.851748 [INFO] rtmp.c:118 stream=0 Client buffer 
> set to 300ms
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:1081 [chunk_stream=3 
> type=0x14
> ts=0 stream_id=0x0] len=25
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:192 [amfnumber=3] Got INVOKE 
> for createStream
> 2016-09-13 23:37:40.851748 [DEBUG] rtmp.c:656 [amfnumber=3 type=0x14 
> stream_id=0x0] len=29
> 2016-09-13 23:37:40.851748 [INFO] rtmp_sig.c:137 Replied to 
> createStream
> (0)
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:1081 [chunk_stream=8 
> type=0x14
> ts=0 stream_id=0x1] len=82
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:192 [amfnumber=8] Got INVOKE 
> for play
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp_sig.c:198 Got play for 
> plenary-test-pattern-alpha at plenary-conference-profile on stream 1
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x1 
> stream_id=0x0] len=4
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x4 
> stream_id=0x0] len=6
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=2 type=0x4 
> stream_id=0x0] len=10
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=5 type=0x14 
> stream_id=0x1] len=135
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=5 type=0x14 
> stream_id=0x1] len=135
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=5 type=0x12 
> stream_id=0x1] len=44
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:656 [amfnumber=5 type=0x12 
> stream_id=0x1] len=24
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:1081 [chunk_stream=2 
> type=0x4
> ts=0 stream_id=0x0] len=10
> 2016-09-13 23:37:40.991748 [DEBUG] rtmp.c:91 Control (3): 00 00 00 01 
> 02
> 25 51 00
> 2016-09-13 23:37:40.991748 [INFO] rtmp.c:118 stream=1 Client buffer 
> set to 36000000ms
> 2016-09-13 23:37:43.951733 [DEBUG] rtmp.c:1081 [chunk_stream=3 
> type=0x14
> ts=0 stream_id=0x0] len=34
> 2016-09-13 23:37:43.951733 [DEBUG] rtmp.c:192 [amfnumber=3] Got INVOKE 
> for deleteStream
> 2016-09-13 23:37:43.951733 [NOTICE] rtmp.c:918 Disconnected from flash 
> client
> 2016-09-13 23:37:43.951733 [DEBUG] rtmp_tcp.c:243 Closing socket
> 2016-09-13 23:37:44.691705 [NOTICE] mod_rtmp.c:1025 RTMP session ended 
> [1513874f-9084-470c-a2de-7e5f92bb2296]
> 
> ______________________________________________________________________
> ___ Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
> 
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://confluence.freeswitch.org
> http://www.cluecon.com
> 
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-use
> rs
> http://www.freeswitch.org
> 
> 
> ______________________________________________________________________
> ___ Professional FreeSWITCH Consulting Services:
> consulting at freeswitch.org
> http://www.freeswitchsolutions.com
> 
> Official FreeSWITCH Sites
> http://www.freeswitch.org
> http://confluence.freeswitch.org
> http://www.cluecon.com
> 
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-use
> rs
> http://www.freeswitch.org

_________________________________________________________________________
Professional FreeSWITCH Consulting Services: 
consulting at freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.com

FreeSWITCH-users mailing list
FreeSWITCH-users at lists.freeswitch.org
http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
http://www.freeswitch.org




Join us at ClueCon 2016 Aug 8-12, 2016
More information about the FreeSWITCH-users mailing list