0
Unity kullanmadan bir Sanal Gerçeklik video oynatıcı oluşturmak istiyorum. Mediaplayer kullanmanın bir yolu var mı?Unity olmadan Sanal Gerçeklik video oynatıcısını nasıl oluştururum?
Unity kullanmadan bir Sanal Gerçeklik video oynatıcı oluşturmak istiyorum. Mediaplayer kullanmanın bir yolu var mı?Unity olmadan Sanal Gerçeklik video oynatıcısını nasıl oluştururum?
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();
}
}
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
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