1 音視頻SDK和直播美顏SDK-使用導讀
1.1 AI視覺應用-美顏SDK
實時音視頻是 ZEGO 的一款實時音視頻互動服務產品,開發者可通過其靈活易用的 API,構建音視頻應用,同時,ZEGO 的另一款產品——AI視覺,基于領先的 AI 演算法,提供美顏、美體、美妝、貼紙等功能,將二者進行搭配使用,能夠輕松實作音視頻互動和美顏的結合,基于美顏SDK可以打造實時美顏應用-直播美顏,
音視頻與美顏兩者搭配使用,可廣泛應用于娛樂直播、游戲直播、視頻會議等直播美顏場景中,

1.2 實時音視頻SDK,直播美顏SDK 概念解釋
- ZegoExpress SDK:ZEGO 實時音視頻 SDK,提供基礎的實時音視頻功能,包括直播推拉流、直播連麥等,以下使用 Express SDK 簡寫表示,
- ZegoEffects SDK:ZEGO AI視覺 美顏SDK,提供多項智能影像渲染和演算法能力,包括智能美顏、AR 特效、影像分割等,以下使用 Effects SDK 簡寫表示,
2 直播美顏SDK示例原始碼
為方便開發者實作音視頻和美顏SDK二者的搭配使用,ZEGO 提供了示例代碼,請聯系 ZEGO 商務人員獲取,獲取鏈接:(https://www.zego.im/cluesCollect);
近期有開發規劃的開發者可上即構官網查看,恰逢即構七周年全線音視頻產品1折的優惠,也可以聯系商務獲取RTC產品優惠,
3 集成直播美顏SDK前提條件
- 已在專案中集成 Effects SDK,詳情請參考“AI視覺”的 快速開始 - 集成,
- 已獲取到 Effects SDK 唯一的鑒權檔案,詳情請參考“AI視覺”的 快速開始 - 在線鑒權,
- 已在專案中集成 ZEGO Express SDK,實作基本的實時音視頻功能,詳情請參考 快速開始 - 集成 和 快速開始 - 實作視頻通話,
- 已在 ZEGO 控制臺 創建專案,并申請有效的 AppID 和 AppSign,詳情請參考 控制臺 - 專案管理 中的“專案資訊”,
4 直播美顏SDK使用步驟
ZEGO Effects SDK 和 Express SDK 搭配使用,對直播視頻資料進行實時 AI 視覺處理的原理,如下圖:

通過以上流程,具體的直播美顏功能實作步驟,如下圖:

- 初始化 ZEGO Effects SDK 和 Express SDK,初始化在時序上沒有限制,
- 獲取視頻原始資料,可通過 Express SDK 的 自定義視頻采集 或 自定義視頻前處理 兩種方式獲取,
- 將采集到的視頻原始資料,傳遞給 ZEGO Effects SDK,進行 AI 視覺美顏處理,
- 將處理完的資料傳遞給 Express SDK,進行推流,如果在推拉流程序中需要調整 AI 視覺美顏效果,可使用 Effects SDK 的相關功能進行實時更改,
- 遠端用戶通過 Express SDK 拉取處理后的資料進行播放,
4.1 初始化 音視頻SDK 和 直播美顏SDK - Effects/Express SDK
對于兩個 SDK 的初始化,不做時序上的限制,以下步驟中以“先初始化 Effects SDK,再初始化 Express SDK”為例,
4.1.1 初始化直播美顏SDK Effects SDK
-
匯入 Effects 直播美顏SDK的模型和資源,
在使用 Effects SDK 的 AI 美顏相關功能時,必須先匯入 AI 美顏 模型和資源,
// 傳入人臉識別模型的絕對路徑,人臉檢測、大眼、瘦臉功能均須匯入 ArrayList<String> aiResources = new ArrayList<>(); aiResources.add("sdcard/xxx/xxxxx/FaceDetectionModel.model"); aiResources.add("sdcard/xxx/xxxxx/SegmentationModel.model"); // 傳入資源的絕對路徑 aiResources.add("sdcard/xxx/xxxxx/CommonResources.bundle"); aiResources.add("sdcard/xxx/xxxxx/PendantResources.bundle"); aiResources.add("sdcard/xxx/xxxxx/FaceWhiteningResources.bundle"); ... // 傳入資源或模型的路徑串列,必須在 create 之前呼叫 ZegoEffects.setResources(aiResources);直播美顏SDK Effects SDK 支持的所有資源和模型請參考“AI視覺”的 快速開始 - 匯入資源和模型,
-
創建 直播美顏 Effects 物件,傳入在 3 前提條件 中獲取到的鑒權檔案,創建 直播美顏 Effects 物件,
// 鑒權內容請以實際獲取的檔案為準 ZegoEffects effects = ZegoEffects.create("ABCDEFG", getApplication()); -
初始化 直播美顏 Effects 物件,
呼叫
initEnv介面初始化 Effects 物件,需要傳入待處理視頻影像資料的寬高,以處理 1280 × 720 的視頻影像為例:
// 初始化 Effects 物件,傳入當前待處理的原始影像寬高,需要在自定義視頻前處理回呼的onStar里初始化,express 為后面創造的Express引擎物件 express.setCustomVideoProcessHandler(new IZegoCustomVideoProcessHandler() { public void onStart(ZegoPublishChannel channel) { effects.initEnv(720, 1280); //SDK1.4.7后可以不呼叫此介面,若要呼叫,請先打開預覽再打開攝像頭 } }
4.1.2 初始化 直播美顏SDK Express SDK
呼叫 createEngine 介面,初始化 直播美顏SDK Express SDK,
/** 定義 SDK 引擎物件 */
ZegoExpressEngine express;
ZegoEngineProfile profile = new ZegoEngineProfile();
/** 請通過官網注冊獲取,格式為 123456789L */
profile.appID = appID;
/**請通過官網注冊獲取,格式為:"0123456789012345678901234567890123456789012345678901234567890123"(共64個字符)**/
profile.appSign = appSign;
/** 通用場景接入 */
profile.scenario = ZegoScenario.GENERAL;
/** 設定app的application 物件 */
profile.application = getApplication();
/** 創建引擎 */
express = ZegoExpressEngine.createEngine(profile, null);
4.2 獲取音視頻原始資料
Express SDK 可通過“自定義視頻采集”和“自定義視頻前處理”兩種方式獲取視頻原始資料,
“自定義視頻前處理”是由 Express SDK 內部采集視頻資料,原始視頻資料通過回呼獲取;“自定義視頻采集”則是由開發者自行采集視頻資料,并提供給 Express SDK,
兩種獲取方式的區別如下,開發者可根據實際情況按需選擇,
| 獲取資料方式 | 視頻資料采集方式 | 優勢 |
|---|---|---|
| 自定義視頻前處理 | SDK 內部采集, | 極簡搭配使用 Express SDK 和 Effects SDK,開發者無需管理設備輸入源,僅需對 Express SDK 拋出來的原始資料進行操作,然后傳回 Express SDK 即可, |
| 自定義視頻采集 | 開發者自行采集, | 在進行多廠家對接時,業務實作更加靈活,同時性能優化的空間更大, |
-
方式一:音視頻進階-自定義視頻前處理
以獲取
GL_TEXTURE_2D型別的原始視頻資料為例,開發者通過呼叫
enableCustomVideoProcessing介面,開啟自定義視頻前處理;開啟后,Express SDK 內部會采集視頻資料;采集完成后,可以通過onCapturedUnprocessedTextureData回呼介面,獲取采集到的視頻原始資料,ZegoCustomVideoProcessConfig config = new ZegoCustomVideoProcessConfig(); // 選擇 GL_TEXTURE_2D 型別視頻幀資料 config.bufferType = ZegoVideoBufferType.GL_TEXTURE_2D; // 開啟自定義前處理 express.enableCustomVideoProcessing(true, config, ZegoPublishChannel.MAIN);具體的原理可參考“實時音視頻”的 視頻進階 - 自定義視頻前處理,
-
方式二:自定義視頻采集
自定義視頻采集,主要依賴開發者自行采集視頻資料,具體方式請參考“實時音視頻”的 視頻進階 - 自定義視頻采集,
4.3 進行 AI 視覺美顏處理
獲取到視頻原始資料后,把資料傳遞給 Effects SDK,開始對視頻進行 AI 視覺(例如:美顏、美妝、背景分割等)處理,
-
方式一:音視頻進階-自定義視頻前處理
在
onCapturedUnprocessedTextureData回呼中,獲取到視頻原始資料后,呼叫 Effects SDK 的相關介面,進行 AI 視覺處理,并將處理后的資料,回傳給 Express SDK,// 自定義前處理為示例 // 回呼方法獲取原始資料 // 回呼處理 // Effect初始化反初始化在Express視頻前處理開始停止回呼里 express.setCustomVideoProcessHandler(new IZegoCustomVideoProcessHandler() { @Override public void onStart(ZegoPublishChannel channel) { effects.initEnv(720, 1280); } @Override public void onStop(ZegoPublishChannel channel) { effects.uninitEnv(); //一定要反初始化,否則會造成記憶體泄露 } // Receive texture from ZegoExpressEngine @Override public void onCapturedUnprocessedTextureData(int textureID, int width, int height, long referenceTimeMillisecond, ZegoPublishChannel channel) { ZegoEffectsVideoFrameParam param = new ZegoEffectsVideoFrameParam(); param.format = ZegoEffectsVideoFrameFormat.RGBA32; param.width = width; param.height = height; // Process buffer by ZegoEffects int processedTextureID = effects.processTexture(textureID, param); // Send processed texture to ZegoExpressEngine express.sendCustomVideoProcessedTextureData(processedTextureID, width, height, referenceTimeMillisecond); } } -
方式二:音視頻進階-自定義視頻采集
在開發者自定義的回呼介面中(可參考 視頻進階 - 自定義視頻采集 中的 “4.3 向 SDK 發送視頻幀資料”),呼叫 Effects SDK 的相關介面,進行 AI 視覺處理,并將處理后的資料,回傳給 Express SDK,
使用直播美顏SDK Effects SDK 實時調整 AI美顏 效果
在推拉流程序中,如果需要調整 AI 視覺的效果,可使用 Effects SDK 進行實時調整,
以“美白”功能為例,開發者可以呼叫 enableWhiten 介面開啟美白功能,并呼叫 setWhitenParam 介面設定美白的程度,
// 開啟美白功能
effects.enableWhiten(true);
// 設定美白強度,范圍 [0, 100],默認為 50
ZegoEffectsWhitenParam param = new ZegoEffectsWhitenParam();
param.intensity = 100;
effects.setWhitenParam(param);
4.4 推流處理后的資料
經由 直播美顏SDK Effects SDK 處理完成后,將處理后的資料,回傳給音視頻SDK Express SDK,
音視頻SDK Express SDK 呼叫 startPublishingStream 介面,傳入處理后的資料流 streamID,開始推流,發送給云服務器,
/** 開始推流 */
express.startPublishingStream("streamID");
4.5 拉取處理后的直播音視頻資料播放
音視頻SDK Express SDK 開始推流后,遠端用戶可以呼叫 startPlayingStream介面,傳入處理后的資料流 streamID,拉取視頻資料,進行播放,
/**
* 開始拉流,設定遠端拉流渲染視圖,視圖模式采用 SDK 默認的模式,等比縮放填充整個 View
* 如下 play_view 為 UI 界面上的 SurfaceView/TextureView/SurfaceTexture 物件
*/
express.startPlayingStream("streamID", new ZegoCanvas(play_view));
至此,開發者就可以完整地實作在推拉流音視頻的同時,實時調整 AI 視覺美顏效果,
5 獲取更多直播美顏SDK幫助
獲取本文直播美顏SDK的開發檔案、技術支持,可訪問即構檔案中心,有任何技術問題可聯系我們專業技術支持,
音視頻場景解決方案分享,更多詳情可搜索官網(https://zegoguanwang.datasink.sensorsdata.cn/t/pB)轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/501261.html
標籤:其他
上一篇:TF-GNN踩坑記錄(一)
下一篇:DNS
