首先,我知道播放视频被认为是LibGDX的“超出范围”。
我一直在开发一款Android应用程序,它允许您录制视频并播放它们,所有内容均来自使用Android Camera API的“内部”LibGDX。 我设法让录音部分工作,或多或少(在像Galaxy Ace这样的旧设备上,屏幕做了奇怪的事情而不是录音), 但我坚持使用“播放我刚录制的视频”部分。 我知道调用Intent并使用系统的Media Player来完成这项工作很容易,
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + Environment.getExternalStorageDirectory() + "/myvideo.mp4"), "video/*");
...
activity.startActivity(intent);
但它不是一个不错的解决方案,因为它不是真正的“响应”(当用户进入Intent时我失去了控制权)。 所以我的问题是,是否可以同时使用Android MediaPlayer API与LibGDX播放视频? 我已经尝试过并且没有得到任何结果,大多数时候我有“开始失败() - 9”错误或没有错误但屏幕不显示任何内容。 这是我用过的一些代码:
Android内部:
public void startPlaying(){
if (player.getCurrentPosition() == 0){
try{
player.setDisplay(holder);
player.setDataSource(path);
player.prepare();
} catch(IllegalArgumentException e) {
} catch (IOException e) {
}
}
player.start();
Log.v(LOGTAG, "Playing Started");
}
当我们在LibGDX中播放视频时,我们只是清除屏幕而不是其他内容:
GLCommon gl = Gdx.gl20;
gl.glClearColor(0f, 0f, 0f, 0f);
gl.glClear(GL20.GL_COLOR_BUFFER_BIT | GL20.GL_DEPTH_BUFFER_BIT);
gl.glEnable(GL20.GL_DEPTH_TEST);
gl.glEnable(GL20.GL_TEXTURE);
gl.glEnable(GL20.GL_TEXTURE_2D);
gl.glDepthFunc(GL20.GL_LEQUAL);
gl.glClearDepthf(1.0F);