当前位置: 首页 > news >正文

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

http://www.lryc.cn/news/11943.html

相关文章:

  • 微服务架构设计模式-(15)部署
  • Redis:数据结构
  • 2.18 设置language和中文输入法
  • 图解LeetCode——剑指 Offer 28. 对称的二叉树
  • Qt Desginer布局方法
  • C/C++、Java、Python的比较及学习(3)
  • 智慧校园建设方案
  • ARM uboot 源码分析5 -启动第二阶段
  • 【ip neigh】管理IP邻居( 添加ARP\NDP静态记录、删除记录、查看记录)
  • Java程序员线上排查问题神器-Arthas
  • 上市公司企业持续创新能力、创新可持续性(原始数据+计算代码+计算结果)(2008-2021年)
  • 华为OD机试 - 考古学家(JS)
  • Leetcode.2100 适合打劫银行的日子
  • linux ubuntu查日志信息以及错误排查
  • DOS经典软件,落下帷幕,新型国产平台,蓬勃发展
  • MongoDB数据存储格式
  • ARC126D Pure Straight
  • 基于RK3588的嵌入式linux系统开发(四)——uboot镜像下载(基于RKDevTool工具)
  • 设计模式之策略模式与责任链模式详解和应用
  • 广度优先搜索(BFS)-蓝桥杯
  • Java Type类
  • Springboot扩展点之CommandLineRunner和ApplicationRunner
  • ngixn 常用配置之文件类型与自定义 log
  • 【100个 Unity实用技能】 | Unity 通过自定义菜单将资源导出
  • 0.3调试opencv源码的两种方式
  • Redis的常见操作和Session的持久化
  • TypeScript笔记(二)
  • 【MyBatis】源码学习 03 - 类型处理器 TypeHandler
  • 建造《流浪地球2》中要毁灭人类的超级量子计算机MOSS的核心量子技术是什么?
  • 数据结构~七大排序算法(Java实现)