Я хочу создать видеопроигрыватель Virtual Reality без использования Unity. Есть ли способ использовать медиаплеер?Как создать виртуальный видеопоток Virtual Unity без Unity?
0
A
ответ
0
Вам нужно это:
https://github.com/Rajawali/RajawaliVR
Он хорошо работает с медиа-плеер и локальными файлами, но если вы хотите, чтобы поток видео, медиа-плеер не является надежным вариантом.
вот мой пример:
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();
}
}
И вам нужен класс визуализации (я уверен, что вы можете изменить MediaPlayer, чтобы удовлетворить ваши потребности)
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();
}
}
Смежные вопросы
- 1. Видеопоток YouTube для Картона (Unity)
- 2. Qualcomm's Vuforia без Unity
- 3. Создание стереофотосферы без Unity
- 4. Использование Unity без призмы
- 5. Создать Mesh в Unity без индексов.
- 6. Создать сетку в Unity
- 7. Unity, как сделать Визуальные джойстики в Unity
- 8. Unity, как получить текст в Unity
- 9. Unity Создать каталог, доступный игрокам
- 10. Unity 3.5 to Unity 4.5.4
- 11. Unity, как создать объект без нового ключевого слова
- 12. Подготовьте Unity без отображения UnityPlayer
- 13. Unity 5.3.2 Pro, без тени
- 14. Устранение Unity Зависимости без Unity.MVC
- 15. Инъекция зависимостей регулятора без Unity
- 16. Facebook поток без Link (Unity)
- 17. Unity Container не удается создать
- 18. Создание Unity AR без цели
- 19. Unity: Call android function from Unity
- 20. Unity/XCode: Unity/ObjCRuntime.h файл не найден
- 21. Как создать кнопку в текстовом сообщении Unity?
- 22. Как создать экран загрузки в Unity?
- 23. Как создать белый прямоугольник в Unity 2D?
- 24. Unity - Как создать контроллер с зависимостями вручную?
- 25. Как создать проектор с тенями в Unity?
- 26. Как создать динамическую таблицу в Unity
- 27. Как создать стандартное меню настроек Unity?
- 28. Как создать скрипт controls в Unity 4.6?
- 29. Как создать маркер AR для Vuforia/Unity?
- 30. Создание Wp8 Unity Plugin в Unity 5.0
Спасибо за ваш ответ. Что было бы лучшим вариантом для потоковой передачи контента? Я читал, что медиаплеер может обрабатывать потоки rtsp ... – Michael
Для потокового содержимого вы можете проверить ExoPlayer. Он просто обеспечивает воспроизведение видео, хотя вам нужно будет реализовать часть рендеринга VR сверху. – dcoz