Confbridge SFU For Asterisk 15
I am trying to get the “Mega Phone” demo working on my office PBX
but there seems to be a problem when trying to set the default bridge to sfu mode. I have the following configuration in confbridge.conf in the default_bridge section: video_mode = sfu but when I do a “confbridge show profile bridge default_bridge” I see:
Video Mode: no video
I can change it to follow_talker, last_marked or first_marked and it does change, it is just the sfu option that does not seem to be valid. I am using Asterisk 15.1.2 for my testing. I even tried to force the option via Dialplan:
[ Context ‘ext’ created by ‘pbx_config’ ]
‘1000’ => 1. Answer()
[extensions.conf:0]
2. Set(CONFBRIDGE(bridge,video_mode)=sfu)
[extensions.conf:0]
3. ConfBridge(guest) [extensions.conf:0]
4. Hangup() [extensions.conf:0]
But I get no video at all on the conference.
Any ideas?
—
Telecomunicaciones Abiertas de México S.A. de C.V. Carlos Chávez
+52 (55)8116-9161
—
14 thoughts on - Confbridge SFU For Asterisk 15
The CLI command doesn’t have sfu as a mapping right now. Please file an issue[1] for that. As for video there’s additional configuration that you have to do in pjsip.conf in order to allow the streams. I’d suggest following the blog post[2] which has known working configuration.
[1] https://issues.asterisk.org/jira
[2]
http://blogs.asterisk.org/2017/09/20/asterisk-15-multi-stream-media-sfu/
I followed the blog post and I can get video from the conference if I configure the bridge as follow_talker so I know everything is working on the pjsip side. The only problem is that video_mode = sfu is apparently not valid in either confbridge.conf or via the dialplan and I
get no video with that option.
The option, when set, will show up as “no video” if you do the
“confbridge show” as you mentioned. That’s a bug which is why I
mentioned filing an issue. It is still valid though.
Have you confirmed that the maximum number of streams is set using
“pjsip show endpoint”? and that the codecs are correct?
allow : (ulaw|vp8|h264)
max_audio_streams : 10
max_video_streams : 10
Video and audio work fine if I use follow_talker in the confbridge. No video when set to sfu.
What browser are you trying from? Can you provide a SIP trace (pjsip set logger on)? And what is the output of “core show channel” for each channel when they are in the video conference bridge?
We have tried with Firefox (56) and Chrome 61.0.3163.100 on both Windows and OSX.
SIP trace:
https://pbxoficina.telecomabmex.com/nextcloud/index.php/s/GsXHb9EoRUZuJrZ
Channels:
https://pbxoficina.telecomabmex.com/nextcloud/index.php/s/9W04VCUFQSfVumW
It appears that the CBAnn channels only have audio a no video.
Those are the announcer channels for playing audio into the conference bridge. I need to see an attempt with more than 1 participant in the bridge.
Trace with 3 clients. We can hear each other but no video.
https://pbxoficina.telecomabmex.com/nextcloud/index.php/s/X0PQ5FrYeqCwwkz
Do you see anything in the Javascript console of the browser? We are adding the needed media streams by sending a reinvite to the participants but we don’t get any response, which means for some reason the browser may not have liked what we provided.
This is what I get on the console:
new session – outgoing – [object Object]
cyber_mega_phone.js:78:3
ontrack: audio – 8b7fca5e-bb67-4e8c-8bdb-84fb80ac4cc0 stream
66e4250b-c196-4482-a347-d12772ef865d cyber_mega_phone.js:111:4
Streams: added 66e4250b-c196-4482-a347-d12772ef865d cyber_mega_phone.js:225:3
ontrack: video – ad836e20-c0c9-423f-9c42-0aef19c5ca32 stream
66e4250b-c196-4482-a347-d12772ef865d cyber_mega_phone.js:111:4
confirmed: adding local stream {8bafb537-864a-424b-b5d3-d13ee0b60f8c}
cyber_mega_phone.js:84:5
Streams: added {8bafb537-864a-424b-b5d3-d13ee0b60f8c}
cyber_mega_phone.js:225:3
RTCPeerConnection.getLocalStreams/getRemoteStreams are deprecated. Use RTCPeerConnection.getSenders/getReceivers instead. cyber_mega_phone.js:82:17
ICE failed, add a STUN server and see about:webrtc for more details
Looks like for some reason it failed to successfully do ICE negotiation potentially on the newly added remote streams. Why that is is environment specific – but the problem does seem to be on the web browser/client side, not in Asterisk itself. You’d need to figure out why.
This is one of the annoyances of WebRTC – the browser can be a black box at time and when things go wrong (like this) it’s hard to dig and figure out what is up.
Here is more information from the browser about the session:
https://pbxoficina.telecomabmex.com/nextcloud/index.php/s/af36iLlljtbYkbF
On Asterisk I have icesupport=true in rtp.conf and ice_support=yes on the endpoint. I have configured a STUN server in both rtp.conf and res_stun_monitor.conf
What is the exact network topology? Is Asterisk behind NAT as well with ports forwarded? If so you should configure a mapping in rtp.conf so that the internal IP address is mapped to its external IP address in the ICE candidates, giving a better chance that things will work.
Correct, Asterisk is behind a NAT with SIP and RTP forwarded to the server. We have a static IP address set in the transport definition. I
will map the port in rtp.conf and try it again.