Android
DingRTC SDK為您提供基礎美顏功能和第三方美顏接入功能的接口和回調(diào)。通過閱讀本文,您可以了解使用基礎美顏以及第三方美顏的相關流程。
基礎美顏
功能簡介
基礎美顏功能,包含了美白和磨皮兩種功能。您可以在直播、視頻通話、視頻會議等場景中,通過美顏功能提高使用體驗。
實現(xiàn)方法
DingRTC SDK 通過
enableBeautyFace
方法設置是否啟用基礎美顏。public abstract int enableBeautyFace(boolean enable, DingRtcBeautyFaceOptions options);
參數(shù)
類型
描述
enable
boolean
是否啟用基礎美顏,取值:true:開啟美顏,false:關閉美顏。默認false。
options
DingRtcBeautyFaceOptions
基礎美顏參數(shù)。
第三方美顏
功能簡介
功能簡介DingRTC SDK 在 3.2 及以上版本中提供了支持第三方美顏功能,通常第三方美顏SDK接受以下兩種類型的數(shù)據(jù)回調(diào)處理:
I420等不同格式的裸數(shù)據(jù)。
openGL 紋理數(shù)據(jù)用于最終做美顏效果的處理。
接入流程
以下第三方美顏功能以接入opengl紋理為例:
初始化 RtcEngine對象。
實現(xiàn)一個美顏處理的類,假設為BeautyFaceObserver, 里面繼承 DingRtcEngine.DingRtcVideoObserver,并根據(jù)具體第三方美顏庫實現(xiàn)相關方法,onLocalVideoSample方法中實現(xiàn)美顏處理的具體代碼。
enableVideoSampleObserver選擇回調(diào)的時機,registerVideoSampleObserver注冊視頻流觀察者回調(diào)。
在每一幀的視頻處理中,會回調(diào)到onLocalVideoSample進行視頻流的處理,根據(jù)處理的結(jié)果,可以設置返回的textureId的值,如果成功處理,則返回更新的textureId的值,否則保持原來的textureId的值。
在onDestroy 做第三方算法BeautyFaceObserver的銷毀工作。
第三方美顏接口調(diào)用
DingRTC SDK 在接入第三方美顏的時候,需要訂閱采集之后的前處理數(shù)據(jù),所以在 startPreview 之后需要調(diào)用 enableVideoSampleObserver和registerVideoSampleObserver 接口獲取采集前處理數(shù)據(jù)并處理。
// @param enable 是否允許數(shù)據(jù)回調(diào)。 // @param position 視頻數(shù)據(jù)類型。 public abstract int enableVideoSampleObserver(boolean enable, int position);
// @param observer 視頻數(shù)據(jù)輸出對象。 public abstract void registerVideoSampleObserver(com.ding.rtc.DingRtcEngine.DingRtcVideoObserver observer);
訂閱成功后,將會回調(diào) DingRtcVideoObserver 的 onLocalVideoSample 參數(shù)。
// @param sourceType, 視頻流類型 // @param videoSample, 幀數(shù)據(jù) public boolean onLocalVideoSample(DingRtcEngine.DingRtcVideoSourceType sourceType, DingRtcEngine.DingRtcVideoSample videoSample) { return false; }
返回說明
return true:需要寫回SDK(默認寫回,需要操作DingRtcVideoSample.data時必須要寫回)
return false:不需要寫回SDK。(不需要寫回SDK(需要直接操作DingRtcVideoSample.dataFrameY、DingRtcVideoSample.dataFrameU、DingRtcVideoSample.dataFrameV時使用)