2020-06-06GLSurfaceView+openGL播放VR視頻/全景視頻(VR解碼器)

OpenGL ES/SDL渲染,F(xiàn)Fmpeg ;VR分屏之OpenGL-OpenGL ES來播放視頻.MediaPlayer+GLSurfaceView+openGL

? OpenGL ES用來繪制屏幕及分屏,F(xiàn)Fmpeg用來音視頻編碼解碼等。

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

> OpenGL與Unity3D

?OpenGL 是一個相對底層的框架。會提供一系列函數(shù)框架作為 API 提供給開發(fā)者使用。OpenGL制作VR 播放器。

?Unity3D 是一個跨平臺的游戲引擎。解決的是游戲制作人通過什么東西來做游戲的問題。本身包含很多游戲相關(guān)的功能,比如繪圖,播動畫,放音樂,聯(lián)網(wǎng)等等。

OpenGL是右手系,但是Unity和D3D卻是左手系(Unity在觀察坐標(biāo)系又是右手系)?

? ? OpenGL ES是在圖形圖像中,非常優(yōu)秀的渲染庫,既然是渲染,就那會和視頻離不開,早期是FFmpeg解碼視頻,用于顯示視頻是通過surfaceView。今天通過OpenGL+SurfaceTexure進行顯示視頻。

? ? OpenGL大量使用了向量和矩陣,矩陣的最重要的用途之一就是建立正交和透視投影。其原因之一是,從本質(zhì)上來說,使用矩陣做投影只涉及對一組數(shù)據(jù)按順序執(zhí)行大量的加法和乘法,這些運算在現(xiàn)代GPU上執(zhí)行的非???。

> Google VR

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

Android N VR代碼簡析- http://www.itdecent.cn/p/027916e345bc

? Google單獨分離出一個SDK,除了方便應(yīng)用開發(fā)者之外,主要的目的是用來把VR的一些核心算法隱藏起來,比如用來減少延遲的ATW異步時間扭曲算法就是被封裝在這里.手機上面運行VR的時候一個最大的挑戰(zhàn)就是延遲,當(dāng)一副畫面的延遲超過20MS,人就會感覺不舒服惡心,嚴(yán)重影響用戶體驗,一個好的VR產(chǎn)品都會盡量避免延遲。.

? Google VR SDK應(yīng)該是解決了ATW算法和多分辨率渲染等優(yōu)化問題,然后新增了一個系統(tǒng)服務(wù)VrManagerService和 vr HAL層, 應(yīng)用通過VrManagerService來設(shè)置系統(tǒng)進入VR模式,VrManagerService又是通過vr HAL層去實現(xiàn)具體模式的切換的。

? VR全景圖+Opengl3D模型展示- https://github.com/DrownCoder/VRShow

Google VR研究,發(fā)現(xiàn)它閉源 可定制的東西比較少,可以舍棄它了

翻墻看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.

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

-- 利用 Google Cardboard 及 Rajawali 3D 開發(fā)的VR播放器- https://github.com/substarry/VRPlayer

EXOplayer,做個視頻的都知道,這個項目也是Google開源的,對流媒體很好的支持。

> VR技術(shù)

-- VR 核心技術(shù)體現(xiàn)在以下幾個方面:

?1.全立體顯示(3D 顯示):包括反畸變算法、多圖像處理

?2.運動追蹤:利用陀螺儀 GyroscopeSensor 加速度計 G-Sensor 等來感應(yīng)我們身體移動和頭部轉(zhuǎn)動

?3.輸入設(shè)備:觸摸板、手柄、無線體感設(shè)備、手勢識別

? 利用手柄的典型方案比如 HTC 的 Vive、Sony 的 PS VR;

? 無線體感設(shè)備比如 雷射的 Hydra、Sixense 的 STEM;

? 手勢識別感應(yīng)設(shè)備比如 Leap Motion 和 Nimble VR;

? 具體哪種方式會成為未來 VR 的 “鼠標(biāo)” 暫時還不明朗。

?4.開發(fā)工具:OpenGL 提供的 API、Unity3D 引擎 等;

-- VR技術(shù)主要從以下方面入手:

SDK層:主要目的是提高圖像質(zhì)量,降低圖像延時。

Framework層:主要對聲音和圖形圖像,功耗進行優(yōu)化。

底層:提高GPU圖像渲染速度和DSP數(shù)據(jù)運算速度,實現(xiàn)低延時。

-- VR視頻播放器最起碼有這些基本功能:

全景360度無死角,支持陀螺儀感應(yīng)和手動拖動瀏覽視頻。支持屏幕類型切換,支持單屏、雙屏等。

FFmpeg在點播視頻和VR視頻中的運用。

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

> 得圖VR

? 得圖致力于降低VR影像制作成本,提供了從硬件,到軟件,再到完整的行業(yè)應(yīng)用方案。包含了直播軟件,拼接軟件,云制作服務(wù)、SDK等免費服務(wù),為VR影像生產(chǎn)提供了完備的生產(chǎn)工具。

? 得圖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下不支持,各自拷貝一份到相應(yīng)的Module下。(跨平臺問題)

Android捕捉圖像后在SurfaceView上變形顯示問題的處理- http://www.cnblogs.com/chenjianxiang/p/4168203.html

?SurfaceView是視圖(View)的繼承類,這個視圖里內(nèi)嵌了一個專門用于繪制的Surface。你可以控制這個Surface的格式和尺寸。Surfaceview控制這個Surface的繪制位置。surface是縱深排序(Z-ordered)的,這表明它總在自己所在窗口的后面。surfaceview變得可見時,surface被創(chuàng)建;surfaceview隱藏前,surface被銷毀。這樣能節(jié)省資源。如果你要查看 surface被創(chuàng)建和銷毀的時機,可以重載surfaceCreated(SurfaceHolder)和 surfaceDestroyed(SurfaceHolder)。

? 整個過程:繼承SurfaceView并實現(xiàn)SurfaceHolder.Callback接口 ----> SurfaceView.getHolder()獲得SurfaceHolder對象 ---->SurfaceHolder.addCallback(callback)添加回調(diào)函數(shù)----

?SurfaceHolder.lockCanvas()獲得Canvas對象并鎖定畫布----> Canvas繪畫 ----

?SurfaceHolder.unlockCanvasAndPost(Canvas canvas)結(jié)束鎖定畫圖,并提交改變,將圖形顯示。

?如何手動銷毀surfaceview 并重建- 很簡單 ?將其設(shè)為View.GONE ?再將其設(shè)為View.visable。

?Android有關(guān)surfaceView重新創(chuàng)建的問題- 解鎖屏之后,surfaceview就會自動重新創(chuàng)建,所以,只需在重新創(chuàng)建之后恢復(fù)到以前的狀態(tài)就可以了。

?關(guān)于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

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

Android-VR 支持流媒體- http://blog.csdn.net/honjane/article/details/51884424

VR-- https://github.com/wheat7/VRPlayer?

VR Android播放器實現(xiàn)(二)- 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.itdecent.cn/p/0f740901da59

android opengl播放全景視頻- http://www.itdecent.cn/p/254837f663c4

android使用opengl es2.0播放VR視頻- http://www.itdecent.cn/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.itdecent.cn/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,F(xiàn)acebook有一個開源庫叫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

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

正在跳轉(zhuǎn)(iOS交流裙 密碼:123)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容