我在尝试通过Oculus mobile sdk MediaSurfacePlugin for Unity播放视频时遇到了一些问题。我已经尝试了很多不同的想法,但不断回到同样的问题;似乎Android媒体播放器无法找到该文件。这些是我最常犯的错误:
Unity:无法使用消息启动mediaPlayer java.io.IOException:setDataSource失败。
Unity:
Unity :(文件名:./ artifacts /generated / common / runtime / UnityEngineDebugBindings.gen.cpp 行:37)
Unity:
和
MediaPlayer:无法创建媒体播放器
Unity:无法使用消息启动mediaPlayer java.io.IOException:setDataSourceFD failed:status = 0x80000000
Unity:
Unity :(文件名: ./artifacts/generated/common/runtime/UnityEngineDebugBindings.gen.cpp 行:37)
Unity:
以及;媒体播放器准备失败。状态为0x1 =
据我所知,他们都意味着媒体播放器无法访问该文件或无法找到该文件,或者由于格式不兼容而无法播放该文件(我确信我的文件是兼容; .ogv格式,我也试过.mp4)。 我已将我的文件存储在统一的streamingassets文件夹中,我认为这是放置它们的正确位置吗?
我的软件版本是; ovr_sdk_mobile_1.0.3和Unity v5.3.6f1,Oculus Utilities v1.7.0,OVRPlugin v1.5.0,SDK v1.0.3.1。
我尝试过的事情:
我也试过使用mediaplayer的文件描述符构造函数而不是字符串,这通过统一来做是很尴尬的,它似乎没有什么区别,这是我用来做的代码,尝试使用和不附加文件扩展名:
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject context = activity.Call<AndroidJavaObject>("getApplicationContext");
AndroidJavaObject assets = context.Call<AndroidJavaObject>("getAssets");
AndroidJavaObject descriptor = assets.Call<AndroidJavaObject>("openFd", movieName+".ogv");
mediaPlayer.Call("setDataSource", new object[]{descriptor.Call<object>("getFileDescriptor"),descriptor.Call<object>("getStartOffset"),descriptor.Call<object>("getLength")});
在MediaSurfacePlugin的sdk自述文件中说IntPtr androidSurface = OVR_Media_Surface(textureId, 2880, 1440);
然而,这种方法似乎不存在(?),所以我使用下面的代码似乎有效:
OVR_Media_Surface_SetTextureId(texId);
OVR_Media_Surface_SetTextureParms(960, 540);//960/540 is the video resolution
IntPtr androidSurface = OVR_Media_Surface_GetObject();
前一段时间在oculus论坛上的帖子提到尝试使用callvoid方法而不是callobjectmethod,尝试过,似乎没有改变任何东西:
AndroidJNI.CallObjectMethod(mediaPlayer.GetRawObject(), setSurfaceMethodId, parms);
// AndroidJNI.CallVoidMethod(mediaPlayer.GetRawObject(), setSurfaceMethodId, parms);
我也看到人们建议在Unity的Unity设置中关闭多线程;再次,这似乎没有什么区别。
我非常感谢这里的任何帮助,我觉得我现在已经尝试了所有的一切!
有没有人成功地使这项工作?