2016-03-25 12 views

cevap

0

Buna gerekir:

https://github.com/Rajawali/RajawaliVR

Bu medya oynatıcı ve yerel dosyaları ile çalışır, ancak videoyu akış istiyorsanız, medya oynatıcı güvenilir bir seçenek değildir. Burada

benim örnektir:

PlayerActivity

public class PlayerActivity extends RajawaliVRActivity { 
private RajawaliVRExampleRenderer mRenderer; 
private MediaPlayer mediaPlayer; 
SurfaceView surfaceView; 
SurfaceHolder surfaceHolder; 


@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(
      WindowManager.LayoutParams.FLAG_FULLSCREEN 
        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN 
        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

    super.onCreate(savedInstanceState); 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
    mRenderer = new RajawaliVRExampleRenderer(PlayerActivity.this); 
    setRenderer(mRenderer); 
    setConvertTapIntoTrigger(true); 

} 

/** 
* Called when the Cardboard trigger is pulled. 
*/ 
@Override 
public void onCardboardTrigger() { 
    RajLog.i("onCardboardTrigger"); 
} 


@Override 
protected void onDestroy() { 
    super.onDestroy(); 
} 
} 

Ve sizin için

public class RajawaliVRExampleRenderer extends RajawaliVRRenderer { 
//"https://ia700401.us.archive.org/19/items/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4" 
Context mContext; 

private MediaPlayer mMediaPlayer; 
private StreamingTexture mVideoTexture; 
AppController appController; 
boolean playing=false; 
public RajawaliVRExampleRenderer(Context context) { 
    super(context); 
    mContext = context; 
} 

@Override 
public void initScene() { 

    appController=(AppController)getContext().getApplicationContext(); 
    //mMediaPlayer = MediaPlayer.create(getContext(),R.raw.video1); 
    mMediaPlayer=new MediaPlayer(); 

    try { 
     mMediaPlayer.setAudioStreamType(AudioManager.USE_DEFAULT_STREAM_TYPE); 
     mMediaPlayer.setDataSource("*URL*"); 

     mMediaPlayer.prepareAsync(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    mMediaPlayer.setLooping(true); 
    mVideoTexture = new StreamingTexture("sintelTrailer", mMediaPlayer); 
    Material material = new Material(); 
    material.setColorInfluence(0); 
    try { 
     material.addTexture(mVideoTexture); 
    } catch (ATexture.TextureException e) { 
     e.printStackTrace(); 
    } 

    Sphere sphere = new Sphere(50, 64, 32); 
    sphere.setScaleX(-1); 
    sphere.setMaterial(material); 

    getCurrentScene().addChild(sphere); 

    getCurrentCamera().setPosition(Vector3.ZERO); 

    getCurrentCamera().setFieldOfView(75); 

    mMediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() { 
     @Override 
     public void onBufferingUpdate(MediaPlayer mp, int percent) { 
      Log.v("grebuf", "buffer (%):" + percent); 
      if (percent >= 20) { 
       if (!playing) { 
        //mMediaPlayer.start(); 
        playing = true; 
       } 
      } 
     } 
    }); 
    mMediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mp) { 
      Log.v("grega", "media start"); 
      mp.start(); 
     } 
    }); 
    mMediaPlayer.setOnErrorListener(new MediaPlayer.OnErrorListener() { 
     @Override 
     public boolean onError(MediaPlayer mp, int what, int extra) { 
      Log.d("grebuf",what+" "+extra); 
      return false; 
     } 
    }); 

} 

@Override 
public void onRender(long ellapsedRealtime, double deltaTime) { 
    super.onRender(ellapsedRealtime, deltaTime); 
    mVideoTexture.update(); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    if (mMediaPlayer != null) 
     mMediaPlayer.pause(); 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    if (mMediaPlayer != null) 
     mMediaPlayer.start(); 
} 

@Override 
public void onRenderSurfaceDestroyed(SurfaceTexture surfaceTexture) { 
    super.onRenderSurfaceDestroyed(surfaceTexture); 
    mMediaPlayer.stop(); 
    mMediaPlayer.release(); 
} 
} 
+0

Teşekkür (Ben ihtiyaçlarınıza göre MediaPlayer değiştirebilir eminim) bir işleyici sınıf ihtiyacınızı Cevap. Akış içeriği için daha iyi bir seçenek ne olurdu? Mediaplayer'ın rtsp akışlarını ele alabildiğini okudum ... – Michael

+0

Akış içeriği için ExoPlayer'ı kontrol etmek isteyebilirsiniz. Sadece video oynatımı sağlar, ancak VR işleme bölümünü üstte uygulamanız gerekir. – dcoz

İlgili konular