(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萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章