iOS
DingRTC SDK為您提供基礎(chǔ)美顏功能和第三方美顏接入功能的接口和回調(diào)。通過閱讀本文,您可以了解使用基礎(chǔ)美顏以及第三方美顏的相關(guān)流程。
基礎(chǔ)美顏
功能簡介
DingRTC SDK 在 3.2 及以上版本中提供了基礎(chǔ)美顏功能,包含了美白和磨皮兩種功能。您可以在直播、視頻通話、視頻會議等場景中,通過美顏功能提高使用體驗。
實現(xiàn)方法DingRTC SDK 通過 enableBeautyFace 方法設(shè)置是否啟用基礎(chǔ)美顏。
/** * 設(shè)置美顏 * @param enable 美顏開關(guān) * @param options 美顏參數(shù)控制 */ - (int)enableBeautyFace:(BOOL)enable withOption:(DingRtcBeautyFaceOptions* _Nonnull)options;
名稱
類型
描述
enable
BOOL
YES表示啟用,NO表示關(guān)閉,默認(rèn)為NO。
options
DingRtcBeautyFaceOptions *Nonnull
基礎(chǔ)美顏參數(shù)。
第三方美顏
功能簡介
功能簡介DingRTC SDK 在 3.2 及以上版本中提供了支持第三方美顏功能,通常第三方美顏SDK接受以下兩種類型的數(shù)據(jù)回調(diào)處理:
I420等不同格式的裸數(shù)據(jù)。
cvpixelbuffer的格式的數(shù)據(jù)。
接入流程
以下第三方美顏功能以接入I420和cvpixelbuffer的數(shù)據(jù)為例:
初始化 RtcEngine對象。
實現(xiàn)一個美顏處理的類,假設(shè)為BeautyFace, 里面繼承 NSObject <DingRtcVideoFrameDelegate>,并根據(jù)具體第三方美顏庫實現(xiàn)相關(guān)方法,onCaptureVideoFrame方法中根據(jù)frame的類型進行處理,并實現(xiàn)美顏處理的具體代碼。
enableVideoFrameObserver選擇回調(diào)的時機,setVideoFrameDelegate注冊視頻流觀察者回調(diào)。
在每一幀的視頻處理中,會回調(diào)到onCaptureVideoFrame進行視頻流的處理,如果處理成功,會覆寫原來的buffer內(nèi)容,如果處理失敗,buffer還是原來的內(nèi)容。
做第三方算法BeautyFace的銷毀工作。
第三方美顏接口調(diào)用
DingRTC SDK 在接入第三方美顏的時候,需要訂閱采集之后的前處理數(shù)據(jù),所以在 startPreview 之后需要調(diào)用 setVideoFrameDelegate 和enableVideoFrameObserver 接口獲取采集前處理數(shù)據(jù)并處理。
// @param enable 是否允許數(shù)據(jù)回調(diào)。 // @param position 視頻數(shù)據(jù)類型 - (int)enableVideoFrameObserver:(BOOL)enable position:(DingRtcVideoObservePosition)position;
// @param delegate DingRtcVideoFrameDelegate對象。 - (int)setVideoFrameDelegate:(id<DingRtcVideoFrameDelegate> _Nullable)delegate;
訂閱成功后,將會回調(diào) DingRtcVideoFrameDelegate 的 onCaptureVideoFrame 參數(shù)。
// 獲得回調(diào)視頻流數(shù)據(jù)并處理 // @param frame 視頻幀數(shù)據(jù) - (void)onCaptureVideoFrame:(DingRtcVideoFrame * _Nonnull)frame;