吐個槽:
http://tryit.jssip.net/ 這個毛東西,默認是要使用視頻的,而且沒得設置不使用,至少我沒看到有設置的!!!(其實就是寫死了,翻了他的js代碼的-_-||)
設置連接到自己的FreeSWITCH服務器也很簡單:
然后 登陸/注冊那里要填"you name" 隨便填就好了.
好了, 到這里, 我們已經可以注冊上了,然后打電話吧,,,,
然后你有米有發現, contact 是一堆隨機字符, O(∩_∩)O哈哈~
fs 的 esl 事件里看到 不知道是誰...
要命...
哦,對了, 這里呼出也是有問題的, 哈哈
要設置 Session expires
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