此次的需求,準備作的是一個相似與QQ視頻同樣的點對點視頻聊天。這幾天瞭解了一些知識後,決定使用HTML5新支持的WebRtc來做爲視頻通信。客戶端使用支持HTML5瀏覽器便可。服務器段須要提供兩個主要的服務功能,一個是信令服務器(Signaling Server),一個是NAT穿透服務器(ICE Server)。簡單的框架圖以下:html
1.安裝e2esoft vcam 虛擬攝像頭node
因爲我本地是臺式電腦,沒有攝像頭,另外一方面,爲了調試的方便,安裝這個虛擬攝像頭。
我是在這裏下載的http://www.loveliao.com/downfiles/VCam_v4.5.exegit
2.安裝信令服務器github
網上信令服務器大可能是以nodejs寫的。這裏以skyrtc爲例,進行演示。web
1 apt-get install nodejs npm 2 git clone https://github.com/LingyuCoder/SkyRTC-demo 3 cd SkyRTC-demo 4 npm install 5 nodejs server.js
這樣瀏覽器訪問本地http://localhost:3000就能夠訪問了。(主要chrome好像46以上版本,除了本地localhost和127.0.0.1本地調試外,其餘的訪問方式,必需要https。不然不能運行。PC端和移動端好像都是這樣) Chrome報錯以下:chrome
這裏準備用Firefox進行演示。移動端也是用Firefox進行演示。npm
手機端,用Firefox瀏覽器查看的效果。segmentfault
3.安裝coturn(開源的iceserver)瀏覽器
這個跟谷歌開源的rfc5766-turn-server 是相似的,這裏我使用coturn服務器
1 git clone https://github.com/coturn/coturn 2 cd coturn 3 ./configure 4 make 5 make install
安裝後在coturn/examples/etc 目錄下使用該命令執行
turnserver -o -a -f -v --mobility -m 10 --max-bps=100000 --min-port=32355 --max-port=65535 --user=ling:ling1234 --user=ling2:ling1234 -r demo
這樣就啓動好了,默認的監聽端口是3478
4.修改WebRtc 客戶端配置
修改Skyrtc-demo/public/SkyRTC-client.js
免費公開的stun+turn 服務器 : https://gist.github.com/yetithefoot/7592580
5.運行,查看效果
root@debian-srv:~/workspace/SkyRTC-demo# nodejs server.js
瀏覽器打開兩個頁面
一個PC端 一個移動端
親測,移動4G能夠跟我當前的網絡穿透成功,可是移動3G不行。其餘的網絡網絡運營商沒有測試。單靠這些,作着玩玩還能夠,距離產品還差十萬八千里呢。當下的網絡仍是比較複雜的,IPv4告急,有些ISP分配的IP的還有多是內網的,有些大機構的網絡仍是對稱性NAT。而對於對稱型NAT是基本不能穿透的。要通過轉發, 而轉發視頻對帶寬的消耗是很大的。真的是但願IPv6早點普及。
參考資料:
webrtc資料:
https://segmentfault.com/a/1190000000439103
https://bitbucket.org/webrtc/codelab/overview
https://github.com/LingyuCoder/SkyRTC-demo
http://xiaol.me/2014/08/24/webrtc-stun-turn-signaling/
http://www.mamicode.com/info-detail-513556.html
https://simplewebrtc.com/
https://gist.github.com/yetithefoot/7592580
ICEServer資料
https://github.com/coturn/coturn http://www.cnblogs.com/lingdhox/p/4209659.html