在Android中的OpenGL视图上播放视频

时间:2012-02-06 03:52:04

标签: java android c++ cocos2d-x

我正在使用cocos2d-x开发游戏,我想在其中播放视频。 该活动有一个OpenGL视图,我还在其上放置了额外的VideoView,并将可见性设置为INVISIBLE。

当我需要播放视频时,我只是隐藏OpenGL视图并启用我的VideoView。之后我创建了MediaPlayer,使用该VideoView的持有者调用setDisplay等,最终视频播放效果很好。当视频结束时,我再次切换可见性 - opengl to VISIBLE,videoview to INVISIBLE。

然而,问题是当我第二次尝试播放视频时,它只是没有显示,但是,视频中的声音正在播放。

是否有任何可见的捕获?

3 个答案:

答案 0 :(得分:3)

我刚修改了ApiDemo以确定它是否有效。我在这里写了完整代码的博客:post没有使用单独的媒体播放器进行视频观看我们可以设置视频和播放

   mVideoView.setVideoURI(data.getData());
   mVideoView.setVisibility(View.VISIBLE);
   mVideoView.start();

   //I could add touch listener in onCreate
    mGLSurfaceView.setOnTouchListener(...);

//touch event will go all the way down to GLSurfaceView
//Here i could chnage the video view position
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    mVideoView.setTranslationX(motionEvent.getX());
    mVideoView.setTranslationY(motionEvent.getY());
    return true;
}

答案 1 :(得分:1)

使用android MediaPlayer类需要使用surfaceview来播放视频。

要在GLSurfaceView上方播放视频,请创建一个包含SurfaceView并在其上播放视频的安卓自定义对话框。

答案 2 :(得分:1)

您可以通过在glview表面添加动态视频视图来实现此目的。首先创建父视图(任何布局)在同一父视图中添加视频视图,然后在gl曲面视图上添加此父视图。我以前做过这件事,它对我有用。供您参考:

     // first set the content view as your glview with your params.
     setContentView(mGLView, gl_params);
     mGLView.setZOrderMediaOverlay(false);

     // add a parent view for video view. rl is relative layout
     addContentView(rl, rl_params);

     // now add the video view inside this parent view.
     rl.addview(video_view, video_view_params)