首先,我知道播放视频被认为是 LibGDX 的“超出范围”。
我一直在开发一个 Android 应用程序,它允许您使用 Android 相机 API 从“内部”LibGDX 录制视频并播放它们。我已经设法让录制部分或多或少地工作(在一些旧设备上,比如 Galaxy Ace,屏幕会做奇怪的事情而不是录制),但我坚持“播放我刚刚录制的视频”部分。我知道调用 Intent 并使用系统的媒体播放器来完成这项工作很容易,
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”错误或没有错误,但屏幕不会显示任何内容。这是我使用的一些代码:
安卓内部:
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);