1. 程式人生 > >(3)Kurento之系統搭建I-KMS6.0

(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;

注意,上述的示例地址不一定能正常工作,請在使用的主機上測試上述地址的可用性,由下面的網址進行測試:

注意,請在自己的使用的主機上測試,因為很可能出現同一伺服器下一臺主機下可以獲取候選地址,另一臺不能獲取的結果。(但是,阿里雲ubuntu伺服器沒有瀏覽器介面,正好我租用了一臺同樣拓撲結構的圖形介面主機。)對於無法登陸網站測試的使用者來說。也可以整套系統執行時(包括通訊對端),檢視不同端的執行日誌(KMS執行日誌,瀏覽器執行日誌等)都可以檢視獲取的候選地址列表。一般情況下,只有候選地址包括公網地址才能成功通訊。當然也可以自己搭建stun/turn伺服器!