(3)Kurento之系统搭建I-KMS6.0

首先,要搭建的自然是KMS。注意:KMS必须安装在Ubuntu 14.04 LTS 64位上!按照官网文档:

echo "deb http://ubuntu.kurento.org trusty kms6" | sudo tee /etc/apt/sources.list.d/kurento.list 
wget -O - http://ubuntu.kurento.org/kurento.gpg.key | sudo apt-key add -
sudo apt-get update 
sudo apt-get install kurento-media-server-6.0

一般情况下,按照此步骤即可快速安装。但有时候会出现apt-get update 执行失败的情况。出现这种情况多由网络问题引起,请多次尝试!

安装完成后即可启动服务和停止服务:

sudo service kurento-media-server-6.0 start
sudo service kurento-media-server-6.0 stop

同时,restart是重启,status是查看当前状态。也可以输入ps aux查看KMS的运行进程

kurento 8819 0.1 5.9 1256452 60116 ? Sl Jan10 2:05 /usr/bin/kurento-media-server

输入netstat -nalp查看KMS端口监听状态:

tcp6 0 0 :::8888 :::* LISTEN 8819/kurento-media-
tcp6 0 0 127.0.0.1:8888 127.0.0.1:47739 ESTABLISHED 8819/kurento-media-
tcp6 0 0 127.0.0.1:8888 127.0.0.1:47738 ESTABLISHED 8819/kurento-media-

至此,基本做了较为完整的确认工作——KMS已经正常运行。运行进程号8819,监听端口号 8888.

默认KMS的运行日志在/var/log/kurento-media-server/media_server_<时间戳>_<进程号>.log

如果系统中已经安装了Kurento媒体服务器 5.0或更早的版本,务必更新到6.0版,6.0版本比5.0版本更新了大量的API,并且不向下兼容。你可以用以下命令卸载旧版本的Kurento媒体服务器:

sudo apt-get remove kurento-media-server 
sudo apt-get purge
kurento-media-server 
sudo apt-get autoremove 
sudo rm /etc/apt/sources.list.d/kurento* 
sudo vi /etc/apt/sources.list

其中随后一行命令即是添加软件源,可以打开后查看是否已经删除原来的软件源,然后运行上述安装6.0版本的命令重新安装即可!

如果你的主机处在公网下,则至此已经完成所有安装,如果在NAT下,则必须配置stun/turn服务器。关于是否处在NAT下,可以运行

ifconfig

命令查看网卡地址是否是公网:

eth0 Link encap:Ethernet HWaddr 00:16:3e:02:a6:a6
inet addr:172.18.66.147 Bcast:172.18.79.255 Mask:255.255.240.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:853872 errors:0 dropped:0 overruns:0 frame:0
TX packets:519751 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:498802005 (498.8 MB) TX bytes:203814660 (203.8 MB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6876 errors:0 dropped:0 overruns:0 frame:0
TX packets:6876 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:2744159 (2.7 MB) TX bytes:2744159 (2.7 MB)

可以看到172.18.66.147是私网地址,虽然我的主机(阿里云)分配的公网地址,且可以直接访问公网地址来访问我的私网,但猜想是阿里云做了某种类似与映射的关系。还记的我之前在WebRTC中叙述的通信架构问题:对端是无法直接获取对方的的IP地址,必须由信令服务器转交,所以虽然主机的公网可以直接访问,但是由于对端并不知道(或者只能获取私网)所以私网对应的公网(也即反射地址)必须由第三方告知。(关于候选地址的获取和交换机制问题,由于我在对此套系统抓包时发现,KMS服务器可以和Browser直接发送stun报文,所有还有一些疑问,关于这点会在以后的源码分析中,继续找寻答案)

如果确定主机已经处在NAT后,则可以编辑文件:

/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini

找到下列语句先将这两句取消注释,把尖括号里的内容替换成具体的IP地址和端口号,如:

stunServerAddress= 77.72.169.166
stunServerPort=3478

配置TURN 服务器,先打开配置文件
/etc/kurento/modules/kurento/WebRtcEndpoint.conf.ini

找到下列语句turnURL=user:password@address:port;

取消注释,填上可用的TURN 服务器地址、端口、用户名和密码。

turnURL=kurento:[email protected]:3478;

注意,上述的示例地址不一定能正常工作,请在使用的主机上测试上述地址的可用性,由下面的网址进行测试:

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

注意,请在自己的使用的主机上测试,因为很可能出现同一服务器下一台主机下可以获取候选地址,另一台不能获取的结果。(但是,阿里云ubuntu服务器没有浏览器界面,正好我租用了一台同样拓扑结构的图形界面主机。)对于无法登陆网站测试的用户来说。也可以整套系统运行时(包括通信对端),查看不同端的运行日志(KMS运行日志,浏览器运行日志等)都可以查看获取的候选地址列表。一般情况下,只有候选地址包括公网地址才能成功通信。当然也可以自己搭建stun/turn服务器!

发布了50 篇原创文章 · 获赞 150 · 访问量 14万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章