第42篇 WebRTC(五)

一、禁用一對一的視頻

1.1含有video:true的共有11項,

分佈在三個文件中,RTCMultiConnection.js(5個),Scalable-Broadcast.js(1個),dist/rmc3.js(5個),全部改成video:false。

二、webrtc研究

2.1 多設備處理

目前僅支持谷歌瀏覽器,運行如下函數:

運行結果:

發現有兩個攝像頭,一個麥克風,點擊上圖中黃色鏈接:

由此可知:不支持火狐、IE、Safari、Web Developers。

在其他瀏覽器中,就沒嵌入這個接口函數,報錯如下:

2.2拍照室

拍照室用到Canvas,Canvas是一系列在屏幕上繪制線條、圖形和圖片的API,因其可以制作遊戲並且實現其他交互作用,從而在web平臺上流行起來。

代碼如下:

結果如下:

按下Capture:

再次單擊Capture:

變色代碼:

瀏覽器適配代碼:

註:由上圖可知,捕捉的還是有些誤差。不過,大體上能說的過去。

2.3RTCPeerConnection

實時傳輸要求雙方間有快速的連接速度,需要將音頻和視頻都放在同一幀中,並以每秒40到60幀的速度發送給另一個用戶,以此來獲得較好的效果。在這個過程中,允許部分數據幀丟失,因為目標是及時傳送最新的數據幀,不是確保每一幀都不丟失。

因為大腦的特性,丟失個別幀我們感覺不到,不會影響視聽。

2.4 webrtc應用的傳輸協議

用的是用戶數據報協議(UserDatagram Protocol,UDP),但目前大多數網絡都建立在TCP上,TCP:Transmission Control Protocol(傳輸控制協議)優點如下:

a.任何發出的數據都有送達的確認

b.任何未到達接收端的數據會被重傳並停止發送更多的數據

c.數據是惟一的,接收端不會有重復的數據

這些優點可以保證網絡數據的質量,但並不適合所有網絡,比方多人遊戲,如果每一幀都要傳過去,可能會卡。所以,webrtc選擇瞭UDP作為傳輸協議,TCP作為協助協議。UDP特性如下:

a.它不保證數據發送或接收的先後順序。

b.它不保證每一個數據包都能夠傳送到接收端;一些數據可能半路丟失。

c.它不跟蹤每一個數據包的狀態,即使接收端有數據丟失也會繼續傳輸。

但遺憾的是並不是所有網絡都支持UDP傳輸協議,比方說:企業級防火墻的大型網絡會完全阻止UDP,對此,webrtc也做瞭一些策略。

2.5WebRTC API

建立點到點連接,涉及的主要技術如下:

a.RTCPeerConnection對象

b.信號傳遞和交涉

c.會話描述協議(SDP)

d.交互式連接建立(ICE)

You May Also Like