freeswitch+webrtc

起初 接到这任务 本以为很简单的事  因为自己在书上见过只要小改就可以让freeswitch支持webrtc 事与愿违啊  苍天弄人 啊
开始  修改freeswitch的配置  /conf/sip_profiles/internal.xml   将ws-binding  的注释取消  也就是将端口号5066 打开 使其支持websocket
  
  书上说的以后只要添加上需要的解码器就可以使用  但是结果  压根用不了  (人家5066是不需要sll的 但FS 老人家不让你过 一定要SSl)
  
  之后就是在一个劲的鼓捣 7443 端口号  也就是internal.xml文档里面的
  
  <param name="tls-cert-dir" value="/usr/local/freeswitch/certs"/>
  <param name="wss-binding" value=":7443"/>
  
  完事之后 在/usr/local/freeswitch/certs  下将wss.pem 等文件拷贝进去就可以了
  
  (还有一些参数的设置  不太清楚管不管用 先列出来   <X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/>
                                                    <X-PRE-PROCESS cmd="set" data="external_auth_calls=ture"/>
   )
   
   wss.pem等文件的生成可以参考网上的资料 (
   
Configure SSL for WebRTC
Create a Root tls key.
openssl genrsa -out rootCA.key 2048
Create a self signed cert using your key.
openssl req -x509 -new -nodes -key rootCA.key -days 1024 -out rootCA.pem
Fill out everything to the best of your ability. Make sure you include your fully qualified domain name. Create the directories Freeswitch will look for these keys.
mkdir /etc/freeswitch/certs
mkdir /etc/freeswitch/tls
Create wss.pem and dtls-srtp.crt files from your tls keys.
cat rootCA.pem rootCA.key > /etc/freeswitch/certs/wss.pem
cat rootCA.pem > /etc/freeswitch/tls/dtls-srtp.crt
Uncomment wss-binding and set the tls-cert-dir in your internal sip profile. These two lines should look like this in your /etc/freeswitch/sip_profiles/internal.xlm
nano /etc/freeswitch/sip_profiles/internal.xml
<param name="tls-cert-dir" value="/etc/freeswitch/certs"/>
<param name="wss-binding" value=":7443"/>
Change the default registration password to prevent the world from logging in and making calls on your server.
nano /etc/freeswitch/vars.xml
<X-PRE-PROCESS cmd="set" data="default_password=your_cool_new_password"/>
Reload the freeswitch settings by starting up the freeswitch console and executing reloadxml.
fs_cli
>reloadxml
>/exit
  
  
webrtc客户端 我使用的是 jssip开源的一个demo    https://tryit.jssip.net/
  使用谷歌浏览器 将证书添加 打开 https://139.129.13.218:7443/ws  
   
   之后在页面上输入相应的信息 并且将advanced settings  里面的session_timers取消
   
   至此 客户端可以使用了  
   
   但是本人PC 一直使用不了  查看LOG文件是因为 AUDIO RTP REPORTS ERROR: [Remote Address Error!]  
   
   这个问题是因为ipV6 使得地址识别不了 因此不能用  下面的方法可以将ipv6的问题解决   
  
  只需要使用以下3条命令把IPv6的接口关闭即可,在命令提示符窗口中输入以下命令运行即可解决了关闭ipv6。
  netsh interface teredo set state disable
  netsh interface 6to4 set state disabled
  netsh interface isatap set state disabled
或者  netsh interface IPV6 set global randomizeidentifier=disabled
      netsh interface IPV6 set privacy state=disable
      netsh interface ipv6 6to4 set state state=disabled
      netsh interface ipv6 isatap set state state=disabled
      netsh interface ipv6 set teredo=disable
      
      
      好了  大功告成!!!!!!!!!!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: SIP.js 是一个用于浏览器中实现实时通信的开源 JavaScript 库。它支持与 SIP 服务器进行呼入和呼出通话,并且还支持呼叫转移和保持功能。 通过 Sip.js,我们可以通过浏览器进行 WebRTC 电话呼入和呼出。这意味着我们可以使用浏览器作为我们的电话终端,并通过互联网连接进行语音通话。我们只需要一个支持 WebRTC 的浏览器,如 Google Chrome 或 Mozilla Firefox,以及一个配置良好的 FreeSWITCH 服务器。 首先,我们可以使用 Sip.js 建立与 FreeSWITCH 服务器的连接,并注册一个用户。通过这个用户,我们可以发送一个呼出请求来拨打电话到另一个用户,或者接收一个呼入请求来接听电话。 当我们接听了电话后,我们可以选择将电话转移到另一个用户或者电话号码。这可以通过 Sip.js 中提供的呼叫转移功能来实现。我们可以指定转移的目标用户或电话号码,并且可以选择在转移时将呼叫保持或取消保持。 另外一个非常有用的功能是呼叫保持。当我们在通话过程中需要暂时中断通话时,我们可以使用 Sip.js 提供的呼叫保持功能。这个功能允许我们将通话保持在后台,并在需要时重新恢复通话。这对于需要处理多个呼叫或需要暂时离开的用户非常有用。 总之,使用 Sip.js 和 FreeSWITCH,我们可以实现 WebRTC 电话的呼入、呼出、转移和保持功能。这使得我们可以通过浏览器进行实时语音通话,并且可以灵活地控制电话的转移和保持状态。 ### 回答2: SIP.js是一个基于WebRTC技术的开源JavaScript库,用于在网页端实现电话呼入、呼出、转移和保持等功能。它与FreeSWITCH一起使用,可以创建一个强大的Web电话应用。 呼入功能指的是当有电话呼叫进入系统时,SIP.js与FreeSWITCH配合使用,可以在网页端接受并处理这些呼叫。用户可以通过网页界面接听和拒绝呼叫,并可以显示来电号码等相关信息。 呼出功能允许用户通过网页端发起呼叫。用户可以在网页中输入电话号码,并点击拨号按钮,SIP.js将与FreeSWITCH建立连接并将呼叫发出。用户可以直接在网页上进行语音通话,无需使用传统的电话设备。 转移功能指的是将呼叫从一个用户转移至另一个用户。使用SIP.js和FreeSWITCH,用户可以在网页上进行呼叫转移操作。例如,当用户接听电话后,可以选择将呼叫转移到其他用户或号码。 保持功能允许用户在进行通话时暂停通话并将其保持。使用SIP.js和FreeSWITCH,用户可以通过网页界面上的按钮实现保持和取消保持操作。当通话暂停时,用户之间的语音通信将被暂停,但通话仍然保持连接。取消保持后,通话将恢复正常。 总而言之,SIP.js与FreeSWITCH结合使用可实现在网页端创建强大的Web电话应用,包括呼入、呼出、转移和保持等功能。这使得用户可以方便地通过网页进行语音通话,提高了通信的灵活性和便利性。 ### 回答3: SIP.js是一个用于实现SIP(Session Initiation Protocol,会话初始化协议)通信的JavaScript库,而FreeSWITCH是一个开源的电话交换软件平台。它们结合使用可以实现WebRTC电话的呼入、呼出、转移和保持等功能。 WebRTC是一种实时通信的标准,可以在支持WebRTC的浏览器中实现点对点的音视频通话。而SIP是一种常用的语音和多媒体会话协议,用于建立、修改和终止多媒体会话。 使用SIP.js和FreeSWITCH,可以在网页端实现电话呼入功能,即用户可以通过在网页上输入电话号码并发起呼叫,FreeSWITCH将收到的呼叫转发到SIP.js,并通过WebRTC建立与目标号码的通信。 同样地,可以实现电话呼出功能。用户在网页上选择拨打的目标号码,SIP.js将呼叫请求发送给FreeSWITCHFreeSWITCH通过拨号规则将呼叫转发到外部电话网络,从而实现电话呼出功能。 此外,SIP.js和FreeSWITCH还可以实现电话转移功能。用户可以在通话中将电话转移到其他电话号码,通过SIP.js向FreeSWITCH发送转移请求,FreeSWITCH将通话转移到指定的目标电话。 另外,还可以通过SIP.js和FreeSWITCH实现电话保持功能。当用户需要将通话暂时保持时,SIP.js可以向FreeSWITCH发送保持请求,FreeSWITCH将通话暂停,并播放保持音乐。当用户想要恢复通话时,再次调用SIP.js的相应函数,FreeSWITCH将取消保持,恢复通话。 总结来说,SIP.js结合FreeSWITCH可以方便地实现WebRTC电话的呼入、呼出、转移和保持等功能。这些功能使得在网页端进行实时语音通信变得简单和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值