5

メディア データソースがあり、 android を使用してメディアを再生していますMediaPlayer

MediaPlayerからのビデオ出力を同じ の複数のビューに表示するにはどうすればよいActivityですか? これを行う別の方法はありますか?

データ ソースから何度も読み取ることなく、メディアのビデオ部分を2 つの異なるビューでレンダリングしたいと考えています。

現在のコード:

TextureView mTextureView1;
TextureView mTextureView2;

mTextureView1.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
        @Override
        public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
            mMediaPlayer = new MediaPlayer(AppActivity.this);
            try {
                mMediaPlayer.setDataSource(getApplicationContext(), Uri.parse(path));
            } catch (IOException e) {
                e.printStackTrace();
            }
            mMediaPlayer.setSurface(new Surface(surface));
            mMediaPlayer.setLooping(true);
            mMediaPlayer.prepareAsync();

            mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    mp.start();
                }
            });
        }
4

1 に答える 1

2

現在、SurfaceTexture でフレームを受け取り、それらを View UI レイヤーにレンダリングする TextureView で遊んでいます。

1 つの方法は、独自の SurfaceTexture を作成してフレームを受け取り、OpenGL ES を使用してフレームを好きなようにレンダリングすることです。例として、 Grafikaの「カメラからのテクスチャ」アクティビティを参照してください。カメラからの入力を配置、回転、スケーリングできます。MediaPlayer から入力を受け取り、テクスチャを SurfaceView に 2 回レンダリングするように簡単に変更できます。

異なるビューにレンダリングする場合は、いくつかの TextureView を設定してそれらにレンダリングできます。ビューごとに異なる EGL サーフェスを持つ単一の EGL コンテキストを使用します。

于 2015-06-11T18:10:29.500 に答える