Win10 WSL下安装WebRTC网关Janus及与FreeSwitch互通

这几天发现了Janus,这是一个WebRTC的通用网关,至于WebRTC网关到底是啥,为啥需要它,有个文章可以参考下:
What is a WebRTC Gateway anyway? (Lorenzo Miniero) https://webrtchacks.com/webrtc-gw/
简单来说就是在通信领域用WebRTC与其他系统比如FreeSwitch下的设备进行通信,需要用WebRTC网关来做数据转发

看了下官网demo很不错,于是准备自己搭个环境测试下效果,
目标:

使用浏览器与FreeSwitch下注册的SIP电话进行通话

环境准备:
1:一台SIP电话机,我手上刚好有一GrandStream的SIP话机(也可以是软电话如xLite)
2:一台笔记本电脑带WSL的Windows 10(我用的版本是10.0.16299.371)
3:FreeSwitch 1.6.18 (windows版本,目前Debian 9与FreeSwitch还不兼容20180509)

4:WSL安装debian,版本是9.4(cat /etc/debian_version)

大致计划:
1:将FreeSwitch安装到Windows系统上
2:将SIP话机注册到FreeSwitch上
3:将Janus安装到WSL上的Debian系统上

4:使用Janus的demo:SIP Gateway(Sofia)与SIP话机测试呼叫

步骤:
1:安装FreeSwitch 1.6
到FreeSwitch网站下载安装包FreeSWITCH-1.6.18-x64-Release.msi
http://files.freeswitch.org/windows_installer/installer/x64/FreeSWITCH-1.6.18-x64-Release.msi

安装完后,在SIP话机上设置注册到FreeSwitch上,这里我用1000号码,登录成功后,
打开fs_cli,输入命令:
sofia status profile internal reg

可以看到以下输出,证明1000号已经注册上来了

freeswitch@███████> sofia status profile internal reg

Registrations:
=================================================================================================
Call-ID:        [email protected]
User:           [email protected]
Contact:        "" 
Agent:          Grandstream GXV3275 1.0.3.86
Status:         Registered(UDP)(unknown) EXP(2018-05-09 16:51:30) EXPSECS(3361)
Ping-Status:    Reachable
Ping-Time:      0.00
Host:           ███████
IP:             192.168.0.104
Port:           5060
Auth-User:      1000
Auth-Realm:     192.168.0.147
MWI-Account:    [email protected]

Total items returned: 1
=================================================================================================
也可以用
originate user/1000 &echo

来测试一下话机是否能正常呼叫


2:在WSL的Debian上安装Janus

WSL确实是好东东,方便快捷不用折腾虚拟机或者双系统了,超喜欢
按照github上的关于Debian部分的安装说明即可

https://github.com/meetecho/janus-gateway

需要额外说明的是,libsrtp的默认安装是1.4版本,比较旧,但是按Janus上的说明下载v2.0.0.tar.gz后编译也失败,提示的错误大概是这样:
crypto/include/aes_gcm_ossl.h:58:20: error: field 'ctx' has incomplete type
按stackoverflow上说得解决方法是,下载2.1版本

参考链接:https://stackoverflow.com/questions/47518843/error-field-ctx-has-incomplete-type-evp-cipher-ctx

安装完后,Janus安装位置是/opt/janus,按如下命令启动Janus:

root@███████:/opt/janus/bin# ./janus
Janus commit: e64e67e4c59433903e5262890c0346d121ba31a5
Compiled on:  Wed May  9 14:18:27 DST 2018

---------------------------------------------------
  Starting Meetecho Janus (WebRTC Gateway) v0.4.0
---------------------------------------------------

Checking command line arguments...
Debug/log level is 4
Debug/log timestamps are disabled
Debug/log colors are enabled
Adding 'vmnet' to the ICE ignore list...
Using 192.168.0.147 as local IP...


3:访问Janus的demo,其安装位置是:

/opt/janus/share/janus/demos

cd到这个目录后,使用以下命令用python搭个临时的web服务:

python -m SimpleHTTPServer 8080

看到以下输出就证明成功了:

nickwar@███████:/opt/janus/share/janus/demos$ python -m SimpleHTTPServer 8080
Serving HTTP on 0.0.0.0 port 8080 ...
然后在Chrome中就可以通过以下URL打开demo了:

http://127.0.0.1:8080

然而,在我机器上发现无法访问这个端口,虽然python没有报错,搞了几十分钟后发现可能是我安装的Array SSL的客户端带的一个驱动文件导致(C:\Windows\System32\drivers\tdi64.sys),
果断卸载后重启电脑,访问正常了,具体解决方法参考网页:

https://github.com/Microsoft/WSL/issues/1554


4:最后一步,使用sip demo呼叫,

首先在demo页面中填写信息注册到FreeSwitch上,注册成功后,在FreeSwitch控制台中输入查询命令可以看到注册状态:

freeswitch@███████> sofia status profile internal reg

Registrations:
=================================================================================================
Call-ID:        [email protected]
User:           [email protected]
Contact:        "" 
Agent:          Grandstream GXV3275 1.0.3.86
Status:         Registered(UDP)(unknown) EXP(2018-05-09 16:51:30) EXPSECS(2101)
Ping-Status:    Reachable
Ping-Time:      0.00
Host:           ███████
IP:             192.168.0.104
Port:           5060
Auth-User:      1000
Auth-Realm:     192.168.0.147
MWI-Account:    [email protected]

Call-ID:        1495a039-ce04-1236-86aa-ec8eb59c4623
User:           [email protected]
Contact:        "nw" 
Agent:          Janus WebRTC Gateway SIP Plugin 0.0.7
Status:         Registered(UDP)(unknown) EXP(2018-05-09 17:17:13) EXPSECS(3644)
Ping-Status:    Reachable
Ping-Time:      0.00
Host:           ███████
IP:             192.168.0.147
Port:           55715
Auth-User:      1001
Auth-Realm:     192.168.0.147
MWI-Account:    [email protected]

Total items returned: 2
=================================================================================================
输入sip:[email protected]然后点击Call就可以发起呼叫了,很方便。

视频呼叫也试了一下,能发起呼叫,但是看不到视频,demo页面上说了有问题,果然是有问题,没有再深入了解。


贴俩图:

Win10 WSL下安装WebRTC网关Janus及与FreeSwitch互通_第1张图片


Win10 WSL下安装WebRTC网关Janus及与FreeSwitch互通_第2张图片


总结:

1:Janus网关的demo包含了设备设置、SIP对接、语音视频流播放,音视频会议,这些功能,基本上就可以满足交换平台对接的各种应用场景需求,值得研究

2:WSL(Windows Subsystem for Linux)相当给力,强烈推荐

你可能感兴趣的:(视频及流媒体开发)