Hello Sirs,
I struggling from some time to make an audio/video conference from webrtc using asterisk. The audio part was quite easy but I’m stuck on the video part. I read “the internet”, every page, every word maybe I was missing something.
From my understandings, asterisk 12.5 (the version that I/m using) has already opus & vp8 support. Good. Then, why is not working. As you know, dtls/srtp is mandatory on the client side so I’m forced to use encryption on te server side too.
My first error is “Rejecting secure video stream without encryption details” and my call is dropped. I tried a solution for that but I don’t think is quite well because the video is not flowing (neither audio): set secure_video = 1 when protocol was RTP/SAVPF in chan_sip.c line [if (!strcmp(protocol, “RTP/SAVP”) || !strcmp(protocol, “RTP/SAVPF”))]. Doing that the call is not dropped but I don’t receive any audio/video packets.
If I make an audio call (without video) everything is OK.
So, my question is:
Can asterisk make a video conference using chrome/firerox webrtc? How? What do I miss? My scope is to do audio/video broadcast from one source to the all other participants.
Bellow is my configuration:
available codecs (core show codecs): pastebin.com/H4EZgswm
I’m using websockets in kamailio and forward 999 to asterisk server
client framework is jssip (also tried with sipml5 in order to identify the problem but I have the same behaviour as when RTP/SAVPF to UDP/TLS/RTP/SAVPF in chan_sip.c)
sdp offer when trying to call asterisk available at pastebin.com/xcAVLFpi
sip.conf
[999]
context=demo
type=peer
avpf=yes
force_avp=yes
dtlsenable=yes
encryption=yes
icesupport=yes
stunaddr=xx.xx.xx.xx:443
turnaddr=xx.xx.xx.xx:443
turnusername=test
turnpassword=1234
dtlsverify=fingerprint
dtlsrekey = 60
dtlsfingerprint = sha-256
dtlscertfile=/etc/asterisk/keys/asterisk.pem
dtlsprivatekey=/etc/asterisk/keys/asterisk.key
dtlscafile=/etc/asterisk/keys/ca.crt
dtlssetup = actpass
dtlscipher=ALL
host=xx.xx.xx.xx
port=5060
canreinvite=no
videosupport = yes
disallow=all
allow=ulaw
allow=vp8
nat = auto_force_rport,auto_comedia
directmedia = no
extensions.conf
[demo]
include => stdexten
;
; We start with what to do when a call first comes in.
;
exten => 999,1,Wait(1) ; Wait a second, just for fun
exten => 999,n,Answer ; Answer the line
exten => 999,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds
exten => 999,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds
exten => 999,n,ConfBridge(1)
exten => 999,n(restart),BackGround(demo-congrats) ; Play a congratulatory message
exten => 999,n(instruct),BackGround(demo-instruct) ; Play some instructions
exten => 999,n,WaitExten ; Wait for an extension to be dialed.
Thank you in advance for your help.
Best regards,
Mihai M