我正在尝试在成功检测图像后从Vuforia
Cloud的元数据中播放视频。但是在给出元数据链接时,应用程序崩溃了。
我遵循了所有步骤。
我想使用Vuforia
Android Native API从URL播放视频。
我更改了 VideoPlayback 示例中的代码,如下所示。我得到元数据:
if (finder.getResultCount() > 0)
{
TargetSearchResult result = finder.getResult(0);
metaResult = result.getMetaData();
Toast.makeText(this, metaResult, Toast.LENGTH_LONG).show();
元数据中的链接在Toast中正确显示。
在VideoPlayback.java
班级
//Video from Url
mMovieName[one] = video;
我从VideoPlayerHelper.java
删除了一些代码,如下所示:
//for Video from Url, in Load method
AssetFileDescriptor afd = mParentActivity.getAssets().openFd(filename);
mMediaPlayer.setDataSource(afd.getFileDescriptor(),
afd.getStartOffset(), afd.getLength());
afd.close();
添加了:
mMediaPlayer.setDataSource(filename);
删除代码
try {
AssetFileDescriptor afd = mParentActivity.getAssets().openFd(filename);
afd.close();
} catch (Exception e) {
Log.d(LOGTAG, "File does not exist");
mCurrentState = MEDIA_STATE.ERROR;
mMediaPlayerLock.unlock();
mSurfaceTextureLock.unlock();
return false;
}
这是我得到的错误:
08-25 13:39:12.102 31380-1054/com.vuforia.samples.VideoPlayback E/AndroidRuntime: FATAL EXCEPTION: GLThread 8377
Process: com.vuforia.samples.VideoPlayback, PID: 31380
java.lang.ArrayIndexOutOfBoundsException: length=4; index=4
at java.util.Vector.arrayIndexOutOfBoundsException(Vector.java:907)
at java.util.Vector.elementAt(Vector.java:328)
at java.util.Vector.get(Vector.java:442)
at com.vuforia.samples.VideoPlayback.app.VideoPlayback.VideoPlaybackRenderer.renderFrame(VideoPlaybackRenderer.java:762)
at com.vuforia.samples.VideoPlayback.app.VideoPlayback.VideoPlaybackRenderer.onDrawFrame(VideoPlaybackRenderer.java:292)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1531)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1248)
我做错了什么?此外,当我直接链接到mMovie[one]="http://techslides.com/demos/sample-videos/small.mp4";
时,视频播放效果很好但是没有通过元数据获得相同的链接。