untiy 录制网络摄像头视频并保存到本地文件
网络摄像头使用的是海康威视的,关于如何使用Ump插件播放海康威视rtsp视频流,请参考我的这篇文章
内部有ump插件的下载链接
untiy接入 海康威视网络摄像头
录屏使用的插件是 AVPro movieCapture 4.6.3版, 插件和完整工程的下载链接放在本文的最后
录制摄像头的实现思想为
1 ump通过一个在RenderTexture上绘制图像来播放画面
2 movieCapture支持从纹理中获取画面
3 我们只需要使用Graphics.Blit()函数将一个纹理绘制到另一个纹理即可
核心脚本为以下三个

RecoderManger是我们自己写的,用于打通ump和AVPro movieCapture之间的连接
CaptureFromTexture是AVPro movieCapture中用于从纹理中录像的脚本,挂上就行,不用做任何调整
UniversalMediaPlayer是Ump插件提供的脚本,用于拉取网络摄像头的视屏
Ump里的预制体RawImage用于用于提供一个临时的容器,ump会新建一个RenderTexture并给Rawimge的mainTexture属性赋值(面板上显示的属性名为texture),RecoderManger获取这个RenderTexture,然后将图案绘制到CaptureFromTexture里的_texture属性里,这样就就完成了录像
程序打开sampleScene,直接运行即可录屏,停止运行即可保存录像,代码里有详细注释,这里不再赘述
using RenderHeads.Media.AVProMovieCapture;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UMP;public class RecoderManager : MonoBehaviour
{public int _textureWidth = 1024; //视频的宽public int _textureHeight = 768; //视频的高private CaptureFromTexture movieCapture = null; //录像机private UniversalMediaPlayer ump;//ump,用于拉取网络摄像头的视频//外部rawImagepublic RawImage rawImage;//录像用的渲染纹理private RenderTexture _texture;/// <summary>/// 录像保存的路径/// </summary>private string filePath = "";/// <summary>/// 录像保存的文件夹名,追在在路径之后/// </summary>public string folderName = "";/// <summary>/// 视频降低多少分辨率,以 _textureWidth _textureHeight 制定的宽高为基础/// </summary>public CaptureBase.DownScale downScale = CaptureBase.DownScale.Half;/// <summary>/// 视频的前缀名/// </summary>public string fileNamePrefix = "";/// <summary>/// 视频流的地址/// </summary>public string RTSPAddress = "";private void Start(){ump = GetComponent<UniversalMediaPlayer>();movieCapture = GetComponent<CaptureFromTexture>();//如果视频流是空的,直接返回if (string.IsNullOrEmpty(RTSPAddress)){print("视频流地址为空,停止录像");return;}//设置拉取的视频流ump.Path = RTSPAddress;ump.Play();//设置渲染纹理_texture = new RenderTexture(_textureWidth, _textureHeight, 0, RenderTextureFormat.ARGB32, RenderTextureReadWrite.Linear);_texture.filterMode = FilterMode.Bilinear;_texture.Create();if (movieCapture){movieCapture.SetSourceTexture(_texture);}//设置录像机的属性filePath = Application.streamingAssetsPath + "/RecoderVideo/"+folderName+"/";movieCapture.OutputFolderPath = filePath;//视频的保存路径 路径不存在会自动创建movieCapture.FilenamePrefix = fileNamePrefix;//视频的名字的前缀movieCapture.ResolutionDownScale = downScale; //降低分辨率 //开始录像movieCapture.StartCapture(); rawImage.gameObject.SetActive(false); // RawImage的作用是提供中转用的RenderTexture,禁用即可}private void OnDestroy(){if (_texture != null){RenderTexture.Destroy(_texture);_texture = null;}movieCapture.StopCapture();}private void Update(){UpdateTexture();}private void UpdateTexture(){Graphics.Blit(rawImage.mainTexture, _texture); //将纹理1 绘制到 纹理2 上,此处为将网络摄像头的画面绘制到录像用的纹理上}
}
资源免积分下载
AVPro movieCapture 4.6.3
相关文章:
untiy 录制网络摄像头视频并保存到本地文件
网络摄像头使用的是海康威视的,关于如何使用Ump插件播放海康威视rtsp视频流,请参考我的这篇文章 内部有ump插件的下载链接 untiy接入 海康威视网络摄像头 录屏使用的插件是 AVPro movieCapture 4.6.3版, 插件和完整工程的下载链接放在本文的…...
微服务架构设计模式-(15)部署
关联概念 流程 将软件投入到生产环境 架构 软件运行的环境结构 生产环境四个关键功能 服务管理接口 使开发人员能够创建、更新和配置服务 运行时服务管理 确保始终运行一定数量的服务实例非中断更新 监控 让开发人员了解服务情况,包括日志文件和各种应用指标可观…...
Redis:数据结构
简单动态字符串SDS Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构 建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,并将SDS用作Redis的默认字符 串表示。 SDS 的实现…...
2.18 设置language和中文输入法
文章目录一:设置language二:设置中文输入法一:设置language nvidia的开发板上默认只有English,需要点击如下管理: 接着进入如下界面: 此时图中的“汉语(中国)”应该是没有的&…...
图解LeetCode——剑指 Offer 28. 对称的二叉树
一、题目 请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 二、示例 2.1> 示例 1: 【输入】root [1,2,2,3,4,4,3] 【输出】true 2.2> 示例 2: 【输入】root [1,2,2,nul…...
Qt Desginer布局方法
首先将我们需要的控件拖拽到一个合适的位置,该例子中用到了两个label,两个lineEdit和两个pushButton。 然后我们需要利用弹簧来控制控件到控件之间的距离以及控件到窗体边界的距离,因为这里只有一组控件(两个label,两个…...
C/C++、Java、Python的比较及学习(3)
函数间的值传递与地址传递 值传递方式:指主调函数把实参的值赋给形参。 在这种传递方式下,主调函数中的实参地址与被调函数中的形参地址是相互独立的。 函数被调用时,系统为形参变量分配内存单元,并将实参的值存入到对应形参的内存…...
智慧校园建设方案
第一章、 智慧教学 6.1. 校本资源库 提供校本资源管理功能,实现学校内的教学资源的共建共享,促进教师之间的交流学习,提升学校的整体教学水平。在本系统中学校可以统一采购资源接入到校本资源库中供教师下载使用,教师也可以将…...
ARM uboot 源码分析5 -启动第二阶段
一、start_armboot 解析6 1、console_init_f (1) console_init_f 是 console(控制台)的第一阶段初始化。_f 表示是第一阶段初始化,_r 表示第二阶段初始化。有时候初始化函数不能一次一起完成,中间必须要夹杂一些代码,…...
【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)
一、邻居管理存在状态 1、NUD_NONE: 初始状态。当一个新的路由缓存条目被创建时,arp_bind_neighbour()函数被调用.如果找不到相匹配的ARP缓存条目, neigh_alloc()将创建一个新的ARP缓存条目并设置状态为NUD_NONE. 2、NUD_INCOMPLETE:未完成状…...
Java程序员线上排查问题神器-Arthas
文章目录前言一、Arthas是什么?二、快速入门1.下载2.如何运行三、常用命令1.dashboard2.trace总结前言 最近公司项目版本迭代升级,在开发新需求导致没什么时间写博客。 在开发需求的过程中,我写了一个接口,去批量调内部已经写好…...
上市公司企业持续创新能力、创新可持续性(原始数据+计算代码+计算结果)(2008-2021年)
数据来源:自主计算 时间跨度:2008-2021年 区域范围:沪深A股上市公司 指标说明: 参考何郁冰(2017)[1]的做法,将持续创新作为独立研究变量,同时采用创新投入指标(研发经费) 和创新…...
华为OD机试 - 考古学家(JS)
考古学家 题目 有一个考古学家发现一个石碑 但是很可惜 发现时其已经断成多段 原地发现N个断口整齐的石碑碎片 为了破解石碑内容 考古学家希望有程序能帮忙计算复原后的石碑文字组合数 你能帮忙吗 备注: 如果存在石碑碎片内容完全相同,则由于碎片间的顺序不影响复原后的碑…...
Leetcode.2100 适合打劫银行的日子
题目链接 Leetcode.2100 适合打劫银行的日子 Rating : 1702 题目描述 你和一群强盗准备打劫银行。给你一个下标从 0开始的整数数组 security,其中 security[i]是第 i天执勤警卫的数量。日子从 0开始编号。同时给你一个整数 time。 如果第 i天满足以下所…...
linux ubuntu查日志信息以及错误排查
目录 一、linux的日志文件 1、常用日志文件 2、其他日志文件 二、历史日志的查看 1、查看Logrotate的配置信息 2、查看日志配置 一、linux的日志文件 Linux系统中最有趣的(可能也是最重要的)目录之一是/var/log。根据文件系统层次结构标准,在系统中运行的大多数…...
DOS经典软件,落下帷幕,新型国产平台,蓬勃发展
提起DOS时代,总让人难以忘怀,陷入深深回忆中,风靡一时的许多软件,如今早已不在,这几款被称为DOS必装的软件,更是让人惋惜。 你还记得这图吗?堪称DOS系统最经典的软盘复制与映像生成软件…...
MongoDB数据存储格式
前言 之前分享了MongoDB的基本命名和视图等信息,本文分享一下MongoDB的数据存储类型,使用方式。基础的MongoDB信息就学习完啦,之后会继续分享MongoDB进阶的一些东西。 MongoDB数据存储格式前言1 文件结构1.2 字段名称2 点符号2.2 嵌入式文件…...
ARC126D Pure Straight
ARC126D Pure Straight 题目大意 给一个长度为nnn的整数序列A(a1,a2,…,an)A(a_1,a_2,\dots,a_n)A(a1,a2,…,an),其中ai∈[1,k]a_i\in [1,k]ai∈[1,k]。 你可以做如下操作任意次: 交换相邻两个元素 求最小的操作次数,使得序列AA…...
基于RK3588的嵌入式linux系统开发(四)——uboot镜像下载(基于RKDevTool工具)
官方提供的SDK中包含RKDevTool工具(RKDevTool_Release_v2.92)和相应的驱动(DriverAssitant_v5.1.1)。本节主要介绍在windows操作系统环境下利用RKDevTool下载以上生成的uboot镜像和bootloader镜像。注意:本节使用的板卡…...
设计模式之策略模式与责任链模式详解和应用
目录1.策略模式1.1 目标1.2.内容定位1.3.定义1.4.应用场景1.5.促销优惠业务场景1.6 用策略模式实现选择支付方式的业务场景1.7 策略模式在框架源码中的体现1.8 策略模式的优缺点2 责任链模式2.1 责任链楼式的应用场景2.2 利用责任链模式进行数据校验拦截2.3 责任链模式和建造者…...
Qwen2.5-VL半监督学习效果展示:有限标注下的性能提升
Qwen2.5-VL半监督学习效果展示:有限标注下的性能提升 1. 引言 在AI视觉领域,标注数据一直是制约模型性能的关键因素。传统监督学习需要大量人工标注,成本高、周期长,让很多企业和研究者望而却步。但今天,随着半监督学…...
Kubernetes集群管理终极指南:使用kubectx和kubens高效切换上下文与命名空间
Kubernetes集群管理终极指南:使用kubectx和kubens高效切换上下文与命名空间 【免费下载链接】kubectx Faster way to switch between clusters and namespaces in kubectl 项目地址: https://gitcode.com/gh_mirrors/ku/kubectx 在Kubernetes多集群环境中&am…...
把 SAP Fiori 后端授权模型讲透:从 PFCG、Catalog 到 SU24 的一条完整链路
很多团队在上线 SAP Fiori 应用时,会把注意力集中在前端目录、磁贴和页面配置上,结果到了联调或上线阶段才发现:用户明明能看到应用入口,点击之后却报错;或者应用能打开,但列表为空;再或者少数用户能看到不该看的业务数据。问题往往不在 UI 本身,而在后端授权模型没有真…...
2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的
2026-03-27:替换至多一个元素后最长非递减子数组。用go语言,给定一个整数数组 nums。 你最多只能选择其中一个位置的元素,把它改成任意整数(也可以选择不改)。 在允许这种“最多一次改动”的情况下,求能得到…...
Obsidian-i18n:破解插件语言壁垒的无缝本地化方案——让中文用户零门槛掌控千款插件
Obsidian-i18n:破解插件语言壁垒的无缝本地化方案——让中文用户零门槛掌控千款插件 【免费下载链接】obsidian-i18n 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-i18n 问题诊断:插件语言障碍如何制约Obsidian用户体验? …...
全格式文档智能处理:AnythingLLM的多模态知识管理解决方案
全格式文档智能处理:AnythingLLM的多模态知识管理解决方案 【免费下载链接】anything-llm 这是一个全栈应用程序,可以将任何文档、资源(如网址链接、音频、视频)或内容片段转换为上下文,以便任何大语言模型(…...
脉冲雷达系统仿真:从理论建模到Matlab代码实现
1. 脉冲雷达系统仿真入门指南 第一次接触雷达系统仿真时,我和大多数初学者一样,面对满屏的数学公式和专业术语完全摸不着头脑。直到把实验室那台老式示波器玩坏了三次之后,我才真正理解脉冲雷达仿真的核心逻辑——它本质上就是在计算机里搭建…...
别再死记公式了!用Python+Matplotlib亲手仿真LC并联谐振,直观理解选频原理
用PythonMatplotlib动态仿真LC并联谐振:从代码到物理直觉的沉浸式探索 当教科书上的LC并联谐振公式变成屏幕上跳动的曲线,当抽象的Q值概念转化为滑块调节时的实时波形变化,电子工程的学习便从枯燥的符号演算升维为一场充满探索乐趣的科学实验…...
WiFi热图绘制工具:用Python为你的无线网络做一次“CT扫描“ [特殊字符][特殊字符]
WiFi热图绘制工具:用Python为你的无线网络做一次"CT扫描" 🏥📶 【免费下载链接】wifi-heat-mapper whm also known as wifi-heat-mapper is a Python library for benchmarking Wi-Fi networks and gather useful metrics that can…...
如何快速搭建专业级游戏串流系统:Sunshine完整教程
如何快速搭建专业级游戏串流系统:Sunshine完整教程 【免费下载链接】Sunshine Sunshine: Sunshine是一个自托管的游戏流媒体服务器,支持通过Moonlight在各种设备上进行低延迟的游戏串流。 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine …...
