OpenGL ES/SDL烘托,FFmpeg ;VR分屏之OpenGL-OpenGL ES来播映视频.MediaPlayer+GLSurfaceView+openGL
(引荐 )MD360 VR- https://github.com/ashqal/MD360Player4Android
OpenGL ES用来制造屏幕及分屏,FFmpeg用来音视频编码解码等。
> OpenGL与Unity3D
OpenGL 是一个相对底层的结构。会供给一系列函数结构作为 API 供给给开发者运用。OpenGL制造VR 播映器。
Unity3D 是一个跨渠道的游戏引擎。处理的是游戏制造人经过什么东西来做游戏的问题。本身包含很多游戏相关的功能,比方绘图,播动画,放音乐,联网等等。
OpenGL是右手系,可是Unity和D3D却是左手系(Unity在调查坐标系又是右手系)
OpenGL ES是在图形图画中,十分优秀的烘托库,既然是烘托,就那会和视频离不开,前期是FFmpeg解码视频,用于显现视频是经过surfaceView。今日经过OpenGL+SurfaceTexure进行显现视频。
OpenGL很多运用了向量和矩阵,矩阵的最重要的用处之一便是树立正交和透视投影。其原因之一是,从本质上来说,运用矩阵做投影只触及对一组数据按次序履行很多的加法和乘法,这些运算在现代GPU上履行的十分快。
> Google VR
Android N VR代码简析- https://www.jianshu.com/p/027916e345bc
Google单独别离出一个SDK,除了方便运用开发者之外,主要的目的是用来把VR的一些核心算法躲藏起来,比方用来减少推迟的ATW异步时间歪曲算法便是被封装在这里.手机上面运转VR的时分一个最大的挑战便是推迟,当一副画面的推迟超过20MS,人就会感觉不舒服厌恶,严重影响用户体会,一个好的VR产品都会尽量防止推迟。.
Google VR SDK应该是处理了ATW算法和多分辨率烘托等优化问题,然后新增了一个体系服务VrManagerService和 vr HAL层, 运用经过VrManagerService来设置体系进入VR形式,VrManagerService又是经过vr HAL层去实现具体形式的切换的。
VR全景图+Opengl3D模型展示- https://github.com/DrownCoder/VRShow
Google VR研究,发现它闭源 可定制的东西比较少,能够放弃它了
翻墙看google VR 官方文档:https://developers.google.com/vr/android/ https://developers.google.com/vr/android/reference_overview
https://github.com/googlevr/gvr-android-sdk.git https://github.com/ejeinc/RajawaliCardboardExample cardboard的demo
谷歌google vr demo- http://download.csdn.net/detail/zph1596946/9543674
http://www.androidauthority.com/developing-with-the-google-vr-sdk-and-ndk-699472/
Google provides developers with two virtual reality (VR) platforms: Cardboard, the world's most popular and accessible mobile VR platform, and Daydream, a new platform for low-latency, immersive, and interactive mobile VR.
A physical Android device running Android 4.4 (KitKat) or higher for Cardboard apps or a Daydream Ready phone
Both of these samples are single activity applications that display an embedded panoramic image or video using VrPanoramaView and VrVideoView, respectively.
-- 运用 Google Cardboard 及 Rajawali 3D 开发的VR播映器- https://github.com/substarry/VRPlayer
EXOplayer,做个视频的都知道,这个项目也是Google开源的,对流媒体很好的支撑。
> VR技能
-- VR 核心技能体现在以下几个方面:
1.全立体显现(3D 显现):包含反畸变算法、多图画处理
2.运动追踪:运用陀螺仪 GyroscopeSensor 加速度计 G-Sensor 等来感应咱们身体移动和头部滚动
3.输入设备:触摸板、手柄、无线体感设备、手势辨认
运用手柄的典型计划比方 HTC 的 Vive、Sony 的 PS VR;
无线体感设备比方 雷射的 Hydra、Sixense 的 STEM;
手势辨认感应设备比方 Leap Motion 和 Nimble VR;
具体哪种方法会成为未来 VR 的 “鼠标” 暂时还不明朗。
4.开发工具:OpenGL 供给的 API、Unity3D 引擎 等;
-- VR技能主要从以下方面下手:
SDK层:主要目的是进步图画质量,下降图画延时。
Framework层:主要对声音和图形图画,功耗进行优化。
底层:进步GPU图画烘托速度和DSP数据运算速度,实现低延时。
-- VR视频播映器最起码有这些基本功能:
全景360度无死角,支撑陀螺仪感应和手动拖动浏览视频。支撑屏幕类型切换,支撑单屏、双屏等。
FFmpeg在点播视频和VR视频中的运用。
> 得图VR
得图致力于下降VR影像制造本钱,供给了从硬件,到软件,再到完好的职业运用计划。包含了直播软件,拼接软件,云制造服务、SDK等免费服务,为VR影像生产供给了完备的生产工具。
得图VR PanoPlayer Android版SDK运用指南- http://www.detu.com/develop/page/42
> VR xl_player - https://github.com/xl-player-developers/xl_player,
iOS VR HTY360Player- https://github.com/hanton/HTY360Player https://github.com/libobjc/SGPlayer
Linux下,CMakeLists.txt及Cpp文件夹在每个module下都有软链接,在Windows下不支撑,各自拷贝一份到相应的Module下。(跨渠道问题)
Android捕捉图画后在SurfaceView上变形显现问题的处理- http://www.cnblogs.com/chenjianxiang/p/4168203.html
SurfaceView是视图(View)的继承类,这个视图里内嵌了一个专门用于制造的Surface。你能够操控这个Surface的格局和尺寸。Surfaceview操控这个Surface的制造方位。surface是纵深排序(Z-ordered)的,这表明它总在自己所在窗口的后边。surfaceview变得可见时,surface被创立;surfaceview躲藏前,surface被毁掉。这样能节省资源。如果你要查看 surface被创立和毁掉的机遇,能够重载surfaceCreated(SurfaceHolder)和 surfaceDestroyed(SurfaceHolder)。
整个进程:继承SurfaceView并实现SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()取得SurfaceHolder目标 ---->SurfaceHolder.addCallback(callback)添加回调函数----
SurfaceHolder.lockCanvas()取得Canvas目标并确定画布----> Canvas绘画 ----
SurfaceHolder.unlockCanvasAndPost(Canvas canvas)结束确定画图,并提交改动,将图形显现。
怎么手动毁掉surfaceview 并重建- 很简略 将其设为View.GONE 再将其设为View.visable。
Android有关surfaceView从头创立的问题- 解锁屏之后,surfaceview就会自动从头创立,所以,只需在从头创立之后恢复到曾经的状况就能够了。
关于Activity与SurfaceView的生命周期 。
Canvas canvas = getHolder().lockCanvas();
if (canvas != null) {
if (mCurrentPreviewState == USB_PREVIEW) {
rect.set(IMG_WIDTH / 2, IMG_HEIGHT / 2, IMG_WIDTH, IMG_HEIGHT);
canvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);
canvas.drawBitmap(mPreviewBitmap, null, rect, null);
} else {
canvas.drawColor(Color.TRANSPARENT, Mode.CLEAR);
canvas.drawBitmap(mPreviewBitmap, null, rect, null);
}
getHolder().unlockCanvasAndPost(canvas);
}
> 其他VR
Android-VR 支撑流媒体- http://blog.csdn.net/honjane/article/details/51884424
VR-- https://github.com/wheat7/VRPlayer
VR Android播映器实现(二)- http://blog.csdn.net/hebeixmg/article/details/52598902
NitroAction360- https://github.com/Nitro888/NitroAction360 https://github.com/hanton/HTY360Player
vrVideo- https://github.com/pondurii/vrVideo
OpenGL ES_手把手教你打造VR全景播- http://www.jianshu.com/p/0f740901da59
android opengl播映全景视频- https://www.jianshu.com/p/254837f663c4
android运用opengl es2.0播映VR视频- https://www.jianshu.com/p/b80d70a2b9f4
GLSurfaceView VR视频- https://github.com/Martin20150405/Pano360
openGL ES进阶教程(五)制造一个简略的VR播映器,播映全景视频- https://blog.csdn.net/king1425/article/details/76558737
OpenGL从零开始写一个Android渠道下的全景视频播映器——目录- https://blog.csdn.net/Martin20150405/article/details/53149578
从零开始打造一个VR视频播映器-VRPlayer源码剖析- http://www.jianshu.com/p/c7a3b1acb8b1
怎么做个VR播映器- http://www.gad.qq.com/article/detail/25937#
从零开始写一个Android渠道下的全景视频播映器——3.2 运用OpenGL ES 2.0制造一个球- http://blog.csdn.net/martin20150405/article/details/53888204
[OpenGL]从零开始写一个Android渠道下的全景视频播映器- http://blog.csdn.net/Martin20150405/article/category/6274984
Android全景视频播映器 源代码- http://download.csdn.net/detail/martin20150405/9681440
Pano360- https://github.com/Martin20150405/Pano360
UtoVR SDK
Facebook surround360 VR,Facebook有一个开源库叫transform。
VRPlayer is a simple but powerful local VR video player- https://github.com/wheat7/VRPlayer
> Unity 3D VR
Unity3D官方VR的Demo:https://unity3d.com/cn/learn/tutorials/topics/virtual-reality
Unity3D全景视频播映AVPro Video插件- http://download.csdn.net/download/java886o/9592531