首先,从纯技术角度讲,3D互动视频广告与直播技术实现比较复杂并不难,都基于已经成型的WebRTC技术,关于WebRTC技术可以参考官网:https://webrtc.org,其实并不陌生很多领域都在使用,包括直播等本质上其实也属于一种RTC技术。为了更好理解这种技术,简单的介绍一下。
WebRTC Google开发的一种即时通信技术。官网的解释为:借助WebRTC,您可以为应用添加基于开放标准运行的实时通信功能。它支持在对等设备之间发送视频、语音和通用数据,使开发者能够构建强大的语音和视频通信解决方案。它最早使用在浏览器,通过Unity/UE等大厂不断改造,它可以使用在任何场景中,也就是说两个PC应用程序或任何平台的程序接入SDK都可以互相通信,虽然表面上叫Web。由于它不仅可以轻松传输视频/音频流,还可以传输数据流,例如鼠标键盘等输入设备输入流,所以可以轻松实现在远程操作视频流。它的应用也很广泛,例如Steam的流传输云游戏可以远程游戏等等,也让3D互动视频广告,直播成为可能。
下图为WebRTC简单的工作流程:
看起来很复杂,实际上很简单。首先可以把PeerA看作客户端,PeerB看作服务端,由于他们处于不同的网络状态下,例如不同的局域网内,必须要通过一个中间服务器建立连接,中间服务器就叫SignalServer信令服务器。PeerA发送Offer请求,PeerB响应后返回Answer,实际上要根据具体情况处理,拿Steam为例客户端PeerA请求的是游戏ID,信令服务器负责分配游戏服务即开启远程游戏端PeerB后返回给客户端,并约定好可使用的流压缩协议等等。接着Candidate操作简单来说是建立P2P连接,WebRTC使用ICE来实现NAT打洞,如果服务器是外网可访问IP可以忽略这步直接做静态路由。具体细节可以参考官网。
Real 3D 互动视频广告
为了更好理解什么是3D互动视频广告,可以从以下几个方面概括一下。
- 展现形式:
- 传统:主流传统广告目前以2D视频流为主,裸眼3D,全息3D可以传输带深度的视频流,可以理解为3D视频,但是没有输入相应无法做到实时交互,用户一般都以被动接受为主。
- 3D互动:除了视频可以3D带深度视频流外,由于基于RTC数据流,还可以实现观看视频的同时自由操作视频广告,在展现形式上带来了一个前所未有的突破,例如在汽车广告中可以根据用户操作实时改变汽车外观,多视角观看汽车外部内部构造,甚至可以在互动视频广告中体验驾驶操控等。
-
- 技术方案
- 传统:物理录制裁剪,3D场景录制裁剪。
- 3D互动:物理录制等传统方法很难转换为3D可互动视频广告,随着AI技术不断发展,我们测试并成功实施一些可用的解决方案,简单介绍一种实现方法。
- 首先,需要把现实中的物体转为3D模型,以RealityScan为例,它可以把现实中物体快速转换3D模型,导入到3D引擎UE/Unity中。
-
-
- 目前转换后的3D模型质量并不高,而且纹理还需要其他工具进行拓扑,部分需要手动修改。但随着AI不断发展,相信未来一定会达到逼近真实效果。可以参考官方的文档:RealityCapture - 3D Models from Photos and/or Laser Scans, https://unity.com/solutions/photogrammetry
- 导入到3D引擎中后,我们需要进行构造场景,打光烘培等等,接着利用场景动画插件,例如Timeline等工具进行场景动画视频制作。再根据广告客户需求加入相应的互动效果,那么一个简单3D视频广告就制作完成了。
-
- 另外,我们还可以利用现有模型直接在3D引擎中编辑,构造场景。如今UE/Unity等3D引擎都有大量素材模板可用,仅需要制作广告所需的素材即可,最后使用场景动画工具制作,加入互动即可完成。
- 同时我们也搜集了网络中大量应用模板,制作了很多应用场景,可用于快速开发应用类广告。
-
- 应用场所
- 传统:优势在于基于录制好的视频可本地解码播放,制作运营成本相对较低。劣势无法与观看者互动。适用于流动性大的场所,无法交互产所,低成本等。
- 3D互动:劣势在于制作,运营成本相对较高,制作需要使用3D引擎,本地播放需要配备GPU及触屏设备,对硬件要求较高。远程播放需要基于WebRTC的GPU服务器。优势在于高度互动,可配备在流动性较少,可有充分时间交互,例如电梯,地铁公交广告位。还可针对特定/高端用户定制已达到更好的展示效果。
- 关于成本问题,我们做了大量调研并结合主流GPU服务商测试实践,无论那种配备模式都可以把成本控制在一个合理的范围,都可以根据实际需求进行合理配置,具体我们将在后续结合GPU服务器架构篇进行分享。
-
-
3D 互动视频的简单介绍,相对比较简单,并没有用到复杂技术,在技术属于云应用,介于云渲染和云游戏之间。接下来要介绍的直播技术就会比较复杂,实现也相对比较麻烦,我们测试很多种架构,找到了几种性价比较高的解决方案,我们会在后续中分享。