[Freeswitch-users] Audio Bridge to Asterisk from Freeswitch video conference
Zach Rothy
zrothy at monmouth.com
Tue May 9 21:26:38 UTC 2017
Good Afternoon,
I currently have a video conference which users connect to via the Verto
library. I was looking to enhance this conference by also allowing users
to join audio-wise to the video conference by making a bridge/call to my
asterisk server which hosts audio conference rooms. Currently I have the
conference_set_auto_outcall making the call via sip to the asterisk
server, but ran into a couple of issues after asterisk and the
freeswitch servers establish the call.
The first issue, though it may be on purpose, is that when I use the
ghost flag for the member it seems RTP is never delivered to my verto
endpoint from the sip call to the asterisk as well as the other way
around. Though I clearly see freeswitch is recognizing energy detection
from my asterisk conference, as I see the talking flag appear but no
audio is heard from it on the verto client. It is the same the other way
around, where I will talk via a mic on my verto client, but never hear
it on the asterisk side of things. Though for asterisk it does not even
seem to be sending audio to the asterisk server.
I'd prefer to use the ghost flag as I do with screen sharing so that the
audio bridge does not count as a user for the video conference, of
course I can always get around this by just bumping up the max users by
one too if the user decides to use the bridge.
The second issue might be more of a misconfiguration issue, but I am a
bit stuck on where to check. For other times when I don't have the ghost
or any flag set for the outbound bridge call, things work as expected. I
can transmit and hear audio from both ends to the other one without any
issue. Though even though Freeswitch knows the bridged call has no video
since has_video is set to false in conference <Room> xml_list, it seems
to still try to use that as the presenter / floor occasionally. During
these times I get the following in fs_cli constantly 2017-05-09
17:10:05.742387 [WARNING] switch_core_media.c:11459
sofia/internal/352650 at asterisk-server has no video codec wher asterisk
server is actually the IP/dns host name of the asterisk server I develop
with.
Ideally if I were not to use the ghost flag I'd want it to treat this
bridged call as audio only and not constantly spew that warning message.
Some ideas I haven't tested yet as I am not too familiar with freeswitch
besides verto/mod_conference a bit, was to see if I could have it join
the conference with an audio only profile maybe, or somehow set the SIP
not to try offering video maybe. Any ideas?
Here is the profile and dialplan I was using to test
Conference profile (returned from mod_xml_curl):
<document type="freeswitch/xml">
<section name="configuration">
<configuration name="conference.conf" description="Conf Profiles">
<profiles>
<profile name="3525236">
<param name="domain" value="$${domain}"/>
<param name="rate" value="48000"/>
<param name="channels" value="2"/>
<param name="interval" value="20"/>
<param name="energy-level" value="200"/>
<param name="muted-sound" value="conference/conf-muted.wav"/>
<param name="unmuted-sound" value="conference/conf-unmuted.wav"/>
<param name="alone-sound" value="conference/conf-alone.wav"/>
<param name="hold-music" value="$${hold_music}"/>
<param name="enter-sound"
value="tone_stream://%(200,0,500,600,700)"/>
<param name="exit-sound"
value="tone_stream://%(500,0,300,200,100,50,25)"/>
<param name="kicked-sound" value="conference/conf-kicked.wav"/>
<param name="locked-sound" value="conference/conf-locked.wav"/>
<param name="is-locked-sound"
value="conference/conf-is-locked.wav"/>
<param name="is-unlocked-sound"
value="conference/conf-is-unlocked.wav"/>
<param name="pin-sound" value="conference/conf-pin.wav"/>
<param name="bad-pin-sound" value="conference/conf-bad-pin.wav"/>
<param name="caller-id-name" value="$${outbound_caller_name}"/>
<param name="caller-id-number" value="$${outbound_caller_id}"/>
<param name="comfort-noise" value="false"/>
<param name="conference-flags"
value="video-floor-only|rfc-4579|livearray-sync|minimize-video-encoding|livearray-json-status|video-required-for-canvas|video-mute-exit-canvas"/>
<param name="video-mode" value="passthrough"/>
<param name="video-layout-name" value="1x1"/>
<param name="video-layout-name" value="group:grid"/>
<param name="video-canvas-size" value="1920x1080"/>
<param name="video-canvas-bgcolor" value="#333333"/>
<param name="video-layout-bgcolor" value="#000000"/>
<param name="video-codec-bandwidth" value="1mb"/>
<param name="video-fps" value="15"/>
<param name="max-members-sound"
value="conference/conf-conference_is_full.wav"/>
<param name="endconf-grace-time" value="30"/>
<param name="max-members" value="30"/>
</profile>
</profiles>
</configuration>
</section>
</document>
Dialplan(Returned from mod_xml_curl):
<document type="freeswitch/xml">
<section name="dialplan" description="Dialplan routing">
<context name="default">
<extension name="3525236">
<condition field="destination_number"
expression="^3525236-moderator$">
<action application="set" data="api_hangup_hook=system ROOM=3525236
VCONFID=239 /usr/local/bin/flip_conference_flag.sh"/>
<action application="answer"/>
<action application="set"
data="conference_auto_outcall_timeout=5"/>
<action application="set"
data="conference_utils_auto_outcall_flags=ghost"/>
<action application="set"
data="conference_auto_outcall_caller_id_name=$${effective_caller_id_name}"/>
<action application="set"
data="conference_auto_outcall_caller_id_number=$${effective_caller_id_number}"/>
<action application="set"
data="conference_auto_outcall_profile=3525236"/>
<action application="conference_set_auto_outcall"
data="sofia/internal/352650 at asterisk_server_hostname"/>
<action application="sleep" data="2000"/>
<action application="conference"
data="3525236 at 3525236+flags{moderator|endconf}"/>
<action application="hangup"/>
</condition>
</extension>
</context>
</section>
</document>
Thanks in advance,
Zach
More information about the FreeSWITCH-users
mailing list