2015-06-11 2 views
5

У меня есть медиа-источник данных, и я играю на носителях с помощью android MediaPlayer.Android - рендеринг одного и того же видео на несколько просмотров

Как я могу отобразить видеовыход от MediaPlayer до нескольких видов в том же Activity, есть ли альтернативные способы сделать это?

Я хочу, чтобы часть видеоизображения носителя отображалась в двух разных ракурсах без чтения нескольких раз из источника данных.

Текущий код:

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(); 
       } 
      }); 
     } 
+0

Вы когда-нибудь получали это? –

ответ

2

Вы в настоящее время играет в TextureView, который получает кадры в SurfaceTexture, а затем делает их на слой View UI.

Один из подходов - создать собственную SurfaceTexture для получения кадров, а затем использовать OpenGL ES для рендеринга кадров, как вам нравится. Например, см. Активность «текстура с камеры» в Grafika. Он может позиционировать, поворачивать и масштабировать вход с камеры; вы можете легко изменить это, чтобы получать входные данные из MediaPlayer, и дважды визуализировать текстуру на SurfaceView.

Если вы хотите визуализировать его на разных Представлениях, вы можете создать пару текстурных изображений и визуализировать их. Используйте один контекст EGL с другой поверхностью EGL для каждого представления.

+0

Прямая ссылка на текстуру с камеры: https://github.com/google/grafika/blob/master/src/com/android/grafika/TextureFromCameraActivity.java – Aggressor