我正在使用cocos2d-x开发游戏,我想在其中播放视频。 该活动有一个OpenGL视图,我还在其上放置了额外的VideoView,并将可见性设置为INVISIBLE。
当我需要播放视频时,我只是隐藏OpenGL视图并启用我的VideoView。之后我创建了MediaPlayer,使用该VideoView的持有者调用setDisplay等,最终视频播放效果很好。当视频结束时,我再次切换可见性 - opengl to VISIBLE,videoview to INVISIBLE。
然而,问题是当我第二次尝试播放视频时,它只是没有显示,但是,视频中的声音正在播放。
是否有任何可见的捕获?
答案 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)