5

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

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

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

能见度有什么问题吗?

4

3 回答 3

3

我只是修改了 ApiDemo 看看它是否有效。我在这里有完整代码的博客:不使用单独的媒体播放器进行视频查看的情况下发布我们可以设置视频并播放

   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;
}
于 2012-06-27T10:54:54.933 回答
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)
于 2012-06-27T10:41:50.307 回答
1

您将需要一个surfaceview 来使用android MediaPlayer 类播放视频。

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

于 2012-06-27T10:06:16.650 回答