播放视屏这个可花费我很多时间琢磨了,因为要下什么QuickTime,然而当我下载后,把.avi格式的视屏放进unity 3d中,却总是报错,

unity audioclip时长_3d

             我也查了很久,始终没找到原因,别怀疑我没安codec XVID,我还特意再次看看u3d支持什么格式,是有avi这个啊。我始终都不明白。在我没办法的时候我灵机一动,下了个格式转换器,转成.mov格式的,一看吓到了,尽然可以了,所以我就用unity 3d测试播放视屏,还真行啊 。至于avi格式的不行,我还想问问大侠们,还望大侠们指点。谢谢了。

首先我们创建一个Plane,用来当着电视显示器(个人理解),调整好方向和你想要的大小。现在把.mov格式的视屏放进来,等加载完后就是这样的了

unity audioclip时长_视频播放_02

有人一看到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 会自动复制文件夹下的内容到应用程序包。