Unity移动端播放网络视频

来源:互联网 发布:运动内衣知乎 编辑:程序博客网 时间:2024/06/05 19:56


Unity播放本地视频我就不介绍了 ,方法有很多包括MovieTexture,GUI,Handle,MobileMovieTexture等等都是可以实现的。当播放网络视频,前面讲到的Handle就可以实现播放网络视频的功能。关于Handle的使用方法,官方手册中写得比较详细http://docs.unity3d.com/ScriptReference/Handheld.PlayFullScreenMovie.html。其中用到的就是

Handheld.PlayFullScreenMovie方法,它既可以播放本地视频,又可以播放网络视频,关于其详细参数以及规范可以参考上面提供的手册,里面讲解得十分详细,同时也可以参考宣雨松的博客:http://www.xuanyusong.com/archives/1019,他的博客中讲解了两种pc端,一种移动端播放视频的方法。

这边列出Handheld.PlayFullScreenMovie这个方法播放网络视频的格式,其实只需要把你的视频放到服务器上,取出地址,例如:string url=“http://....../xx.avi”;
将第一个参数path写成你获取的url地址即可,理论上.mov, .mp4, .mpv, and .3gp这些视频格式都是可以播放的。我是测试的avi,是可以播放的。
  
void Start () {Handheld.PlayFullScreenMovie(url,Color.black,FullScreenMovieControlMode.Full);}

上面的方法在移动端是边下载边播放网络视频的,属于在线播放,不好的地方就是,再次观看还需要再次加载。这里我们可以这样操作,第一次打开就将
视频下载到本地。
下载完成后播放视频,当第二次打开就做个判断,看在本地路径下是否包含有这个视频文件,有就直接播放本地视频,没有的话 再次下载视频,再播放。
这边贴出具体的实现方法:

using UnityEngine;using System.Collections;using System.IO;public class PlayerMovie : MonoBehaviour {//网络视频地址private string Url_movie;//视频下载本地存储地址private string Url_save;//文件FileInfo file;void Awake(){Url_movie="http://xxx.../business_work/we.avi";Url_save=Application.persistentDataPath+"/test.avi";//初始化文件file=new FileInfo (Url_save);}void Start(){//Handheld.PlayFullScreenMovie(Url_movie, Color.black, FullScreenMovieControlMode.Hidden);//判断文件是否下载过if(!file.Exists){StartCoroutine("downmovie");}else{//文件存在 直接播放视频print ("文件存在 直接播放视频");Handheld.PlayFullScreenMovie(Url_save,Color.black,FullScreenMovieControlMode.Full);}}IEnumerator downmovie(){//加载wwwWWW _www=new WWW(Url_movie);yield return _www;if(_www.isDone){print("视频加载完成");//获取www的字节byte[] bytes=_www.bytes;creat(bytes);}}//文件的流写入void creat(byte [] bytes){Stream str;//文件创建str=file.Create();//文件写入str.Write(bytes,0,bytes.Length);//关闭并销毁流str.Close();str.Dispose();//播放视频Playermov();}void Playermov(){Handheld.PlayFullScreenMovie(Url_save,Color.black,FullScreenMovieControlMode.Full);}}

0 0
原创粉丝点击