2017-03-06 66 views
2

我正在使用EasyMovieTexture插件,我想访问所有视频保存的android文件夹。首先,我尝试访问流媒体资源文件夹,但无法在应用中访问(Copying files into asset folder in android),因此我创建了所有视频都在的文件夹,并且我想访问该特定文件夹以单独播放视频。这里是一个装载来自URL的视频样本代码,但我希望它从存储访问 -如何访问统一应用程序的android内部存储文件?

void OnGUI() { 


    if(GUI.Button(new Rect(50,50,100,100),"Load")) 
    { 
     scrMedia.Load("Url of video"); 
     m_bFinish = false; 
    } 

如何访问视频的时间间隔存储到播放。提前致谢。

+0

你有没有找到一个简单的解决方案呢?我试图做同样的事情:) 我使用/storage/emulated/0/Android/data/com.app.app/cache/ebd_tmp/123.mp4文件路径看到您的评论。假设'ebd_tmp'是您在UNity项目的Asset文件夹的根目录中创建的文件夹? 似乎有点隐藏......有没有一种方法可以指向用户设备上的合理文件夹,即“视频”或“下载”? 谢谢 – baroquedub

回答

0

任何文件的文件夹StreamingAssets将包含在构建,在由Application.streamingAssetsPath指定的路径访问,则可以看到。

然而,手动提到的Android一个重要的警告:

在Android上,文件都包含一个压缩.jar文件内(其基本上是相同的格式为标准的zip压缩文件)。这意味着如果您不使用Unity的WWW类来检索文件,则需要使用其他软件来查看.jar​​归档文件并获取文件。

如果您的视频插件可以访问APK中的文件,那么您只需指定正确的路径。

如果您的视频插件需要传统文件,那么您需要创建一个。 Unity的WWW类可以将压缩文件读取到内存中,然后您可以使用System.File.WriteAllBytes将其写入某个其他位置(例如Application.temporaryCachePath)。

+0

将文件保存在 -/storage/emulated/0/Android/data/com.app.app/cache/ebd_tmp/- 目录中,并且在调试时仍然出错 - Error m_MediaPlayer.setDataSource():/ storage/emulated/0 /Android/data/com.app.app/cache/ebd_tmp/123.mp4 System.err:java.io.FileNotFoundException:/storage/emulated/0/Android/data/com.app.app/cache/ebd_tmp/ 123.mp4 – Deadking66

+0

该文件存在,但它不能读取它..我在做什么错 – Deadking66

+1

Nvm得到它只需要添加“file://”之前..谢谢 – Deadking66

3

您可以使用Application.persistentDataPath访问内部存储。

https://docs.unity3d.com/ScriptReference/Application-persistentDataPath.html

该目录是使用

Debug.log(Application.persistentDataPath) 
+0

“Application.persistentDataPath”指定的目录通常是空的,除非Unity应用程序向它写入内容(如保存文件)。基于此,视频文件只有在某种情况下才会出现在那里。 – rutter

+0

@rutter我想到了这一点,我试图使用Application.temporaryCachePath并将文件存储在正在运行的应用程序中,但无法访问它们 – Deadking66

+0

是的目录是空的。我曾经使用AndroidFileTransfer将应用程序中的EasyMovieTexture视频保存在那里。 – taj