如何三步對接美顏SDK?

首先我們瞭解一下什麼是美顏SDK? SDK是軟體開發工具包用來輔助開發某一類軟體的相關文件及工具的集合。而美顏SDK顧名思義是三方服務商提供能夠實現美顏功能的工具包。隨著社交行業的發展,美顏SDK的應用範圍也在不斷地變廣。為我們所熟知的直播、音影片通話、短影片、特效相機等社交場景都能夠看到美顏SDK的應用,而平臺如何快速對接好美顏成為我們比較關心的話題。

如何三步對接美顏SDK?

MT美顏SDK

對接美顏可以簡單的分為三個步驟:

SDK初始化

·

初始化方法需要使用

key

進行鑑權,鑑權成功方可使用。

·

Android

初始化方法呼叫如下:

·

MtSDK。

get

()。

initSDK

(context,

“key”

new

MtSDK。InitCallback() {

·

@Override

·

public

void

onSuccess

() { }

·

·

@Override

·

public

void

onFailure

() { }

·

});

·

IOS

初始化方法呼叫如下:

初始化函式程式中呼叫一次即可生效,建議使用者在

Application

建立的時候呼叫

如果渲染功能使用不頻繁,也可以在使用的時候呼叫

·

-

(BOOL)application:(UIApplication

*

)application didFinishLaunchingWithOptions:(NSDictionary

*

)launchOptions

·

{

·

//

線上鑑權初始化方法

·

·

[[MtSDK Get] initSDK:

鑑權的

key”

withDelegate:

self

];

·

return

YES;

·

}

·

#

pragma

mark - MtSDKDelegate

·

-

void

)onSuccess {

·

NSLog

@“MtSDK

載入成功

);

·

}

·

-

void

)onFailure {

·

NSLog

@“MtSDK

載入失敗

);

·

}

·

在日誌欄搜尋

InitInfo

,可檢視版本資訊和初始化狀態。

渲染步驟

Android平臺

·

定義布林變數

bool

,用來標誌渲染方法是否初始化完成,然後根據得到的影片幀格式的不同,使用對應的方法進行渲染;

·

GL_TEXTURE_EXTERNAL_OES

紋理格式,首先呼叫渲染初始化方法

initRenderTextureOES

,當返回

true

時初始化完成;然後呼叫渲染方法

renderTextureOES

,返回值為

GL_TEXTURE_2D

型別的紋理:

·

/**

·

*

紋理渲染初始化

·

*

·

* @param width

紋理寬度

·

* @param height

紋理高度

·

* @param rotation

紋理是否需要旋轉,不需旋轉為

CLOCKWISE_0

·

* @param isMirror

紋理是否存在映象

·

* @param number

人臉檢測數目上限設定,推薦取值範圍為

1~5

·

*/

·

public

boolean

initRenderTextureOES

int

width,

int

height, MtRotation rotation,

boolean

isMirror,

int

number);

·

·

/**

·

*

渲染

·

*

·

* @param textureOES

紋理

id

·

*/

·

public

int

renderTextureOES

int

textureOES);

·

·

/**

·

*

使用方法

·

*/

·

if

bool) {

·

bool

=

MtSDK。

get

()。

initRenderTextureOES

(width, height, rotation, isMirror, number);

·

}

·

int

textureId

=

MtSDK。

get

()。

renderTextureOES

(textureOES);

·

byte[]

影片幀,首先呼叫渲染初始化方法

initRenderPixels

,當返回

true

時初始化完成;然後呼叫渲染方法

renderPixels

·

/**

·

*

影片幀渲染初始化

·

*

·

* @param width

影片幀寬度

·

* @param height

影片幀高度

·

* @param rotation

影片幀是否需要旋轉,不需旋轉為

CLOCKWISE_0

·

* @param isMirror

影片幀是否存在映象

·

* @param number

人臉檢測數目上限設定,推薦取值範圍為

1~5

·

*/

·

public

boolean

initRenderPixels

int

width,

int

height, MtRotation rotation,

boolean

isMirror,

int

number);

·

