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

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)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,736评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,167评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,442评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,902评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,302评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,573评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,847评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,562评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,260评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,531评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,021评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,367评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,016评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,068评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,827评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,610评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,514评论 2 269