5

cocos2d-xを使用してゲームを開発していて、その中でビデオを再生したいと思います。アクティビティには1つのOpenGLビューがあり、その上に追加のVideoViewを配置して、可視性をINVISIBLEに設定します。

ビデオを再生する必要があるときは、OpenGLビューを非表示にしてVideoViewを有効にします。その後、MediaPlayerを作成し、そのVideoViewのホルダーなどを使用してsetDisplayを呼び出すと、最終的にビデオが正常に再生されます。ビデオが終了したら、可視性を再び切り替えます。openglをVISIBLEに、videoviewをINVISIBLEに切り替えます。

ただし、2回目にビデオを再生しようとすると、ビデオが表示されないのに、ビデオからのサウンドが再生されているという問題があります。

可視性の問題はありますか?

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

You can do this by adding dynamically video view on the surface of glview. First create a parent view (any layout) add video view in same parent view then add this parent view on the gl surface view. I have done this before and it was working for me. for your reference :

     // 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

Android MediaPlayer クラスを使用してビデオを再生するには、surfaceview が必要です。

GLSurfaceView の上でビデオを再生するには、surfaceView を含む Android カスタム ダイアログを作成し、その上でビデオを再生します。

于 2012-06-27T10:06:16.650 に答える