/**

·

*

渲染

·

*

·

* @param data

影片幀陣列

·

*/

·

public

void

renderPixels

byte[]

data);

·

·

/**

·

*

使用方法

·

*/

·

if

bool) {

·

bool

=

MtSDK。

get

()。

initRenderPixels

(width, height, rotation, isMirror, number);

·

}

·

MtSDK。

get

()。

renderPixels

(data);

銷燬

·

結束渲染時,根據影片幀格式的不同,呼叫對應的

destroy

方法釋放掉資源,呼叫位置通常在

影片幀回撥介面

的銷燬處,或者是

Activity

Fragment

的銷燬處,同時將定義的布林變數

bool

置為

false

·

/**

·

*

使用其中一個

·

*/

·

MtSDK。

get

()。

destroyRenderPixels

();

·

MtSDK。

get

()。

destroyRenderTexture

();

·

MtSDK。

get

()。

destroyRenderTextureOES

();

·

·

/*

·

*

bool

置為

false

·

*/

bool

=

false

渲染步驟

IOS平臺

·

新建

[MtSDK Get]

管理器物件,所有的渲染都必須透過

[MtSDK Get]

物件呼叫,

[MtSDK Get]

的預設建構函式,新建預設渲染引數的渲染器物件

也可以透過具體功能函式來

預設

[MtSDK Get]

的渲染引數,程式碼如下

·

//

自定義渲染引數

·

[[MtSDK Get] setRenderEnable:YES];

·

[[[MtSDK Get] setWhitenessValue:

100

];

·

……

·

渲染

GL_TEXTURE_2D

的紋理,呼叫

[MtSDK Get]

renderTexture2D

方法,返回

GL_TEXTURE_2D

型別的紋理

ID

,程式碼如下

·

//

預設人臉相關特效可支援人臉數

·

BOOL isRenderInit

=

false;

//initRenderTextureWidth

初始化方法一般只執行一次該

isRenderInit

引數應設為全域性變數在釋放資源的時候從新設為

NO

·

if

isRenderInit){

·

isRenderInit

=

[[MtSDK Get] initRenderTextureWidth:imageWidth

·

Height:imageHeight

·

Rotation:CLOCKWISE_90

·

Mirror:YES

·

FaceNumber:

5

];

·

}

·

int

textureId

=

[[MtSDK Get] renderTexture:texture2D];

//2D

紋理

Id

·

渲染

CVPixelBufferRef

影片幀,呼叫

[MtSDK Get]

renderPixels

方法,返回渲染後的影片

幀,程式碼如下

·

//

預設人臉相關特效可支援人臉數

·

BOOL isRenderInit

=

false;

//initRenderTextureWidth

初始化方法一般只執行一次該

isRenderInit

引數應設為全域性變數在釋放資源的時候從新設為

NO

·

if

isRenderInit){

·

isRenderInit

=

[[MtSDK Get] initRenderPixelsFormat:BGRA

·

Width:imageWidth

·

Height:imageHeight

·

Rotation:CLOCKWISE_90

·

Mirror:YES

·

FaceNumber:

5

];

·

}

·

[[MtSDK Get] renderPixels:baseAddress];

銷燬

·

渲染結束,要釋放渲染資源,否則會造成記憶體洩漏,一般隨著渲染資料回撥介面的銷燬釋放,或者隨著生命週期結束釋放。釋放資源呼叫

[MtSDK Get]

destroy

方法,程式碼如下

·

//TEXTURE_2D

的紋理的釋放方法

·

[[MtSDK Get] destroyRenderTexture];

·

_isRenderInit

=

false;

·

//

影片幀的釋放方法

·

[[MtSDK Get] destroyRenderPixels];

·

_isRenderInit

=

false;

成功對接好美顏SDK後自然是比較在意它的使用效果,這也是為什麼各個平臺爭相接入美顏SDK的原因。美顏SDK的接入可以提升使用者的使用感,幫助平臺引流,增強使用者與平臺之間的黏性。現在市面上出現很多第三方美顏服務商,所以在挑選美顏SDK也要有多方面的考量要選擇專業的美顏服務商。