本文地址: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。

Unity官方流化功能接入细节相关推荐

  1. Unity UGUI优化与原理【unity官方】

    来源( 来源:unity官方 Optimizing Unity UI ) 官方链接: [1]  https://unity3d.com/cn/learn/tutorials/temas/best-pr ...

  2. Unity网络多玩家游戏开发教程第1章Unity自带网络功能

    Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说 ...

  3. 数字孪生使用云流化的优势

    数字孪生又叫"数字双胞胎",它是将现实世界中的物体,如工业产品.城市等映射到虚拟世界,通过实时传感.链接映射.精确分析和沉浸交互来刻画.预测和控制物理系统,实现复杂系统虚实融合.应 ...

  4. Unity官方教程滚球游戏实现(Roll A Ball)带工程源码

    记学习unity之后做出的第一款游戏   第一次使用Unity,在学成C#基础之后,迫不及待的照着教程做出了这个游戏,第一课最主要学习的东西就是Unity API的使用及场景中各个界面面板的主要功能, ...

  5. [免费专栏] Android安全之Android APP应用程序的汉化功能 (修改so中的字符串内容)

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  6. Sentinel 发布里程碑版本,添加集群流控功能

    为什么80%的码农都做不了架构师?>>>    自去年10月底发布GA版本后,Sentinel在近期发布了另一个里程碑版本v1.4(最新的版本号是v1.4.1),加入了开发者关注的集 ...

  7. Ubuntu 16.04 和 Ubuntu 18.04 启用 点击Launcher图标,窗口实现最小化 功能

    安装了Ubuntu之后,要是每次都点击最小化按钮来实现窗口的最小化,操作起来很不方便,那么怎样才能方便操作呢, Ubuntu 16.04 本身支持 点击应用程序Launcher图标实现最小化 功能,只 ...

  8. java 怎么把list流化_Java 中的数据流和函数式编程

    原标题:Java 中的数据流和函数式编程 学习如何使用 Java 8 中的流 API 和函数式编程结构.-- Marty Kalin(作者) 当 Java SE 8(又名核心 Java 8)在 201 ...

  9. QQ 一键加群、扫二维码加群 - 腾讯官方API文档接入

    QQ 一键加群.扫二维码加群 - 腾讯官方API文档接入 QQ一键加群功能,腾讯API生成链接和二维码等等 获取地址:腾讯官方API文档接口 使用方法:引入对应的链接即可 这里有生成图片.二维码的功效 ...

最新文章

  1. PCL基础2:点云赋值
  2. 小程序门店自提功能开启,酷客多带你玩转O2O模式
  3. TRUNC函数,ORA-01898 精度说明符过多
  4. How OPA addFrame is called
  5. linux虚拟存储技术,红帽Linux 7.0发布:整合虚拟存储技术
  6. Java基础常见的面试题
  7. angularjs的三种注入方式
  8. Python从序列中选择k个不重复元素
  9. 程序员必须掌握的 CPU 硬核干货!
  10. Postman 根据nginx日志查账号
  11. python实现逆序输出一个数字
  12. 电信跨域跨系统业务实践
  13. 实现单片机通过传感器获取信息,并且将信息通过wifi模块发送信息给PC端,并在pyqt5界面上显示(PC端部分)
  14. 公司邮箱地址格式是什么?邮箱地址怎么写?邮箱地址大全
  15. VAR(向量自回归)模型的stata操作——关于期货现货价格联动关系的案例
  16. DNF检测原理分析篇
  17. hdwiki v5.1存在SQL注入导致可下载任意文件
  18. html怎么去除左边的圆点,在Html的CSS中去除标签前面小黑点以及ul、LI部分属性方法...
  19. 前程无忧:2021节后招聘高峰是否回来
  20. 【你好,windows】嵌入式win8.1 X86X64企业纯净版安装版2019.6.20

热门文章

  1. 《逃离塔科夫》:一场漫长的胜利,次世代爆款的第一组拼图
  2. web渗透-------信息收集
  3. Linux下安装宋体以及微软雅黑字体-转PDF后不显示中文,以及中文乱码
  4. WINDOWS蓝屏解决对策
  5. lda主题模型python实现篇
  6. 【情景感知服务】让你的音乐APP更智能更懂用户(增加demo源代码)
  7. 客户生命周期分析的6个关键点
  8. 51单片机:单个数码管动态显示
  9. c++/c 招聘JD
  10. python前端开发招聘_Python招聘需求与技能体系