播放视屏这个可花费我很多时间琢磨了,因为要下什么QuickTime,然而当我下载后,把.avi格式的视屏放进unity 3d中,却总是报错,
我也查了很久,始终没找到原因,别怀疑我没安codec XVID,我还特意再次看看u3d支持什么格式,是有avi这个啊。我始终都不明白。在我没办法的时候我灵机一动,下了个格式转换器,转成.mov格式的,一看吓到了,尽然可以了,所以我就用unity 3d测试播放视屏,还真行啊 。至于avi格式的不行,我还想问问大侠们,还望大侠们指点。谢谢了。
首先我们创建一个Plane,用来当着电视显示器(个人理解),调整好方向和你想要的大小。现在把.mov格式的视屏放进来,等加载完后就是这样的了
有人一看到Test audio就知道是什么了,对,你很聪明,就是声音了。
现在我们来播放视屏,建一个脚本,我取名为Movie.内容如下:
//定义一个电影纹理
public MovieTexture mov;
// Use this for initialization
void Start()
{
//设置主纹理为电影纹理
renderer.material.mainTexture = mov;
mov.Play(); //播放视屏
//mov.Pasue(); 播放视屏
//mov.Stop(); 停止播放
}
//上面代码要放在带有Mesh的物体上,如Plane上面.....
这样就是我们开始就播放视屏。
有人会发现怎么没声音啊,不用担心,我们再在Plane中加上Audio Source,再把声音文件拖进去,再在mov.Play()下面加上audio.Play(); OK了!
还有一种播放方法就是用
public MovieTexture movie;
void Start()
{
//设置纹理循环播放
audio.clip = movie.audioClip;
movie.loop = false;
}
void OnGUI()
{
//绘制电影纹理
GUI.DrawTexture(new Rect(0,0,Screen.width,Screen.height),movie,ScaleMode.StretchToFill);
if(GUILayout.Button("play"))
{
if(!movie.isPlaying)
{
//播放音频和视频
movie.Play();
audio.Play();
}
}
if(GUILayout.Button("pause"))
{
//暂停音频和视频
movie.Pause();
audio.Pause();
}
if(GUILayout.Button("stop"))
{
//停止音频和视频
movie.Stop();
audio.Stop();
}
}
如果不想手动拖动,想动态加载的话就可以用Resources.Load()这个方法。
在Unity3D中如何提高视频播放质量呢?其实,使用Miro Video Converter(下载地址) 转换器,转换成ogg theora,然后再导入到Unity3D里面,效果会好些!
如果想在移动平台上播放,那么上面这样的方式是不行的,得这样
IOS/Android平台方法:
void Start()
{
Handheld.PlayFullScreenMovie("XXX.mp4", Color.black, FullScreenMovieControlMode.CancelOnInput);
}
播放一个全屏视频,但是请注意播放器将会直接读取视频流。
视频存储在设备上,因此,你必须把视频放到一个单独的文件夹作为一个普通的资源,因此你要在Assets文件夹下创建一个名为StreamingAssets的文件夹存储你的视频,Unity 会自动复制文件夹下的内容到应用程序包。