上下屏(小屏操作大屏)的思路和实现[画面传输]

业务需求:
两个屏幕,一个大屏用于展示360全景,一个小屏用于操控大屏的显示,大屏的界面比较清爽;小屏可以操控大屏旋转以及热点展示。

思路:
1.网络同步,两端做同步即可 【问题:两端分辨率不同,展示画面需要自行控制】
2.做大屏对小屏的画面同步,和小屏对大屏的操作同步。【问题:小屏拿到的是画面,热点操作需要自行添加】

最后使用思路2

QA:
问题:大小屏的分辨率不同,展示画面可能有差异,热点显示也会有差异。
问题:大屏上有热点,但大屏不能操作,需要在小屏上操作
解决:大屏做一个判断,将界面上的热点数据传给小屏,小屏另行显示。 【也解决了大小屏热点位置差异】
解决:如果需要小屏热点和大屏显示一致,则需要热点信息,以及重新计算热点在小屏位置,并添加点击事件.
问题: 传输的数据有点大,好几M一次(待解决)

具体实现:
1.画面传输:
获取相机渲染的画面

    Texture2D screenTexture;
    RenderTexture tempTexture;
    void GetCameraTexture()
    {
        tempTexture = new RenderTexture(Screen.width, Screen.height, 24);//创建屏幕大小的RT
        _Camera.targetTexture = tempTexture;//将相机画面渲染到RT
        _Camera.Render();
        
        screenTexture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false);//创建2d纹理
        RenderTexture.active = tempTexture;//将RT设置为当前RT
        //读取屏幕像素信息
        screenTexture.ReadPixels(new Rect(0, 0, screenTexture.width, screenTexture.height), 0, 0);
        screenTexture.Apply();//保存纹理
        RenderTexture.active = null;//还原

        ss.texture = screenTexture;
    }

画面纹理转换成字节流

 bytes = screenTexture.EncodeToJPG();

Socket.send(bytes)发送图片字节流

2.画面接收:
将画面的字节流重新转为2d纹理

	Texture2D texture2D = new Texture2D(1920,1080, TextureFormat.RGB24, false);
	texture2D.LoadImage(buffer);
	rawImage.texture = texture2D;

离了个大谱

画面传输个屁,大屏分辨率5400*1920,这去调用ReadPixels()不是自己给自己找不自在,一个画面几十M,卡死了。

改成多端同步做了,操作端和显示端一样的,传输操作数据。

参考直播传输:
首先不用cpu,用更快的gpu处理视频
对视频进行重新编码降低传输压力
传输协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue 是一种基于 JavaScript 的前端框架,用于构建用户界面。ECharts 是百度团队开发的一款基于 JavaScript 的数据可视化库,用于创建各种图表和大展示。 要实现展示的浏览器全功能,可以结合 Vue 和 ECharts 来实现。下面介绍一种简单的实现方法。 首先,需要在 Vue 项目中引入 ECharts 库。可以通过 npm 或者直接下载 ECharts 的 JavaScript 文件,并在项目中引入。 接下来,在 Vue 组件中,使用 ECharts 创建需要展示的图表。可以通过配置项来定义图表的类型、样式、数据等。 然后,在 Vue 组件中使用全展示的功能。可以通过监听窗口大小变化的事件,在窗口大小变化时重新调整图表的大小以适应全展示。可以使用 Vue 的生命周期钩子函数或者添加事件监听器来实现。 具体实现方法可以参考以下步骤: 1. 在 Vue 组件的 template 中添加一个 div 用于放置图表,并为该 div 添加一个唯一的 id。 2. 在 Vue 组件的 created 钩子函数(或其他适当的生命周期钩子函数)中,使用 ECharts 的 API 创建图表,并将图表放置在步骤 1 中的 div 中。 3. 使用 Vue 的 mounted 钩子函数(或其他适当的生命周期钩子函数)来添加窗口大小变化的事件监听器。当窗口大小变化时,调用 ECharts 的 API 调整图表的大小。 4. 在 Vue 组件的 destroyed 钩子函数中,移除窗口大小变化的事件监听器,以避免内存泄漏和其他问题。 通过以上步骤,就可以实现基于 Vue 和 ECharts 的浏览器全展示功能。当浏览器窗口大小变化时,图表会自动调整大小以适应全展示。这样可以提升用户体验,使得大展示更加美观和实用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值