Coder Social home page Coder Social logo

martin20150405 / pano360 Goto Github PK

View Code? Open in Web Editor NEW
620.0 28.0 170.0 34.02 MB

Pure Java library to play 360 degree panorama video / photo (VR video) on Android. Using OpenGL ES 2.0 -安卓全景视频/图片播放器

License: MIT License

Java 84.47% GLSL 11.12% Kotlin 4.42%
vr-video panorama vr-player media-player filters

pano360's Introduction

Pano360

Build Status license progress

Pure Java library to play 360 degree panorama video (VR video) on Android. Using OpenGL ES 2.0

Pano 360 是一个Android平台下纯Java的全景(360度/VR)视频播放库,使用OpenGL ES 2.0来进行视频渲染,没有使用第三方库

Demo App 在这里下~

Read this in other languages: English

平台需求

  • OpenGL ES 2.0
  • Android 4.0.3 (API-15) 以上

特性

  • 单、双屏切换
  • 陀螺仪、触控(拖动、缩放)两种交互模式切换
  • 播放进度控制,控制栏自动隐藏
  • 类似GPUImage的滤镜组,支持多个滤镜叠加,滤镜顺序可在渲染到球体之前或之后
  • 支持原视频渲染(铺满屏幕/剪切/自适应)
  • 支持播放全景图片
  • 视频实时截图
  • 在线视频播放(你可能需要自行处理多种格式的解码问题)
  • 支持锁定任意坐标轴,用户从不同角度进入,看到的是同一个场景
    • LOCK_MODE_AXIS_Y: 和Cardboard Motion类似
  • 支持忽略任意坐标轴的旋转角度
  • 2D视频VR影院模式
  • 支持简单热点(图片/视频)

截图

ScreenShot

Youtube 优酷

适用对象

  • 如果你对于如何实现一个Android平台下的全景视频播放器感兴趣,或者急于使用一个带播放控制功能的全景视频播放器,或者有意在全景视频播放器中加入各种奇怪的功能,这个项目可能会对你有帮助。

如何使用

allprojects {
	repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}
dependencies {
        compile 'com.github.Martin20150405.Pano360:vrlib:v1.1.2'
}
  • 有两种方法可以使用该库,详情请参考Demo App

  • 一行代码使用带播放控制的Activity (由类库提供)

Pano360ConfigBundle.newInstance().setFilePath(filePath).startEmbeddedActivity(this);
  • 提供一个GLSurfaceView,你可以在任意地方使用,但是需要自己处理播放控制和模式切换
<android.opengl.GLSurfaceView
    android:id="@+id/surface_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
GLSurfaceView glSurfaceView=(GLSurfaceView) findViewById(R.id.surface_view);
panoViewWrapper =PanoViewWrapper.with(this)
		.setConfig(configBundle)
		.setGlSurfaceView(glSurfaceView)
		.init();
glSurfaceView.setOnTouchListener(new View.OnTouchListener() {
	@Override
	public boolean onTouch(View v, MotionEvent event) {
		return panoViewWrapper.handleTouchEvent(event);
	}
});
@Override
protected void onPause(){
	super.onPause();
	panoViewWrapper.onPause();
}

@Override
protected void onResume(){
	super.onResume();
	panoViewWrapper.onResume();
}

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

未来特性(不要期望过高- -|||)

  • 加速度+电子罗盘支持(适合没有陀螺仪的手机)
  • 快速切换使用的解码器,例如IjkMediaPlayer
  • 小窗口/fragment播放
  • Handler+MessageQueue
  • 多种全景格式
  • 热点支持(Hotspot)、头控支持
  • Anti Distortion
  • RTSP RTMP (with VLC/Vitamio)
  • 完整播放控制功能
  • 视频录制/转码/倍速播放 (Mediacodec/ffmpeg)

反馈交流

  • 开启一个issue
  • 发送邮件至[email protected]
  • 如果觉得这个项目对你有帮助,欢迎star,欢迎来一起改进这个项目

pano360's People

Contributors

martin20150405 avatar nachtien avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

pano360's Issues

关于旋转矢量传感器与手指操作

请问大大〜

1.PanoMode是否可以同时透过TOUCH和MOTION操作360呢?

2.透过SensorEvent,换算取到的rotateMatrix,有办法可以换算出0-360的价值吗?目的是为了要标示出使用者目前看的区块,是朝哪个方向

感谢~

如何切换视频??

不知道怎么切换。重新设置地址没效果,直接getMediaPlayer().setMediaPlayerFromUri(uri);报错
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=65537, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/video:58 flg=0x1 }} to activity {com.lsp.lspqimo/com.lsp.lspqimo.app.MainActivity}: java.lang.IllegalStateException

How to grab hotspot click/touch

Hey, How can I get hotspot clicked or touched event while viewing a panorama image?
I mean is there anyway to set a callback to be notified of hotspot object click?

初始方向问题

其他播放器播放的时候,不管哪个方向播放的时候,都是从正视角开始的,这个播放器正视角是默认一个方向的,不会根据手机的方向自动调整,这是哪里没有设置对吗?

滤镜切换问题

作者大大,demo在播放视频时,快速切换滤镜会出现卡顿,还有可能崩溃,有没有什么解决办法

Can not find coordinates of video texture

Hello,
Thanks for good job and sharing.
I want to change video showing place, for that as I know I need to change coordinates of surfacetexture. However I can not find where those coordinates are. Help please

Thanks in advance

实现旋转90度后界面显示成锥形的问题

现在默认进去是全屏,且是双屏效果,相当于从一个小窗口跳全屏效果,这点是没问题,但现在我想一开始是半屏,点击全屏按扭后就是现在demo进去后的全屏效果,但我在做这个功用时设置了单屏也旋转了90度效果却显示成锥形,还需要改哪个地方吗,现在这种全屏<-->缩放之间的切换很常见,能实现这个功能吗

关于播放在线视频

请问一下,我希望能播放在线视频
Pano360ConfigBundle.newInstance()
.setFilePath("http://192.168.0.103:80/videos.mp4")
.startEmbeddedActivity(this)
我这样写没能将视频播放出来,然而浏览器访问地址却可以播放,我不知道是不是我用错了方法,求大佬指教。

求教前辈

Martin,您好!看了您的git项目和csdn博客,很受启发,多谢多谢。我想了解更多关于全景视频播放相关的实现原理,不知道有没有这方面的介绍书籍或者资料推荐的呢?在网上查了很多,都是很浅显的层面,您的博客已经是最详实的了。您这边把所有的技术细节都已经代码实现了,想必会有很详细的参考文档吧,可以介绍一下资料的获取渠道吗?先行谢过!

关于方向重置的问题

在使用传感器控制方向时,怎么重置绕y轴旋转的方向呀。可以在转到不同角度后重置,使面向的方向恢复到一个初始方向?大神有没有什么方法或思路呀

skybox/cubic

skybox 能够部分cubemap的全景视频

最近在研究,希望互相帮助哈哈

Hotspot

Any update on the progress of this feature

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.