Unity移动端播放网络视频


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()
	{
		//加载www
		WWW _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);
	}
}

你可能感兴趣的:(Unity移动端播放网络视频)