日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

Web平臺(tái)上的WebRTC并不是其唯一的媒體API。WebVR說明書于幾年前被引入來為瀏覽器中的虛擬現(xiàn)實(shí)設(shè)備提供支持。目前已經(jīng)變?yōu)樾碌腤ebXR設(shè)備API說明書。

今年夏天我在ClueCon,Dan Jenkin說使用WebVR,FreeSWITCH向虛擬現(xiàn)實(shí)環(huán)境中添加一個(gè)WebRTC視頻會(huì)議流是相對(duì)簡(jiǎn)單的。FreeSWITCH是一個(gè)流行的開源電話平臺(tái),并且已經(jīng)擁有WebRTC有幾年時(shí)間了。WebRTC, WebVR,開源-很明顯這是很好的webrtcHacks材料。

Dan是一個(gè)google開發(fā)專家,他喜歡講將最新的Web API和RTC App結(jié)合起來. 以下文章給出了他的代碼來說明他是如何使用WebVR將FreeSWITCH Verto WebRTC視頻會(huì)議轉(zhuǎn)變成虛擬現(xiàn)實(shí)會(huì)議的。

使用WebRTC和WebVR進(jìn)行VR視頻通話

 

幾周之前,我參加了一個(gè)關(guān)于WebRTC和WebVR的ClueCON開發(fā)者會(huì)議。將VR內(nèi)容加入你的瀏覽器和移動(dòng)電話會(huì)增加App的潛力,吸引更多人。在過去的兩三年內(nèi),伴隨著Google的Cardboard,VR對(duì)于手機(jī)來說已經(jīng)可以負(fù)擔(dān)得起,并被廣泛使用,同時(shí)Oculus Go完全不需要移動(dòng)設(shè)備。我想探索對(duì)于App如何在WebRTC媒體中使用這種新的廉價(jià)媒介。

事實(shí)上,在向Call For Papers上傳討論之前我對(duì)于WebVR并沒有任何頭緒,但是我知道在看到其它演示之后我可能有所收獲。我認(rèn)為只需要勇敢向前,上傳一段瘋狂的討論,并看看有誰認(rèn)同。

A-Frame 框架

開始WebVR有幾種方法,我選擇使用一個(gè)叫做A-Frame的框架,它允許我寫入一些html并引入JAVAScript庫(kù),直接建立VR體驗(yàn)。盡管演示不像我期待的那樣,但是這說明你確實(shí)可以用很少的代碼實(shí)現(xiàn)令人驚訝的VR體驗(yàn)。

如果你熟悉Web組成,你會(huì)直接知道A-Frame在做什么。現(xiàn)在,你可能會(huì)問為什么我會(huì)用它而不是直接使用WebGL,WebVR polyfill和Three.js來創(chuàng)建WebGL對(duì)象或者另外一種框架。簡(jiǎn)單來說,我喜歡少寫代碼,A-Frame看起來滿足這一點(diǎn)。

如果你不喜歡A-Frame,你可以試試其它選擇,例如webvr.info上的React360.

使用WebRTC建立WebVR體驗(yàn)

如今使用A-Frame可以實(shí)現(xiàn)多種WebRTC VR體驗(yàn)。Mozilla 團(tuán)隊(duì)實(shí)現(xiàn)了一種,在VR場(chǎng)景中,用戶可以相互看到用點(diǎn)表示的對(duì)方,并且可以聽到對(duì)方的聲音。他們使用WebRTC Data Channels 和WebRTC Audio實(shí)現(xiàn)了這個(gè)過程,但是我并不能找到任何使用了WebRTC視頻的地方,因此引出了一個(gè)如何在3D環(huán)境中使用實(shí)時(shí)視頻的挑戰(zhàn)。

我的演示基于開源FreeSWITCH Verto Communicator。Verto使用了WebRTC,并且我已經(jīng)知道如何在FreeSWITCH中使用Verto客戶端庫(kù)與Verto組件交流,因此已經(jīng)完成了一半的挑戰(zhàn)。Verto客戶端庫(kù)是發(fā)信部分—替換Websocket上的SIP,將SIP PBX與WebRTC斷點(diǎn)連接。

HTML

請(qǐng)查看我向Verto Communicator中添加的A-Frame代碼,一共只有8行。

使用WebRTC和WebVR進(jìn)行VR視頻通話

 

首先a-scene元素創(chuàng)建了一個(gè)場(chǎng)景,包含了VR體驗(yàn)中所有過程,空的a-assets標(biāo)簽用來放入我們的WebRTC視頻標(biāo)簽。

