Unity官方流化功能接入细节

本文地址:https://blog.csdn.net/t163361/article/details/127507131
最近准备申请新星创作者,需要2000个粉丝关注,觉得文章有用的,请点一下左侧边栏的关注,谢谢。

之前公司提出要提供流化的方案,就让同事基于Unity的官方流化方案,出了一个临时的版本。最近要正式使用,制作过程中遇到一个问题,就参与其中一起处理了一下,也正好熟悉了下流化的流程。
Unity官方针对流化提供了两个包
WebRTC 对libwebrtc的封装
UnityRenderStreaming 对WebRTC库的封装,以及测试库

UnityRenderStreaming项目

项目根节点下有几个重要的文件夹
com.unity.renderstreaming 提供流化解决方案的包
WebApp 流化方案中信令服务器和流化服务器,一个node.js的服务器,
com.unity.template.renderstreaming-hd提供支持HDRP的流化解决方案的例子

WebRTC项目

本身WebRTC是谷歌推出的一套解决方案,Unity的WebRTC也是基于官方的解决方案来做的集成,本库中Plugins文件夹里面就是各个平台的libwebrtc的库。帮助页提供了自己构建libwebrtc的说明。可以下载源码,自己构建,方便调试。

使用流程

客户端

新建Unity工程引入com.unity.renderstreaming整个包后,就可以导入包中带的例子。

服务器

安装nodejs
运行WebApp里面run.bat,运行需要管理员权限,貌似需要运行两次才能成功,具体原因没查
服务器支持三种方式,HTTP,WebSocket,Furioos,前面两个是 很通用的通讯方式,Furioos这个是Unity的官方流化平台,可能有针对性的修改
WebApp想要启用WebSocket方式的话,需要修改index.ts文件中的一个开关,如下
.option('-w, --websocket', 'Enable Websocket Signaling', process.env.WEBSOCKET || false)
把里面的false改成true,如下
.option(‘-w, --websocket’, ‘Enable Websocket Signaling’, process.env.WEBSOCKET || true)

对WebRTC的理解

这里仅记录对WebRTC的理解,可能有不对的地方,大家具体还是要看官方文档。
WebRTC想要实现流化,会有两个大阶段

信令阶段

想要把Unity的画面传输到浏览器,需要一个中间的信令服务器,unity启动会把自己注册到信令服务器,浏览器启动也需要去信令服务器去寻找提供流化服务器的设备,这就需要有个大家都知道的服务器来进行信息的交换。

通讯建立阶段

信令阶段完成后,就需要通过发送sdp信息来告诉对方,自己的一些信息。sdp信息中会包含自己支持的编码格式。通过发起方发送offer消息,接收方通过onOffer来接受offer消息,然后发送接收方保存发送方的sdp信息,然后把自己的sdp信息通过answer发送给发起方。期间会发送candidate消息,来收集双方可以使用的p2p通讯方式。当信息沟通好后,双方就可以直接开始发送视频和一些行为信息。

细节

  1. webrtc通过建立数据通道的方式,使得可以把浏览器的鼠标和键盘行为发送到unity,然后unity把这些消息转化成UI事件,就可以实现浏览器操控了。
  2. 发起方的sdp中可以先只建立通讯,然后再新的offer-answer中沟通视频协议。
  3. chrome中可以在地址栏中输入chrome://webrtc-internals/,来看到webrtc通讯的通讯和调试信息
  4. trickle-ice测试nat是否建立成功的网站
  5. UnityRenderStreaming中提供了开启log的开关,但是测了几个版本,都会崩溃,导致无法看到log。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值