美文网首页
2020-06-06GLSurfaceView+openGL播放

2020-06-06GLSurfaceView+openGL播放

作者: 羁拥_f357 | 来源:发表于2020-06-06 16:21 被阅读0次

    OpenGL ES/SDL渲染,FFmpeg ;VR分屏之OpenGL-OpenGL ES来播放视频.MediaPlayer+GLSurfaceView+openGL

      OpenGL ES用来绘制屏幕及分屏,FFmpeg用来音视频编码解码等。

    正在跳转(iOS交流裙 密码:123)

    > OpenGL与Unity3D

     OpenGL 是一个相对底层的框架。会提供一系列函数框架作为 API 提供给开发者使用。OpenGL制作VR 播放器。

     Unity3D 是一个跨平台的游戏引擎。解决的是游戏制作人通过什么东西来做游戏的问题。本身包含很多游戏相关的功能,比如绘图,播动画,放音乐,联网等等。

    OpenGL是右手系,但是Unity和D3D却是左手系(Unity在观察坐标系又是右手系) 

        OpenGL ES是在图形图像中,非常优秀的渲染库,既然是渲染,就那会和视频离不开,早期是FFmpeg解码视频,用于显示视频是通过surfaceView。今天通过OpenGL+SurfaceTexure进行显示视频。

        OpenGL大量使用了向量和矩阵,矩阵的最重要的用途之一就是建立正交和透视投影。其原因之一是,从本质上来说,使用矩阵做投影只涉及对一组数据按顺序执行大量的加法和乘法,这些运算在现代GPU上执行的非常快。

    > Google VR

    正在跳转(iOS交流裙 密码:123)

    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.

    正在跳转(iOS交流裙 密码:123)

    -- 利用 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视频中的运用。

    正在跳转(iOS交流裙 密码:123)

    > 得图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

    正在跳转(iOS交流裙 密码:123)

    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

    ————————————————

    正在跳转(iOS交流裙 密码:123)

    相关文章

      网友评论

          本文标题:2020-06-06GLSurfaceView+openGL播放

          本文链接:https://www.haomeiwen.com/subject/lazxtktx.html