1 使用FreeSWITCH将WebRTC视频会议流添加到虚拟现实环境中相对容易-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用FreeSWITCH将WebRTC视频会议流添加到虚拟现实环境中相对容易

LiveVideoStack 来源:未知 作者:李倩 2018-09-06 17:19 次阅读

本文来自Google的开发专家Dan Jenkins,他喜欢将最新的Web API与RTC应用程序混合在一起。他还在Nimble Ape经营自己的咨询和开发公司。本文中,他给出了一个代码实现——通过使用WebVR将FreeSWITCH Verto WebRTC视频会议转换为虚拟现实会议的。LiveVideoStack对原文进行了摘译。

WebRTC不是Web平台上唯一流行的媒体API。几年前推出了Web虚拟现实(WebVR)规范,以便在Web浏览器中为虚拟现实设备提供支持。此后,它已移植到较新的WebXR设备API规范了。

今年早些时候在ClueCon,Dan Jenkins在演讲中表示,使用FreeSWITCH将WebRTC视频会议流添加到虚拟现实环境中相对容易。FreeSWITCH是比较流行的开源电话平台之一,已使用WebRTC好几年了。

几周前,我在ClueCon开发者大会上发表了一篇关于WebRTC和WebVR的演讲——Web开发者可以使用的新媒体。将虚拟现实内容带入你的浏览器和手机对于具有新人口统计数据的应用程序具有巨大潜力。在过去的两三年里,虚拟现实已经绝对可以负担得起,并且可以广泛使用,最近的手机使用Google的Cardboard,而现在的“白日梦”也适用于一些高端手机。还有Oculus Go,它根本不需要移动设备。我想探索如何将这种新的经济实惠的媒体用于WebRTC媒体应用。

老实说,当我将论文提交给征集文件中心时,我对WebVR一无所知,但我知道在看到其他演示能够实现的结果后,我可能会得到一些有用的东西。我似乎有时间去做一些新的、令人兴奋的事情,唯一的办法就是直接在Call For Papers去做一个疯狂的演讲。

注意:从技术上讲,它现在是“WebXR”,但我会坚持使用这篇文章中更常见的“VR”。

A-Frame框架

有很多方法可以开始使用WebVR,但我采用的方法是使用一个名为A-Frame的框架,它允许你编写一些HTML,并引入一个JavaScript库并立即开始构建VR体验。虽然演示并没有像我希望的那样完美,但它确实证明了你可以用非常少的代码构建出色的虚拟现实体验。

如果你对Web组件感到很满意,你就会马上意识到A-Frame的作用。现在,你可能会问为什么我沿着A-Frame路线走而不是直接使用WebGL以及使用WebVR polyfill和Three.js创建WebGL对象或许多其他框架中的一个。简单地说,我喜欢尽可能的少编写代码,而A-Frame框架似乎是为我量身定做的。

如果你不喜欢A-Frame框架,可在webvr.info上查看其他可用选项,如React 360。

使用WebRTC和Freeswitch构建WebVR

今天使用A-Frame框架可以获得一些WebRTC VR体验。在Mozilla的团队做了一个用户可以彼此看到表示为VR场景的点,并能听到彼此的声音。他们能够使用WebRTC数据通道和WebRTC音频来实现这一点,但我真的没有找到任何使用WebRTC视频的方法,因此开始了如何在3D环境中使用实时视频的挑战。

我演讲的演示基础是开源的FreeSWITCH Verto Communicator。Verto使用WebRTC,我已经知道如何使用Verto客户端库与FreeSWITCH中的Verto模块通信,因此已经打过了一半的战斗。Verto客户端库是信令部分——在将SIP PBX连接到WebRTC端点的更常见体验中,通过WebSocket替换SIP。

HTML

看一下我最终添加到Verto Communicator的A-Frame代码。总共有8行HTML:

首先,我们有一个“a-scene”元素,它创建了一个场景,其中包含了与你的VR体验相关的所有内容。空的“a-assets”标签是我们稍后放置WebRTC视频标签的地方。

接下来的“a-entity”线是一个“简单”的让用户沉浸其中的体验。它是一个具有森林预设环境的a-frame框架实体 - 基本上可以引导我们的整个体验。

剩下的实体用于我们的相机和我们的daydream控制。查看带有a-frame框架的可用组件以及可以使用的基本体来创建3D形状和对象。

