欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

GLSurfaceView+openGL播放VR视频/全景视频(VR解码器)

程序员文章站 2022-06-17 14:33:38
OpenGL ES/SDL渲染,FFmpeg ;VR分屏之OpenGL-OpenGL ES来播放视频.MediaPlayer+GLSurfaceView+openGL(推荐 )MD360 VR- https://github.com/ashqal/MD360Player4Android OpenGL ES用来绘制屏幕及分屏,FFmpeg用来音视频编码解码等。> OpenGL与Un......

  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

本文地址:https://blog.csdn.net/ShareUs/article/details/76075893