unity rtsp 视频渲染(一)

news2025/1/24 14:35:29

unity

unity 可以说是一个不错的工具,建立三维的场景非常方便,下面我们建立一个三维的场景,并且在三维的场景中和场景外分别建立系统去播放视频。所谓场景内就是在三维中播放视频,场景外就是在三维场景前表面的二维平面中播放视频。

rtsp

一般来说,大部分播放器支持rtmp,rtsp等视频服务,我们可以自己写,也可以使用现有的播放器。rtsp server 我们使用了live555 和 一个通用的go 服务器

方式一

1 使用组件ump
使用组件也可以有两种方式 1是在平面中中
播放,也就是创建Canvas-> RawImage
在RawImage中Material 选择 ARVideoCanvasMaterial,增加 AR Video Canvas Helper 脚本组件,里面可以选择Main camera , MediaPlayer

在这里插入图片描述

在UniversalMediaplayer 中选择Rebderubg caneraObjects 为1 , Element 0 选择RawImage
Path to Video file: 选择rtsp路径

在这里插入图片描述

接下去点击开始,会在平面上开始放rtsp 视频
在这里插入图片描述

第二种是在三位场景里面放,建立一个plane, 建立一个video 材质,把video材质链接到plane 上面,
在ump中选择好Element 0 为plane
在这里插入图片描述
把plane 拉到树前面,就失去了树的影音
在这里插入图片描述
拉近一点看
在这里插入图片描述
如何能够拉近和拉远镜头,我们必须写点代码
建立一个fly.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class fly : MonoBehaviour
{
    private float sensitivityX = 3F;        //X转动增量速度
    private float sensitivityY = 3F;        //y转动增量速度
    private float minimumY = -90F;          //Y轴转动限制
    private float maximumY = 90F;
    float rotationY = 0F;                   //y起始值
    private float MovingSpeed = 3f;         //移动屏幕的速度
    float delta_x, delta_y, delta_z;            //计算移动量
    float distance = 5;
    float ZoomSpeed = 60f;                  //拉近拉远速度
    Quaternion rotation;
    
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
		if (Input.GetMouseButton(0))
		{//左键旋转屏幕
			{
				float rotationX = transform.localEulerAngles.y + Input.GetAxis("Mouse X") * sensitivityX;

				rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
				rotationY = Mathf.Clamp(rotationY, minimumY, maximumY);

				transform.localEulerAngles = new Vector3(-rotationY, rotationX, 0);
			}

		}
		if (Input.GetMouseButton(2))
		{//右键按钮功能,我没有设置,可根据需求修改

		}
		if (Input.GetAxis("Mouse ScrollWheel") != 0)
		{//滚轴拉近拉远
			delta_z = -Input.GetAxis("Mouse ScrollWheel") * ZoomSpeed;
			transform.Translate(0, 0, -delta_z);
			distance += delta_z;
		}
		if (Input.GetMouseButton(2))
		{//滚轴中间移动屏幕
			delta_x = Input.GetAxis("Mouse X") * MovingSpeed;
			delta_y = Input.GetAxis("Mouse Y") * MovingSpeed;
			rotation = Quaternion.Euler(0, transform.rotation.eulerAngles.y, 0);
			transform.position = rotation * new Vector3(-delta_x, -delta_y, 0) + transform.position;
		}
	}
	
}

下面是在树后面,unity比较强,在三维的表面中把树的阴影也投影到平面上了。
在这里插入图片描述

2 使用内存共享
如果是我们自己的播放器内,自己写的播放器比较灵活,比如可以自己控制线程,自己播放,使用不同的各种协议或者自定义协议,这时候,如何最快的和unity 进行交互,应该使用内存共享,我们写一个rtsp 或者rtmp 播放器,解码到yuv 或者 rgb 的时候,可以直接给内存共享给unity, 在unity中使用 filemapping来获取数据。
这到二再写。
3 使用websocket 接收
作为websocket client 来接收图片甚至yuv 数据直接渲染,和 内存共享是异曲同工。
这到三再写。

4 使用webrtc
使用datachannel
这到四再写。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/40115.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Go-Excelize API源码阅读(三十六)——SetSheetRow、InsertPageBreak

Go-Excelize API源码阅读(三十六)——SetSheetRow、InsertPageBreak 开源摘星计划(WeOpen Star) 是由腾源会 2022 年推出的全新项目,旨在为开源人提供成长激励,为开源项目提供成长支持,助力开发…

公司信息系统架构建设规划

企业的信息化建设的基础是构建企业的信息系统架构(也可称之为信息化架构),信息系统架构又由应用架构、数据架构、技术架构和治理架构4部分组成,本建议书主要以技术架构、应用架构以及技术架构为对象加以说明。 4.1公司信息系统架…

《MongoDB》Mongo Shell中基本操作-ObjectId和文档创建详解

前端博主,热衷各种前端向的骚操作,经常想到哪就写到哪,如果有感兴趣的技术和前端效果可以留言~博主看到后会去代替大家踩坑的~ 主页: oliver尹的主页 格言: 跌倒了爬起来就好~ 来个关注吧,点个赞…

R语言对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归

