脚本MyVideoWriter.cs

using UnityEngine;
using System.Collections;
using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
using System.IO;
/*author:bluebeandate:2016.8.8all rights reserved*/
public class MyVideoWriter : MonoBehaviour {
    VideoWriter writer;
    ;
    ;

    //VideoWriter参数
    string fileName ;
    FourCC fourcc = FourCC.XVID;
    ;
    Size size;
    bool isWriting = false;

    Texture2D img;
    // Use this for initialization
    void Start () {
        w = Screen.width;
        h = Screen.height;
        Size size = new Size(w, h);
        fileName = Application.streamingAssetsPath + "/output.avi";

        img = new Texture2D(w, h,TextureFormat.RGB24,false,false);

        writer = new VideoWriter();
        writer.Open(fileName, fourcc, fps, size, true);
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetKey(KeyCode.S))
        {
            isWriting = !isWriting;
        }
        if (isWriting)
        {
            StartCoroutine(startWriteVideo());
        }

    }

    IEnumerator  startWriteVideo()
    {
        Debug.Log("start write");

        while (isWriting)
        {
            yield return new WaitForEndOfFrame();

            img.ReadPixels(, , w, h), , , true);//read pixels from screen to texture
            img.Apply();

            Mat tmp = new Mat(h, w, MatType.CV_8UC3, img.GetRawTextureData());
            Cv2.CvtColor(tmp, tmp, ColorConversion.BgrToRgb);
            Cv2.Flip(tmp, tmp, FlipMode.X);

            writer.Write(tmp);
        }

        Debug.Log("end write");
        yield return null;
    }

    void OnDestroy()
    {
        writer.Release();
    }
}

将脚本拖给摄像机或任何物体,按S键开始录制,再按一次结束录制,关闭程序后,可以查看保存下来的游戏视频。

注意:保存下来的只有视频而没有音频,opencv是一个机器视觉库,为了精简起见,没有提供音频有关的操作。

Unity3d利用opencv保存游戏视频的更多相关文章

  1. 利用OpenCV进行H264视频编码的简易方式

    在Python下,利用pip安装预编译的opencv库,并实现h264格式的视频编码. 1. 安装OpenCV $ pip install opencv-python 建议在python虚拟环境下安装 ...

  2. Opencv保存摄像头视频&&各种编码器下视频文件占用空间对比

    打开视频文件或摄像头视频需要使用Opencv中的VideoCapture类,保存视频或摄像头视频到本地磁盘,需要使用Opencv中的VideoWriter类,使用都很简单,这篇文章就记录一下Video ...

  3. opencv保存视频

    利用opencv提供的方法,从摄像头获取视频,并保存为.avi格式文件. win8.1,opencv248,vs2013下测试 #include<opencv\cv.h> #include ...

  4. 基于opencv下对视频的灰度变换,高斯滤波,canny边缘检测处理,同窗体显示并保存

    如题:使用opencv打开摄像头或视频文件,实时显示原始视频,将视频每一帧依次做灰度转换.高斯滤波.canny边缘检测处理(原始视频和这3个中间步骤处理结果分别在一个窗口显示),最后将边缘检测结果保存 ...

  5. 摄像头脸部识别 (1)opencv 抓取视频数据并保存

    摄像头脸部识别 (1)opencv 抓取视频数据并保存 基于python 和 opencv 3.4.0 (兼容 opencv 2.X 参考注释),详细如代码 import numpy as np im ...

  6. opencv::将两幅图像合并后,在同一个窗口显示;并将合并的图像流保存成视频文件

    /** * @file main-opencv.cpp * @date July 2014 * @brief An exemplative main file for the use of ViBe ...

  7. 【转】Unity3D研究院之两种方式播放游戏视频

    http://www.xuanyusong.com/archives/1019   Unity3D中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像 ...

  8. C# 利用 OpenCV 进行视频捕获 (笔记)

    原文:C# 利用 OpenCV 进行视频捕获 (笔记) 简介 这个项目是关于如何从网络摄像头或者视频文件(*.AVI)中捕获视频的,这个项目是用C#和OPENCV编写的. 这将有助于那些喜欢C#和Op ...

  9. 【坦克大战】Unity3D多人在线游戏(泰课的坦克大战--旋转的螺丝钉)

    [坦克大战]Unity3D多人在线游戏 http://www.taikr.com/my/course/937 1.NetworkManager的介绍: 说明:选择固定生成时会自动寻找有StartPos ...

随机推荐

  1. 使用generator生成排序动画

    相信作为一个程序猿,大家应该都已经看过一些排序算法的过程教学动画,现在我来总结一下自己使用ES6的generator实现动画的过程,以作为自己对generator的使用实践的一个记录. 为什么用gen ...

  2. VS CODE 下的 ESLint 安装以及使用

    经过半年的前端磨练(就是不停地敲敲代码),自认水平提高的速度还是可以的. 现在回头看下写过的代码,发现以前写的代码真的是不忍惨睹. 比如 变量名乱起 风格多变 注释乱写或者没写 等等错误; 这不是一个 ...

  3. jq实现全选、全不选、反选

    基本思路: 1全选:点击全选按钮的时候,将input的属性checked设置为true; 2全不选:点击全不选按钮的时候,将input的属性checked设置为false; 3反选:点击反选按钮的时候 ...

  4. IE8下标签float导致的bug。

    前几天帮朋友写一个页面,今天在IE8下面发现一个很奇葩的问题,给a标签添加了float:left之后a标签内的图片不显示了,去掉float:left之后就能正常显示. 代码: <!DOCTYPE ...

  5. 解决zookeeper报错[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181:NIOServerCnxn@362] - Exception causing close

    zookeeper.out报错: 2016-12-10 18:05:46,958 [myid:3] - WARN  [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2181 ...

  6. Rsa加解密Java、C#、php通用代码 密钥转换工具

    之前发了一篇"TripleDes的加解密Java.C#.php通用代码",后面又有项目用到了Rsa加解密,还是在不同系统之间进行交互,Rsa在不同语言的密钥格式不一样,所以过程中主 ...

  7. ActiveMQ学习笔记(5)——使用Spring JMS收发消息

      摘要 ActiveMQ学习笔记(四)http://my.oschina.net/xiaoxishan/blog/380446 中记录了如何使用原生的方式从ActiveMQ中收发消息.可以看出,每次 ...

  8. 如何让table中td宽度固定

    table中td会随着里面的内容伸缩,设置其width样式并没有效果.这个时候需要下面的CSS可以实现. 首先是设置table .table {table-layout:fixed;} 其次是td . ...

  9. QT学习入门笔记

    系统路径 path 添加dll路径,如D:\QT\5.4\mingw491_32. .pro 文件添加 QT +=  widgets,否则出现qapplication no such file or ...

  10. 改变Eclipse 中代码字体大小

    1.改变eclipse 中代码字体大小,就是我打进去的java文件的字体大小 wiondow--preferences--general--appearance--colors and fonts-- ...