Confbridge SFU For Asterisk 15

Home » Asterisk Users » Confbridge SFU For Asterisk 15
Asterisk Users 14 Comments

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()
2. Set(CONFBRIDGE(bridge,video_mode)=sfu)
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

  • 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?

  • 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.

  • 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]
    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}
    Streams: added {8bafb537-864a-424b-b5d3-d13ee0b60f8c}
    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.

  • 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.