这一切只是把我们的场景组合在一起。接下来,我们将使用一些JavaScript设置我们的控制逻辑代码。

JavaScript

Verto 通信器是一个基于角度的应用程序,因此可以从主应用程序空间添加和删除元素。我们需要一些逻辑来将Verto链接到我们的A-Frame设置。大多数逻辑少于40行JavaScript:

functionlink(scope,element,attrs){varnewVideo=document.createElement('a-video');newVideo.setAttribute('height','9');newVideo.setAttribute('width','16');newVideo.setAttribute('position','05-15');console.log('ATTACHNOW');varnewParent=document.getElementsByClassName('video-holder');newParent[0].appendChild(newVideo);window.attachNow=function(stream){varvideo=document.createElement('video');varassets=document.querySelector('a-assets');assets.addEventListener('loadeddata',()=>{console.log('loadedassetdata');})video.setAttribute('id','newStream');video.setAttribute('autoplay',true);video.setAttribute('src','');assets.appendChild(video);video.addEventListener('loadeddata',()=>{video.play();//PointingthisaframeentitytothatvideoasitssourcenewVideo.setAttribute('src',`#newStream`);});video.srcObject=stream;}

当你前往Verto Communicator应用程序中的会议页面时,将会加载上面的“link”函数。

修改Verto

你可以看到,当链接被调用时,它将创建一个新的“a-video”元素,并为其提供宽度和高度的一些属性,以及将其放置在我们的3D环境中的位置。

这个“attachNow”函数才是真正神奇的地方——当一个会话启动时,我修改了Verto库,在名为attachNow的窗口上调用一个函数。默认情况下,Verto库将初始化jQuery样式标记,并为你添加/删除该标记的媒体。这对我来说是不可能的——我需要获得一个流并且能够自己进行操作,这样我就可以将视频标签添加到我上面显示的所需空资产组件中。这让A-Frame可以发挥其神奇作用——从资产中获取数据并将其加载到在3D环境中显示的“a-video”标签内的画布上。

我有另外一个函数移动到了vertoServices.js中:

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

“updateVideoRes”旨在改变FreeSWITCH的Verto会议的输出分辨率。随着用户加入会议,我们希望在3D环境中创建一个越来越长的视频显示。实质上,每次我们获得新成员时,我们都会使输出变得越来越长,这样用户就会并排出现。

可视化

这就是最终的结果,在这个3D环境中,Simon Woodhead和我一起在一个“电影放映”中创建了一个虚拟现实环境。

Verto WebVR会话的2D视图

关于WebVR的真正伟大之处在于,你无需使用VR耳机即可完成所有工作,你可以单击纸板按钮,你的虚拟现实体验将变成全屏显示,就像你戴着耳机一样。你可以在YouTube上观看ClueCon上的视频(https://youtu.be/FxIlzFs4A7o)

我们学到了什么?

演示的一半成功了,另一半没有。最大的学习是,尽管这可能是观看视频会议的绝妙方式,但将虚拟现实观众包括在视频会议中是不可行的。 当他们戴着耳机看着它的时候。也许这就是微软的HoloLens通过混合现实使事情变得更好的地方。

所有代码

代码可以在我的bitbucket(https://bitbucket.org/nimbleape/freeswitch/branches/compare/webvr..#diff)找到,直到我们弄清楚如何解决FreeSWITCH的git历史记录损坏的问题(https://freeswitch.org/jira/browse/FS-11338),这意味着您无法在其他任何地方托管代码(例如我首选的git store,github)——让FreeSWITCH团队知道你是否遇到与该链接相同的问题。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • WebRTC
    +关注

    关注

    0

    文章

    57

    浏览量

    11239
  • VR视频
    +关注

    关注

    0

    文章

    17

    浏览量

    8167

原文标题:使用WebRTC和WebVR进行VR视频通话

文章出处:【微信号:livevideostack,微信公众号:LiveVideoStack】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    虚拟现实

    虚拟现实技术是一种可以创建和体验虚拟世界的计算机仿真系统它利用计算机生成一种模拟环境是一种多源信息融合的交互式的三维动态视景和实体行为的系统仿真使用户沉浸到该环境
    发表于 03-10 16:56

    什么牌子的视频会议系统好?

    视频会议系统稳定性肯定是好的这里所说的稳定性包含两方面,一方面是视频会议系统本身的稳定,不需要专人维护调试,开启即可使用;另一方面就是对网络的适应性要好,能在不同的网络环境稳定的开视频会议
    发表于 04-26 17:49

    第十六届中国虚拟现实大会(China VR 2016)

    专业委员会和中国图象图形学学会虚拟现实专业委员会持续联合举办CCVRV学术年会。2007年,中国系统仿真学会虚拟现实技术应用专委会加入会议的举办,本会办成了国内
    发表于 08-19 17:42

    老子云如何摆脱虚拟现实带来的“虚拟”感?

    添加的物体模型和材质能够更真实的模拟该场景在各种情况下各种阶段的状况。无疑,老子云上所达到的身临其境效果,远远超过了拼图式全景视频实现的效果,做到真正可交互的虚拟现实,我有点期待,它会给虚拟现
    发表于 05-24 13:47

    MCU与视频会议系统

    是必须要具备的管理功能,MP则视终端处对视频的处理能力及整体环境架构而有取舍的余地。 2、视频会议的组成会议系统的组成非常简单,每个会场安放一台视频
    发表于 06-14 14:35

    SD-WAN如何支持视频会议

    问题感到沮丧,而高管们也看不到他们的价值。软件定义的广域网和网络功能虚拟化等新兴技术可确保高质量的视频会议,无论距离和站点跨越多大,从公司总部到分支机构,再到全球各地的办公室。视频会议正在成为企业日常
    发表于 07-12 14:08

    视频会议终端和MCU有哪些差异

    原标题:视频会议终端和MCU两者有什么区别视频会议终端和MCU都是视频会议系统的核心组成部分之一,但其价格也相对高昂,是整个视频会议系统的主
    发表于 11-03 08:05

    视频会议终端和MCU的区别是什么

    原标题:详解视频会议终端和MCU的区别视频会议终端和MCU都是视频会议系统的核心组成部分之一,但其价格也相对高昂,是整个视频会议系统的主要成
    发表于 02-08 07:46

    如何RTSP视频添加到我的“RainGauge”项目网站?

    RTSP 视频添加到我的“RainGauge”项目网站: 视频由“Wyse Cam 3”捕获,提供给在 Windows PC 上运行的“虚幻媒体服务器”。HTML5文件内嵌
    发表于 05-11 07:41

    什么是视频会议

    什么是视频会议     视频会议系统是通过网络通信技术来实现的虚拟会议,使在地理
    发表于 12-30 11:22 943次阅读

    如何Crosswalk添加到Cordova应用程序

    英特尔开源技术中心的Bob Spencer解释了如何Crosswalk添加到Cordova应用程序,以提供具有世界级性能的可预测运行时。
    的头像 发表于 11-07 06:37 2304次阅读

    虚拟现实会议逐渐成为远程会议市场的主力军

    随着社会发展,移动互联网时代下,企业内外部交流需求不断加强,越来越多的企业选择了视频会议来满足需求,而近两年出现的虚拟现实会议因众多优势被越来越多的企业所喜爱,有人预言说虚拟现实
    发表于 12-13 10:45 3182次阅读

    基于WebRTC视频会议 MCU

    最近几年,各种设备和浏览器已经支持了WebRTC,但是传统的视频会议大都还是基于SIP和H.323, 硬件MCU也还是主流,我们推出了基于WebRTC 的MCU方案,该方案支持SIP 和Web
    发表于 10-28 11:21 9次下载
    基于<b class='flag-5'>WebRTC</b>的<b class='flag-5'>视频会议</b> MCU

    CentOS 7.9 Freeswitch 11-视频会议MCU(mod_av)

    CentOS 7.9 Freeswitch 11-视频会议MCU1、安装几个YUM仓库2、安装ffmpeg(或者编译安装libav)3、编译FreeSWITCH4、视频会议MCU配置5
    发表于 10-28 12:36 15次下载
    CentOS 7.9 <b class='flag-5'>Freeswitch</b> 11-<b class='flag-5'>视频会议</b>MCU(mod_av)

    安装python怎么添加到环境变量

    Python是一种简单易学的脚本语言,广泛应用于开发各种类型的应用程序。为了在Windows操作系统上使用Python的命令行工具,需要将Python添加到系统的环境变量。本文向您
    的头像 发表于 11-23 16:40 3111次阅读