下一行a-entity是使用戶沉浸的簡(jiǎn)單體驗(yàn)中最重要的一行。它是一個(gè)a-frame整體,具有預(yù)先配置的環(huán)境,將整體體驗(yàn)分步。

其它的entities負(fù)責(zé)攝像頭和幻想控制。查看建立3D形狀和對(duì)象時(shí),你可以用的A-frame中支持的組件。

這些只是將場(chǎng)景集合起來,接下來我們建立控制邏輯代碼,使用JavaScript.

JavaScript

Verto Communicator是一個(gè)angular based的App,因此元素可以被加入或移出主應(yīng)用空間。我們需要一些邏輯來連接Verto和A-frame。這個(gè)邏輯所需代碼不到40行:

function link(scope, element, attrs) {
  var newVideo = document.createElement('a-video');
  newVideo.setAttribute('height', '9');
  newVideo.setAttribute('width', '16');
  newVideo.setAttribute('position', '0 5 -15');
  console.log('ATTACH NOW');
  var newParent = document.getElementsByClassName('video-holder');
  newParent[0].appendChild(newVideo);
  window.attachNow = function(stream) {
    var video = document.createElement('video');
    var assets = document.querySelector('a-assets');
    assets.addEventListener('loadeddata', () => {
      console.log('loaded asset data');
    })
    video.setAttribute('id', 'newStream');
    video.setAttribute('autoplay', true);
    video.setAttribute('src', '');
    assets.appendChild(video);
    video.addEventListener('loadeddata', () => {
      video.play();
      // Pointing this aframe entity to that video as its source
      newVideo.setAttribute('src', `#newStream`);
    });
    video.srcObject = stream;
  }

當(dāng)你使用Verto Communicator app進(jìn)入會(huì)議界面時(shí),以上Link函數(shù)被安裝。

修改Verto

如你所見,當(dāng)鏈接被調(diào)用時(shí),它將會(huì)創(chuàng)建一個(gè)新的視頻元素并賦予其寬度和高度屬性,將它添加到3D環(huán)境中。

AttachNow函數(shù)是real magic發(fā)生的地方,我修改了Verto庫(kù),當(dāng)一個(gè)session被建立時(shí),調(diào)用一個(gè)叫attachNow的函數(shù)。默認(rèn)情況下,Verto庫(kù)使用jQuery形式的標(biāo)簽來初始化,并向標(biāo)簽中添加或移出媒體。我需要一個(gè)流來自己管理,這樣就可以向以上我展示的空對(duì)象中加入video標(biāo)簽。這就可以使A-Frame實(shí)現(xiàn)它的邏輯—獲取數(shù)據(jù)并加載到3D環(huán)境中a-video標(biāo)簽中一個(gè)canvas。

我還向vertoService.js里添加了一個(gè)函數(shù):

function updateVideoRes() {
    data.conf.modCommand('vid-res', (unmutedMembers * 1280) + 'x720');
    attachNow();
    document.getElementsByTagName('a-video')[0].setAttribute('width', unmutedMembers*16);
  }

UpdateVideoRes被設(shè)計(jì)成改變FreeSWITCH的Verto會(huì)議的輸出分辨率。當(dāng)用戶加入會(huì)議時(shí),我們想在3D環(huán)境下創(chuàng)建一個(gè)更長(zhǎng)的視頻展示。必要的,每次有新成員加入時(shí),我們將輸出延長(zhǎng),這樣用戶就可以在每一端看到其他用戶。

視覺

這是最終結(jié)果,一個(gè)VR環(huán)境,包括我和Simon Woodhead。

使用WebRTC和WebVR進(jìn)行VR視頻通話

 

關(guān)于WebVR有一點(diǎn)很不錯(cuò),為了讓它全部工作, 你不需要具有VR耳機(jī),你只需要點(diǎn)擊按鈕,就可以得到全屏的VR體驗(yàn),就像你帶了一個(gè)VR耳機(jī)一樣。你可以查看YouTube上的視頻.

我們學(xué)到了什么?

這個(gè)演示只有一半起到了效果,最大的收獲就是即使只有一半演示有效,這也是一個(gè)觀看視頻會(huì)議不錯(cuò)的方式。對(duì)于VR觀看者來說,當(dāng)他們使用耳機(jī)觀看時(shí),將他們加入流中不是一個(gè)可行的方案。可能這就是為什么微軟的HoloLens要使用混合現(xiàn)實(shí)優(yōu)化它的原因。

所有代碼:

代碼可以在bitbucket上找到。

分享到:
標(biāo)簽:通話 視頻 VR
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定