Unity中 视频的采集与播放 BMS

一.实验目的:

了解视频资源在Unity中的使用方式以及在Unity中实时显示视频的方法

二.实验内容:

(1) 查询有关资料,了解Unity中视频资源的使用情况,实时视频的采集与显示方法

(2) 设计一个由捕获、播放、暂停、停止按钮构成的视频播放GUI界面

(3) 点击捕获时能在游戏场景中显示计算机摄像头捕获的视频内内容

(4) 点击其它三个按钮时能播放制定的视频文件

作业提交:(1) DOC 格式的实验报告

(2) 详细说明实现视频播放功能的过程

(3) 详细说明实现视频捕获功能的过程

(4) 报告中附加相应的控制代码

三.实验步骤:

Unity播放视频有两种方法:通过GUI进行播放,或者通过摄像机扫描平面直观地进行播放。

UNITY设计非常人性化,如果将视频素材拖动到scene窗口中可以直接创建出Movie Texture对象,并且支持的文件格包括: .mov,.mpg,.mpeg,.mp4,.avi和.asf。经过测试,.MP4文件并不能在5.5版本中转化为movie texture,并且所有视频格式均需要quicktime转码的支持(查阅资料发现.ogv格式可以直接读取,但是格式工厂并不提供该格式的转换,因此考虑使用avi格式并下载quicktime进行自动转码。)

例如通过摄像机扫描平面的方法直接播放,只需在GUI的canvas界面拖动视频文件并正对摄像机/UI窗口的中间即可。

首先对Main Camera进行属性调节:将透视摄像机变为非透视摄像机,以防止画面变形;

之后在摄像机正面新建一个plane,并设置Plane的长宽为1920x1080像素(对原1x1x1的plane则调节为XScale=1.920,YScale=1.080。之后对该平面的旋转角度进行调整,防止视频出现翻转情况:

调节后对该平面添加播放脚本,播放代码如下:

usingSystem.Collections;

usingSystem.Collections.Generic;

usingUnityEngine;

publicclassMovieCaster:MonoBehaviour{

publicMovieTextureMovieTexture;

privateMeshRendererMoviePlayer;

voidStart()

{

MoviePlayer = GetComponent();

MoviePlayer.material.mainTexture = MovieTexture;

MovieTexture.loop =true;

}

voidOnGUI()

{

if(GUILayout.Button("Play"))

{

if(!MovieTexture.isPlaying)

{

MovieTexture.Play();

}

}

if(GUILayout.Button("Pause"))

{

MovieTexture.Pause();

}

if(GUILayout.Button("Stop"))

{

MovieTexture.Stop();

}

}

}

完成后将事先导入的mov格式饰品拖动到movieTexture变量中,点击播放就可以播放了。

播放界面如下:

如果要实现对摄像头的使用,同样可以对一个plane添加类似脚本完成,实验步骤与上面类似,首先创建一个新场景,然后对主摄像机正面添加一个plane,并对plane的XYZ完成旋转以使得摄像头捕捉到的画面正确显示。之后为该平面添加一段脚本,脚本代码如下:

usingSystem.Collections;

usingSystem.Collections.Generic;

usingUnityEngine;

publicclassWebCamControl:MonoBehaviour{

voidStart()

{

WebCamTexturewebcamTexture =newWebCamTexture();

for(inti = 0; i

{

if(!WebCamTexture.devices[i].isFrontFacing)

{

webcamTexture.deviceName =WebCamTexture.devices[i].name;

break;

}

}

Rendererrenderer = GetComponent();

renderer.material.mainTexture = webcamTexture;

webcamTexture.Play();

}

}

你可能感兴趣的:(Unity中 视频的采集与播放 BMS)