當前位置:
首頁 > 最新 > Google ARcore 1.0 發布了,你還不來搞一個 AR 視頻應用?

Google ARcore 1.0 發布了,你還不來搞一個 AR 視頻應用?

作者簡介:王穎,聲網Agora.io 媒體引擎高級工程師,負責媒體引擎設計開發和多平台擴展

ARKit 和 ARCore 給我們 AR 應用的開發帶來了極大便利。ARCore 在 2 月 24 日發布了 1.0 正式版本,Android Studio Beta 模擬器也開始支持 AR Core,這是 AR 的一個里程碑。

往常,我們看過的大多數 AR 應用或直播應用中,都是以動畫、圖像、視頻形式展現 AR 特效,而且都是在本地處理的視頻文件。如果想在視頻通話場景中,以 AR 的形式引入另一個實時視頻,需要實時獲取視頻數據,並進行渲染處理。

本篇,我們將會把 ARCore 融合入直播場景中,與大家分享如何在直播應用中加入 AR 元素,以及如何利用最新發布的Agora SDK 2.1 的自定義視頻源、自定義渲染器兩大新功能實現更炫的效果。

如果你還不了解 ARCore 可以先回顧《ARCore 基礎知識》,我們在其中介紹了 ARCore 的基本類,以及實現一個 AR 應用的原理。

本文將會介紹視頻中兩種場景的實現:

將 ARCore 的畫面直播出去

將直播連麥的對方畫面渲染到 AR 場景中


我們首先使用 ARCore 創建一個簡單的識別平面的應用做為開發基礎。

首先安裝 arcore-preview2.apk 在 Android Studio 中創建一個新項目,在 gradle 中添加:

啟動平面檢測

在 Activity 中設置 Config 為平面檢測。

顯示識別出的平面

實現,在識別出的平面上畫出平面網格。

這樣就完成了一個最簡單的 AR 應用,當識別出環境中的平面時,會在上面畫出白色網格的畫面。


接下來我們需要使用 Agora SDK 在應用中添加直播功能。

首先在官網下載最新的 SDK 包並添加到我們的 Demo 中。接著在 Activity 中添加 RtcEngine 的實例,並且進行直播相關的設置。

至此,所有的準備工作都已經完成,我們有了一個可以識別平面的 AR 應用,同時又可以進行音視頻通話,接下來要做的就是把這兩個功能結合起來。


因為 ARCore 已經佔用了設備攝像頭,我們無法自己啟動 RtcEngine 引擎 默認的採集方式進行採集。我們可以使用 ARCore 的數據直接使用。

添加自定義視頻源

為了發送視頻數據,我們需要構造一個實現了介面。其中 bufferType 返回類型。

接著在 Activity 中實例化一個, 並在 RtcEngine 初始化之後通過介面設置給 Agora SDK。

發送AR中的數據

我們可以通過 GL10 的回調拿到每一幀數據,並使用 videoSource 的 consumer 發送出去。

我們可以先在 AR 場景中添加一個 Anchor, 接著通過 opengl 把連麥對方的視頻數據渲染到 Anchor 上。這樣即可實現在 AR 環境中顯示連麥端的畫面。

添加虛擬顯示屏

首先我們需要創建用來渲染遠端視頻的虛擬顯示屏,並通過用戶的點擊添加到 AR 場景中。

通過 HitResult 創建 Anchor,並在 Anchor 處畫出一個虛擬顯示屏放在點擊的位置上。

用戶通過點擊可以添加多個顯示屏,並被存在數組中待用。

添加自定義視頻渲染器

為了從 Agora SDK 獲取到遠端的視頻數據,我們需要構造一個實現了介面的類型。

通過方法可以拿到遠端的視頻數據,然後就可以使用 OpenGL 渲染到 Anchor 上。具體的 OpenGL 渲染代碼可以參考文末的完整版 Demo。

將自定義渲染器設置給 Agora SDK

把實現介面的自定義渲染器設置給 Agora SDK。

這樣當連麥端加入頻道後,就會在虛擬顯示屏上顯示對方的視頻,得到一個虛擬會議室的效果。


在這個 Demo 中,使用 Agora SDK 2.1 版新增的自定義視頻源和自定義視頻渲染器介面,可以輕鬆地把 AR 和直播場景結合起來。Demo 基於 Agora SDK 以及 SD-RTN 運行,可以支持 17 人的同時視頻連麥。可以預見,AR 技術會為直播、在線教育等實時視頻連麥帶來全新的體驗。

進入 Github 查看 Demo 完整代碼:

https://github.com/AgoraIO/Agora-Video-With-ARCore

3月8日,聲網Agora SDK 更新至 2.1 新版本,新增多項功能包括:

1. 新增了遊戲開黑場景

用於節省流量和去除雜音,通過調用setAudioProfile 實現

2. 音效均衡和音效混響

可以通過調用setLocalVoiceEqualization 和 setLocalVoiceReverb設置

3.新增 Restful API 查詢用戶在頻道中的狀態信息

查詢指定頻道內的分角色用戶列表,查詢廠商頻道列表,查詢用戶是否為連麥用戶等。

4. 在直播場景下,同一頻道內支持 17 位主播同時進行視頻直播和連麥

5. 自定義視頻源、自定義渲染器

開發者可便利的處理視頻數據,例如對接AR、美顏等。

6 插入外部視頻源

直播場景下,可以將採集到的視頻添加到正在進行的直播中。例如,直播室里的主播和觀眾可以一起邊看電影、比賽或演出,邊進行點評、互動等功能,會讓現有的直播話題更廣、體驗更好。

7. 直播優化方案

提供一套全新的 API,將原來 API 封裝在底層,更快集成,更多功能擴展性。

8. 提示相機對焦區域

新增回調介面提示相機的對焦區域已發生改變,新增了回調cameraFocusDidChanged 。

9. 音效卡採集(Windows)

新增 API enableLoopbackRecording 開啟視音效卡採集,開啟後 SDK 可以採集到本地播放的所有聲音。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 聲網Agora 的精彩文章:

18個實時音視頻開發中會用到開源項目

TAG:聲網Agora |