通过对用电负荷的消费者进行聚类,我们可以提取典型的负荷曲线,提高后续用电量预测的准确性,检测异常或监控整个智能电网(Laurinec等人(2016),Laurinec和Luck( 2016)&…

JavaScript正则表达式加密

正则表达式可以加密吗? 是的,可以。起码可以确定的是在JavaScript编程中是可以的。 正则表达式加密有什么用? 可以隐藏一些重要的、私密的字符串内容,使代码的逻辑、秘密不容易被人窥探。 正则表达式加密示例 例如&#xff1…

1536_AURIX_TriCore内核架构_Trap

全部学习汇总: GreyZhang/g_tricore_architecture: some learning note about tricore architecture. (github.com) 近段时间一直在跟trap打交道,但是处理得毫无头绪,因此找出来了这一章节看一下。暂时,这方面稍微有了一点框架感&…

观世界赛事,品足球人生--2022世界杯

观世界赛事,品足球人生 – 2022世界杯 1.卡塔尔世界杯百科 2022年卡塔尔世界杯(英语:FIFA World Cup Qatar 2022)是第二十二届世界杯足球赛,是历史上首次在卡塔尔和中东国家境内举行、也是第二次在亚洲举行的世界杯足…

iwebsec靶场 SQL注入漏洞通关笔记7- 空格过滤绕过

系列文章目录 iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记2- 字符型注入(宽字节注入)_mooyuan的博客-CSDN博客 iwebsec靶场 SQL注入漏洞通关笔记3- bool注入(布尔型盲注&#…

关于mac上如何U盘

关于mac上如何U盘 背景 使用macbook的大概都会遇到 “如何连接U盘” 的问题,网上会搜到很多教程,我觉得很多都不太实用。 首先这个需求是有的,但是对很多人来说很低频几个月用不到一次,所以得找个顺手靠谱的方法。下面是我经历…

【机器学习入门项目10例】(十):PCA降维:简易人脸识别模型

🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 + 数据集 + 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 + 数据集 + 完整源码🐶🦜【机器学习项目实战10例目录】项目详解 + 数据集 +

C++——电话号码的字母组合问题

文章目录电话号码的字母组合题目链接思路:代码:调试演示电话号码的字母组合 题目链接 思路: 首先使用string类的数组存储每个数字对应的所有可能的字母,然后进行回溯操作。 string arr[] { "","","…

分享88个NET源码,总有一款适合您

链接:https://pan.baidu.com/s/1dPlj8w-rvVQXuJOHPO6tBA?pwddj0d 提取码:dj0d 下面是文件的名字,我放了一些图片,文章里不是所有的图主要是放不下...,大家下载后可以看到。 启明星Appform员工请假系统 25175云酒店管…

微模块化炙手可热,数据中心走向智能化取胜

近年来,“微模块化”成为数据中心领域炙手可热的话题。 Gartner《企业数据中心未来趋势报告》预测,AI、5G、新型电池、模块化设计思想等将改变数据中心的未来,数据中心将走向分散化,并且预计到2025年,微数据中心的数量…

(附源码)python电影院信息管理系统 毕业设计 021844

电影院信息管理系统的设计与实现 摘 要 在信息飞速发展的今天,网络已成为人们重要的信息交流平台。电影院每天都有大量的信息需要通过网络发布,为此,本人开发了一个基于B/S(浏览器/服务器)模式的电影院信息管理系统。 …

你的NET程序需要保护吗?Agile.net 6.6.X 注入式Crack

Agile.net 使用专利技术将 MSIL 代码转换为虚拟操作码,只有安全的虚拟机才能理解。虚拟机直接处理虚拟操作码,模拟原始代码行为而不将代码转换回其原始形式。破坏保护成为NP完全问题,从而使Agile.net成为唯一保证您的代码不会被破坏的混淆器&…

【保姆级】手把手Debug循环依赖的整体流程

我们先看一下循环依赖,这样看、 或者这样看、 一提到循环依赖基本必提三级缓存,本篇又是篇保姆级的Debug教程,详解出现循环依赖Spring处理的全过程,之前也介绍过一些与本篇相关的内容: 想瞅瞅三级缓存的庐山真面目可以…

2022/11/27[指针] 指针与函数基础

程序&#xff1a;求10个数的最大数 1、定义指向函数的指针变量调用函数的方法 一般定义形式为&#xff1a;类型名 &#xff08;*指针变量名)()&#xff1b; #include<stdio.h> int main() {int i, m, a[10], max(int* p);int (*f)();for (i 0; i < 10; i)scanf_s(&q…

牛客网基础知识强化巩固-周结03

数组强化训练篇 2022-11-21 打卡 知识点总结 什么是渐进时间复杂度 渐进时间复杂度是指n趋于无穷时的复杂度。向有序表中任意一个位置插入元素&#xff0c;插入位置之后的元素依次挪动一个位置&#xff0c;假设元素插入的位置坐标为k&#xff0c;则时间复杂度为O(k)&#xf…

名词性从句

目录 1.名词性从句 1.1陈述句 1.2一般疑问句变名词性从句 1.3特殊疑问句变名词性从句 1.4特别的what 2.同位语从句 3.同位语从句与定语从句的区别 4.同位语从句的巅峰知识点 5.主语从句 5.2 并列主语从句 5.3主语从句巅峰知识点 6.宾语从句 主系表是不能被动的。所以第…

WPF-控件的常用属性-单例-隧道事件

特殊字符 小于< 大于> 空格xml:space"preserve" 例如&#xff1a;TextBox Grid.Column"1" xml:space"preserve">aaaaa .</TextBox> 从一个xaml文件中获取xaml内容 //DependencyObject是wpf控件的基类&#xff0c;它可以放到…