2

首先,我知道播放视频被认为是 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);
4

0 回答 0