2015-06-11 14 views
5

ich eine Mediendatenquelle haben, und ich spiele die Medien android MediaPlayer verwenden.Android - Rendering gleiche Video auf mehreren Ansichten

Wie kann ich die Videoausgabe von MediaPlayer zu mehreren Ansichten in derselben Activity anzeigen, gibt es alternative Möglichkeiten, dies zu tun?

Ich möchte den Video-Teil des Mediums in zwei verschiedene Ansichten gerendert werden, ohne mehrmals aus der Datenquelle zu lesen.

Aktuelle Code:

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

hast du das jemals bekommen? –

Antwort

2

Du bist gerade in ein TextureView spielen, die den Rahmen in einem SurfaceTexture empfängt und dann macht sie auf die Ansicht UI-Ebene.

Ein Ansatz ist Ihre eigenen SurfaceTexture erstellen, um den Rahmen zu empfangen, und dann OpenGL ES verwendet, um die Bilder zu machen, wie Sie wollen. Ein Beispiel finden Sie in der Aktivität "Textur von Kamera" in Grafika. Es kann die Eingabe von der Kamera positionieren, drehen und skalieren; Sie können dies leicht ändern, um Eingaben vom MediaPlayer zu erhalten und die Textur zweimal auf einem SurfaceView zu rendern.

Wenn Sie es auf unterschiedliche Ansichten machen möchten, können Sie ein paar TextureViews einzurichten und zu ihnen machen. Verwenden Sie einen einzelnen EGL-Kontext mit einer anderen EGL-Oberfläche für jede Ansicht.

+0

Hier finden Sie einen direkten Link zur Textur von der Kamera: https://github.com/google/grafika/blob/master/src/com/android/grafika/TextureFromCameraActivity.java – Aggressor