通過WebRTC實(shí)現(xiàn)實(shí)時(shí)視頻通信(二)

通過WebRTC實(shí)現(xiàn)實(shí)時(shí)視頻通信(一)
在上一篇文章中,我們講解了WebRTC的概述、歷史、安全性和開發(fā)者工具。接下來我們通過WebRTC的三個(gè)API來具體的講解構(gòu)建WebRTC的流程,這篇文章會(huì)對(duì)MediaStream進(jìn)行講解。
MediaStream (別名 getUserMedia)
MediaStream API 代表媒體數(shù)據(jù)流的同步。舉個(gè)例子,從相機(jī)獲取的視頻流的同步和跟蹤。
理解MediaStream最簡(jiǎn)單的方法應(yīng)該就是看看它的實(shí)際應(yīng)用:
-
在Chrome或Opera中, 打開這個(gè)demo simpl.info/gum。
-
打開命令行。
-
查看全局范圍的數(shù)據(jù)流變量。
每個(gè)MediaStream都有一個(gè)輸入,這個(gè)輸入可以理解成MediaStream生成的一個(gè)導(dǎo)航器。getUserMedia()可以傳輸視頻元素或者是RTCPeerConnection。
getUserMedia()方法有三個(gè)參數(shù):
-
一個(gè) 約束對(duì)象
-
一個(gè)成功的回調(diào),如果成功會(huì)回傳一個(gè)MediaStream
-
一個(gè)失敗的回調(diào),如果失敗會(huì)回傳一個(gè)error對(duì)象。
每個(gè)MediaStream都有一個(gè)標(biāo)簽,像'Xk7EuLhsuHKbnjLWkW4yYGNJJ8ONsgwHBvLQ'一樣,getAudioTradks()和getAudioTracks()方法會(huì)回傳一個(gè)MediaStreamTracks對(duì)象的數(shù)組。
針對(duì) simpl.info/gum 這 個(gè)例子來說,stream.getAudioTracks() 返回了一個(gè)空數(shù)組 (因?yàn)闆]有音頻) , 假設(shè)已經(jīng)有一個(gè)攝像頭連接成 功,getVideoTracks()會(huì)返回一個(gè)MediaStreamTrack對(duì)象的數(shù)組, 這個(gè)數(shù)組代表從攝像頭得到的數(shù)據(jù)流。每個(gè) MediaStreamTrack都有一個(gè)類型 ('video' 或 'audio'), 和一個(gè)標(biāo)簽(代表一個(gè)或多個(gè)頻道的音頻或視頻),在這個(gè)例子 中,只有video track,但是很容易想象到可以用到這個(gè)例子的地方,比如一個(gè)聊天應(yīng)用程序的前置攝像頭、后置攝像頭,一個(gè)屏幕分享軟件等等。
在Chrome或Opera中, URL.createObjectURL() 方法把MediaStream 轉(zhuǎn)換成了一個(gè) Blob URL,Blob URL可以看成一個(gè)視頻元素的src。 (在Firefox和Opera中,視頻的src可以通過數(shù)據(jù)流本身設(shè)定)。
getUserMedia 也可以作為網(wǎng)絡(luò)音頻API的輸入節(jié)點(diǎn):
。。。。。


浙公網(wǎng)安備 33010602011771號(hào)