吐個槽:html
http://tryit.jssip.net/ 這個毛東西,默認是要使用視頻的,並且沒得設置不使用,至少我沒看到有設置的!!!(其實就是寫死了,翻了他的js代碼的-_-||)node
設置鏈接到本身的FreeSWITCH服務器也很簡單:瀏覽器
而後 登錄/註冊那裏要填"you name" 隨便填就行了.服務器
好了, 到這裏, 咱們已經能夠註冊上了,而後打電話吧,,,,session
而後你有米有發現, contact 是一堆隨機字符, O(∩_∩)O哈哈~編碼
fs 的 esl 事件裏看到 不知道是誰...spa
要命....net
哦,對了, 這裏呼出也是有問題的, 哈哈3d
要設置 Session expirescode
FreeSWITCH 默認設置要求 Session Expires 不低於120
JsSIP.C.SESSION_EXPIRES=120,JsSIP.C.MIN_SESSION_EXPIRES=120;
否則你打不出的, O(∩_∩)O哈哈~~~o(>_<)o ~~
對了, 繼續上一個問題, contact的隨機字符串的問題,
而後又去研究代碼了, 緣由嘛,我喜歡研究別人的js代碼, 毛病, ,,,找不到文檔說明呀o(╥﹏╥)o
而後又試 , 按照 內部js的搞, configuration 加參數:
contact_uri:new JsSIP.URI('sip',8004,'192.168.1.254',null,{transport:'ws'})
結果new JsSIP.UA(configuration)直接報錯,contact_uri不能賦值爲對象,只能是string, 準備去看看改掉?? 這樣子不行啊
因而又拿不一樣方式註冊的 siptrace 對比, 看到
Contact: <sip:8004@pud927611qgg.invalid;transport=ws>;+sip.ice;reg-id=1;+sip.instance.....
這裏有transport=ws (transport=wss 也是行的啦)
但是內部是會把contact_uri變成對象的, 怎麼搞,
算了 試試咯
contact_uri: 'sip:'+u+'@'+fsip+';transport=ws'
嗯, 結果是成功的,呼叫的esl事件裏的 也有了分機號能夠識別了
如此, 填了兩個坑,以上!
而後還有個問題, 無論呼入仍是呼出,調整了 fs的 codec 編碼的 , 也仍是報編碼問題, 不能通話, 一接就掛
而後還有 ACL 的問題, 明天再折騰
,附圖:
報錯:
編碼問題貌似是要手工設置轉碼...
<X-PRE-PROCESS cmd="set" data="media_mix_inbound_outbound_codecs=true"/>
參考1:http://freeswitch.net.cn/164.html
參考2:https://freeswitch.org/confluence/display/FREESWITCH/Codec+Negotiation
-------------更新線----------------------------------------------------------------------------------
其實不須要這些這麼折騰, acl.conf.xml 中加:
<list name="wan.auto" default="allow">
<node type="allow" cidr="you-ip/24"/>
</list>
就應該能解決 ACL 問題,,,,應該差很少吧, 我就試了下,好像有些做用的...
並且我是使用的另外一種辦法(沒用這個配置了): 改源代碼,,,,O(∩_∩)O哈哈~
代碼以下: (switch_core_media.c)
1 if (!engine->cand_acl_count) { 2 engine->cand_acl[engine->cand_acl_count++] = "localnet.auto";// "wan.auto";//lzpong 2018/11/15 3 switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(smh->session), SWITCH_LOG_WARNING, "NO candidate ACL defined, Defaulting to localnet.auto not wan.auto -- lzpong 2018/11/15\n"); 4 }
至於解碼,嗯...... 其實不須要折騰啦, 一點都不須要!!!
我用的是1.6.20, 都支持啦,瀏覽器也都支持啦!
省事!
其實沒聲音,也多是沒有給輸出設備喲(好比: <audio/>),,就這個我折騰很多時間, 纔想到, 而後有折騰(由於官網沒例子說明....坑爹不,,,個官網,都多長時間了,文檔都缺缺的...)
audioPlayer.srcObject=session.connection.getRemoteStreams()[0];
也可使用 mod_verto : https://blog.csdn.net/jiaojian8063868/article/details/79020024