WebRTC筆記
-
簡介
網(wǎng)頁即時通信(Web Real-Time Communication)是一個支持網(wǎng)頁瀏覽器進行實時語音對話或視頻對話的API。目的主要是讓Web開發(fā)者能夠基于瀏覽器(Chrome\FireFox...)輕易快捷開發(fā)出豐富的實時多媒體應用,而無需下載安裝任何插件;Web開發(fā)者也無需關注多媒體的數(shù)字信號處理過程,只需編寫簡單的Javascript程序即可實現(xiàn)。
WebRTC提供了視頻會議的核心技術,包括音視頻的采集、編解碼、網(wǎng)絡傳輸、顯示等功能,并且還支持跨平臺:windows,linux,mac,android。
不能簡單地將 WebRTC 與 RTC 劃等號。
-
應用場景
視頻成了娛樂、學習、商務會議、社交、電商的載體,人們逐漸不再有耐心閱讀文字性的信息。視頻不僅是信息的展現(xiàn)方式,從單向的“錄制 上傳 下載 找播放器打開 播放”,變成了“現(xiàn)場錄制 邊錄邊播 實時收看”,再變成視頻與即時通訊工具、會議工具融合的雙向“錄制與播放”。實時視頻的目標,是把正在某個地方A發(fā)生的人和事,以幾乎零延遲、不失真的方式“同步”到另外一個地方 B,讓 B 的人瞬間看到、聽到,并且反之亦然。
Cloud Gaming,就是你不需要本地的光盤了,游戲在云端運行,然后通過流媒體的方式傳輸?shù)侥愕钠聊簧?,就像你在電視上點播電影一樣,但你用游戲手柄可以與“電影”互動。
元宇宙,是一個“仿真”或者說“全真”的互聯(lián)網(wǎng),它的特點之一,是利用極其強大的實時網(wǎng)絡,把物理世界里事物的無限細節(jié)信息化并瞬間傳播給接收者,使其通過一些特殊設備去復原這些信息并最大程度感受到在原發(fā)地事物的原本樣子。
-
項目開發(fā)
在項目中簡單實現(xiàn)了一下實時顯示錄像視頻,只應用到了接受流。主要使用了webrtc-adapter.js。
async function handleNegotiationNeededEvent(event) { var localePc = event.target; const offer = await localePc.createOffer(); await localePc.setLocalDescription(offer); _this.getRemoteSdp(localePc, equiUuid); } const privatePc = new RTCPeerConnection(config); privatePc.onnegotiationneeded = handleNegotiationNeededEvent; const privatestream = new MediaStream(); privatePc.ontrack = function(event) { privatestream.addTrack(event.track); privateVideoElem.srcObject = privatestream; }; privatePc.addTransceiver("video", { direction: "sendrecv" }); privatePc.addTransceiver("video", { direction: "sendrecv" }); getRemoteSdp(localePc, uuid) { const formData = new FormData(); formData.append("suuid", uuid); formData.append("data", window.btoa(localePc.localDescription.sdp)); getWebRtc(uuid, formData) .then(res => { localePc.setRemoteDescription( new RTCSessionDescription({ type: "answer", sdp: window.atob(res) }) ); }) .catch(e => { console.warn(e); }); } -
補充
WebRTC 成為下一代互聯(lián)網(wǎng)的實時應用基石,估計有點懸,因為確實有潛在的更優(yōu)解在那里。但是,對于應用開發(fā)者,未來幾年內(nèi),WebRTC可能就是我們的最優(yōu)解。
-
參考
1.https://baijiahao.baidu.com/s?id=1714740880954778889&wfr=spider&for=pc