unity 用vuforia 開發一個Android手機AR應用,功能:掃描已經上傳好的圖片 然后播放相關視頻,若是之前該視頻還沒有播放過,則從服務器加載視頻播放 并下載到Application.persistentData路徑下保存。若是之前播放過,直接播放本地(即Application.persistentData路徑下)視頻。現在有一個問題:從服務器加載視頻播放 完全可以了 就是下載到到Application.persistentData路徑下,該怎么下載呢?我知道類WWW有一個位元組陣列型別的屬性bytes 難道意思是先把下載的視頻轉換為位元組陣列,然后再把位元組陣列轉換為視頻么?我從網上找了幾個相關教程 幾乎都是下載服務器上圖片(官方檔案就是加載圖片的https://docs.unity3d.com/540/Documentation/ScriptReference/WWW.html還有這個http://blog.csdn.net/hany3000/article/details/25978395 加載視頻我是用協程來完成的 現在代碼這個樣子的
public void OnButtonClick()
{
string videourl = "";
StartCoroutine(downloadVideo(videourl));
}
IEnumerator downloadVideo(string videourl)
{
WWW www = new WWW(videourl);
yield return www;
if(www.isDone)
{
//下載視頻到(視頻格式:.mp4)
//Application.persistentData路徑
}
}
能不能通過把接接收的位元組陣列即www.bytes 轉換未記憶體流存到本地 然后在播放呢?
MemoryStream ms = new MemoryStream(www.bytes);
FileStream fs = new FileStream(Application.persistentData,FileMode.CreateNew);
StreamWriter sw = new StreamWriter(ms);
sw.WriteTo(fs);
ms.Close();
fs.Close();
sw.Close();
通過這種方式 行不行呢?
uj5u.com熱心網友回復:
糾結了 兩天 終于找到方法了 就是把接收的位元組陣列 轉換為 檔案流 存到本地 就可以了 具體代碼如下
FileStream fs= new FileStream(Application.persistentData,FileMode.Creat,FileAccess.Write);
fs.Write(www.bytes,0,www.bytes.length);
fs.Close();
就是上面三句代碼 就可以了 如此的簡單 我卻糾結了兩天 究其原因 還是基本功不扎實 基本的流操作都不知道
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/57958.html
標籤:Unity3D
