Unity3D windows平台视频录制录屏插件 UnityRecorder
例子:从官方例子简单改了
using UnityEditor;
using UnityEditor.Recorder;
using UnityEditor.Recorder.Input;
using System;
namespace UnityEngine.Recorder.Examples
{
public enum RecorderControllerState
{
Video,
Animation,
ImageSequence
}
/// <summary>
/// 录制
/// </summary>
public class RecorderExammlpText : MonoBehaviour
{
RecorderController m_RecorderController;
private RecorderControllerState controllerState = RecorderControllerState.Video;
[Header("下面两个单纯观看数据,不用管")]
public RecorderControllerSettings controllerSettings;
public MovieRecorderSettings videoRecorder;
private string animationOutputFolder;
private string mediaOutputFolder;
private void Start()
{
controllerSettings = ScriptableObject.CreateInstance<RecorderControllerSettings>();
m_RecorderController = new RecorderController(controllerSettings);
animationOutputFolder = Application.dataPath + "/SampleRecordings";
mediaOutputFolder = Application.dataPath + "../SampleRecordings";
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.A))
{
StartRecorder();
}
if (Input.GetKeyDown(KeyCode.D))
{
StopRecorder();
}
}
#region 记录视频-结束视频 位置在项目根目录
/// <summary>
/// 开始记录视频
/// </summary>
/// <param name="state">默认视频</param>
public void StartRecorder(RecorderControllerState state = RecorderControllerState.Video)
{
//var outputFolder = Application.dataPath + "/SampleRecordings";
switch (state)
{
case RecorderControllerState.Video:
// Video
RecorderVideo();
break;
case RecorderControllerState.Animation:
// Animation
RecorderAnimation();
break;
case RecorderControllerState.ImageSequence:
// Image Sequence
RecorderImageSequence();
break;
default:
break;
}
// Setup Recording
controllerSettings.SetRecordModeToManual();
controllerSettings.frameRate = 60.0f;
Options.verboseMode = false;
m_RecorderController.StartRecording();
}
/// <summary>
/// 录制视频
/// </summary>
private void RecorderVideo()
{
videoRecorder = ScriptableObject.CreateInstance<MovieRecorderSettings>();
videoRecorder.name = "My Video Recorder";
videoRecorder.enabled = true;
videoRecorder.outputFormat = VideoRecorderOutputFormat.MP4;
videoRecorder.videoBitRateMode = VideoBitrateMode.Low;
// videoRecorder.SetOutput_720p_HD(); GameViewInputSettings 修改屏幕分辨率
videoRecorder.imageInputSettings = new GameViewInputSettings
{
outputWidth = 1920,
outputHeight = 1080
};
videoRecorder.audioInputSettings.preserveAudio = true;
string str = DateTime.Now.Year.ToString()+"_" + DateTime.Now.Month + "_" + DateTime.Now.Day + "_" + DateTime.Now.Hour + "_" + DateTime.Now.Minute + "_" + DateTime.Now.Second;
videoRecorder.outputFile = mediaOutputFolder + "/Magic_" + str;
controllerSettings.AddRecorderSettings(videoRecorder);
}
/// <summary>
/// 动画
/// </summary>
private void RecorderAnimation()
{
var animationRecorder = ScriptableObject.CreateInstance<AnimationRecorderSettings>();
animationRecorder.name = "My Animation Recorder";
animationRecorder.enabled = true;
var sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
animationRecorder.animationInputSettings = new AnimationInputSettings
{
gameObject = sphere,
recursive = true,
};
animationRecorder.animationInputSettings.AddComponentToRecord(typeof(Transform));
animationRecorder.outputFile = animationOutputFolder + "/animation_" + DefaultWildcard.GeneratePattern("GameObject") + "_" + DefaultWildcard.Take;
controllerSettings.AddRecorderSettings(animationRecorder);
}
/// <summary>
/// 图像序列
/// </summary>
private void RecorderImageSequence()
{
var imageRecorder = ScriptableObject.CreateInstance<ImageRecorderSettings>();
imageRecorder.name = "My Image Recorder";
imageRecorder.enabled = true;
imageRecorder.outputFormat = ImageRecorderOutputFormat.PNG;
imageRecorder.captureAlpha = true;
imageRecorder.outputFile = mediaOutputFolder + "/image_" + DefaultWildcard.Frame + "_" + DefaultWildcard.Take;
imageRecorder.imageInputSettings = new CameraInputSettings
{
source = ImageSource.MainCamera,
outputWidth = 1920,
outputHeight = 1080,
captureUI = true
};
controllerSettings.AddRecorderSettings(imageRecorder);
}
/// <summary>
/// 停止录制
/// </summary>
public void StopRecorder()
{
Debug.Log("停止录制");
m_RecorderController.StopRecording();
controllerSettings.RemoveRecorder(videoRecorder);
}
#endregion
void OnDisable()
{
StopRecorder(http://www.my516.com);
}
}
}
---------------------
Unity3D windows平台视频录制录屏插件 UnityRecorder的更多相关文章
- Fundebug录屏插件更新至0.6.0
摘要: 录屏插件的性能进一步优化,传输的数据体积大幅度减少. 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 BUG,提 ...
- Fundebug录屏插件更新至0.5.0,新增domain参数
摘要: 通过配置domain来保证"视频"的正确录制 录屏功能介绍 Fundebug提供专业的异常监控服务,当线上应用出现 BUG 的时候,我们可以第一时间报警,帮助开发者及时发现 ...
- Fundebug录屏插件更新至0.4.0,修复BUG,优化性能
摘要: 录屏功能更加强大,欢迎免费试用! 关于Fundebug录屏功能 Fundebug是专业的程序BUG监控服务,当线上应用出现BUG的时候,我们可以第一时间报警,帮助开发者及时发现BUG,提高De ...
- [转]Gnome桌面的录屏插件easyscreencast
原文地址:https://www.linuxprobe.com/gnome-easyscreencast.html
- 基于FFMpeg的C#录屏全攻略
最近负责一个录屏的小项目,需要录制Windows窗口内容并压缩保存到指定文件夹,本想使用已有的录屏软件,但是本着学习的态度去探索了FFMpeg,本文主要介绍基于FFMpeg开源项目的C#录屏软件开发. ...
- Fundebug前端JavaScript插件更新至1.7.1,拆分录屏代码,还原部分Script error.
摘要: BUG监控插件压缩至18K. 1.7.1拆分了录屏代码,BUG监控插件压缩至18K,另外我们还原了部分Script error,帮助用户更方便地Debug.请大家及时更新哈~ 拆分录屏代码 从 ...
- 澄清Fundebug录屏技术的几点误会
1. "视频"并非真的视频.也不是通过连续播放大量截图来实现 首先请大家观看这个视频: 视频中,当鼠标点击"场景重现",会立即播放一段"视频" ...
- script命令录屏
关于linux上的操作,我们的确可以使用'history'命令来显示出来操作记录,但是有些时候,我们不仅仅需要知道做了什么,还需要知道操作的时候,产生了什么效果,这个时候‘history’命令就显示无 ...
- 新手学习FFmpeg - 调用API完成录屏并进行H.264编码
Screen Record H.264 目前在网络传输视频/音频流都一般会采用H.264进行编码,所以尝试调用FFMPEG API完成Mac录屏功能,同时编码为H.264格式. 在上一篇文章中,通过调 ...
随机推荐
- 「LuoguP1496」 火烧赤壁
Description 曹操平定北方以后,公元208年,率领大军南下,进攻刘表.他的人马还没有到荆州,刘表已经病死.他的儿子刘琮听到曹军声势浩大,吓破了胆,先派人求降了. 孙权任命周瑜为都督,拨给他三 ...
- 空间数据索引RTree完全解析及Java实现
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MongChia1993/article/details/69941783 第一部分 空间数据的背景介 ...
- 【转】implements百科
implements是一个类,实现一个接口用的关键字,它是用来实现接口中定义的抽象方法.实现一个接口,必须实现接口中的所有方法. 中文名 实现 外文名 implements 意 思 类实现一 ...
- 使用Ajax选取ListBox的值异步更新视图,并作为表单值提交
一.控制器返回一个ViewBag MultiSelecList值. public ActionResult Create() { ViewBag.ReviewIndexItems = new Mult ...
- 创建纯文本Banner
场景: 最近再学习Spring Boot的过程中,想要自定义一个Banner,就是再工程启动是输出的那个文本图案,但是自己拼写既麻烦又不好看,所以找到一个工具,自动输出文字代表的纯文本Banner,例 ...
- java web url编码解码问题(下载中文名文件)
问题描述:需要url直接访问中文名的文件,类似于在地址栏里直接输入http://localhost:8080/example/丽江旅游攻略.doc 来进行文件下载,tomcat的server.xml文 ...
- 【WEB基础】HTML & CSS 基础入门(3)段落及文本
写在前面:CSS选择器 网页要显示很多内容,想要为每个内容设置不同的样式,我们就得首先选中要设置样式的内容,CSS选择器就是指明该样式是针对HTML里哪一个元素的.简单的例子,网页上有几段文字,我们想 ...
- 704. Binary Search
Given a sorted (in ascending order) integer array nums of n elements and a target value, write a fun ...
- 51nod 1062【水题】
直接打表构造啊 #include <stdio.h> #include <string.h> #include <iostream> using namespace ...
- hdoj5842【水题】
比赛的时候还特别撒比地写了二分的那个写法,然后wa了一发,因为这个集合的翻译成自然数集.还是转换了一下,还是去写了一个二分. 后面就是出现几种就是多长... 比赛的真的非常非常挫的code-. #in ...