--> AG¿­·¢K8¹ú¼ÊSDK¼¼ÊõÎĵµ - º¼ÖÝAG¿­·¢K8¹ú¼ÊÊÓ¾õ¿Æ¼¼ÓÐÏÞ¹«Ë¾

AG¿­·¢K8¹ú¼Ê

AG¿­·¢K8¹ú¼ÊSDK¼¼ÊõÎĵµ

349
·¢±íʱ¼ä£º2022-11-18 15:09

AG¿­·¢K8¹ú¼ÊSDK¼¼ÊõÎĵµ

? ´ËÎĵµÓÉ¿ª·¢ÈËÔ±³ÖÐø¸üУ¬½¨ÒéÄúÊղشËÁ´½Ó¡£

? £¨½¨ÒéÄú·Åµ½ä¯ÀÀÆ÷µÄÊéÇ©À¸£¬ÒÔ·½±ãÔÄÀÀ£©

? SDK×îа汾£ºAG¿­·¢K8¹ú¼ÊSDK- 5.0.0

²úƷ˵Ã÷



ÂÌÄ»¿Ùͼ

? ¹¦ÄÜ£º¿ÙÂÌËã·¨£¬¹¤×÷Á÷³Ì£ºÒ»Ö¡Í¼ÏñÊäÈ룬°ÑÂÌÉ«¿ÙÈ¥£¬Êä³öÓÐ͸Ã÷µÄһ֡ͼÏñ¡£

? ÊÊÓÃÈËȺ£ºËùÓÐÓõ½¿ÙÂ̵Ŀª·¢ÈËÔ±¡£

ÂÌÄ»¿Ùͼ-ͼ²ã°æ

? ¹¦ÄÜ£ºÌṩ¿ÙͼËã·¨Í⣬»¹Ìṩֱ²¥³¡¾°Óõ½Ò»ÕûÌ×ͼ²ã´¦Àí½â¾ö·½°¸£¬°üÀ¨£º±³¾°ÊÓÆµ¡¢±³¾°Í¼Æ¬¡¢Ç°¾°£¬¹Ò¼þ£¬nv21ÊäÈë£¬ÎÆÀísurfaceÊäÈ룬ÉãÏñͼÊäÈ룬ͼ²ãµ÷½Ú£¬Í¼²ã¿ÙÂÌ£¬Í¼²ãµþ¼Ó£¬Í¼²ãÌæ»»£¬ºÏ²¢µ¼³öµÈ¹¦ÄÜ¡£

? ÊÊÓÃÈËȺ£ºÎÞÏà¹ØÍ¼Ïñ´¦Àí¾­ÑéµÄ¿ª·¢ÈËÔ±£¬»òÏ£ÍûAG¿­·¢K8¹ú¼ÊÌṩÕûÌ×½â¾ö·½°¸µÄ¿Í»§¡£¿ÉÒ»¼ü¼¯³É¡£

AIÈËÏñ¿Ùͼ

? ¹¦ÄÜ£ºAIÈËÏñʶ±ðËã·¨£¬¹¤×÷Á÷³Ì£ºÒ»Ö¡Í¼ÏñÊäÈ룬°ÑͼÏñÀïµÄÈËʶ±ð³öÀ´£¬Êä³ö³ýÈËÍⶼ͸Ã÷µÄÒ»Ö¡»­Ãæ¡£

? ÊÊÓÃÈËȺ£ºÓõ½AIÈËÏñʶ±ðµÄ¿ª·¢ÈËÔ±£¬±ÈÈçAR,VR,MR£¬ÊÓÆµ»áÒ飬ÎÞÂÌÄ»¿Ùͼ¹¦ÄܵÈ¡£

AIÈËÏñ¿Ùͼ-Â¼ÖÆ°æ

? ¹¦ÄÜ£ºÌṩAIÈËÏñ¿ÙͼÍ⣬»¹Ìá¹©Â¼ÖÆ³¡¾°ÖÐÒ»ÕûÌ×ͼ²ã´¦Àí½â¾ö·½°¸£¬°üÀ¨£º±³¾°ÊÓÆµ£¬±³¾°Í¼Æ¬£¬Ç°¾°£¬¹Ò¼þ£¬Í¼²ãµ÷½Ú£¬·Ö¶ÎÂ¼ÖÆ£¬»ØÉ¾£¬Í¼²ãµ÷½Ú£¬ºÏ³Éµ¼³öΪmp4µÈ¡£

? ÊÊÓÃÈËȺ£ºÎÞÏà¹ØÍ¼Ïñ´¦Àí¾­ÑéµÄ¿ª·¢ÈËÔ±£¬»òÏ£ÍûAG¿­·¢K8¹ú¼ÊÌṩÕûÌ×½â¾ö·½°¸µÄ¿Í»§¡£

ÊÓÆµ±à¼­

? ¹¦ÄÜ£ºÒ»ÕûÌ×»ùÓÚʱ¼äÖáµÄÊÓÆµ±à¼­ÄÜÁ¦½â¾ö·½°¸¡£

? ÊÊÓÃÈËȺ£ºËùÓÐÈË¡£¿ÉÒ»¼ü¼¯³É¡£

×ÔÓɱ༭

? ¹¦ÄÜ£ºÌṩµ×²ãµÄͼ²ãAPI£¬ÀàËÆÌṩÁ˺ܶà»ýľ£¬²¢»ýľ¿ÉÈÎÒâµ÷½ÚÅäÖá£

? ÊÊÓÃÈËȺ£ºÏë×ÔÓÉÀ©Õ¹¸öÐÔ»¯ÊÓÆµ¹¦ÄܵÄÈËÔ±¡£¸øÄú×î´óµÄÁé»î¶È£¬¿ÉÓнçÃæ£¬Ò²¿ÉÎÞ½çÃæ£¨ÅäÖúòÎÊýµ¼³ö£©¡£

ϵͳºÍËØ²Ä¸ñʽ֧³Ö

ϵͳ£º

1. Android£ºandroid6.0+ £¬ Opengles2.0£¬ OpenCL¡£

2. iOS: iOS9.0+£¬£¨AI¿Ùͼ½¨Òéios13+£©

3. windows£º window7+

ËØ²Ä¸ñʽ£º

1. ͼƬ:   jpg£¬ jpeg£¬ png£¬ heic£¬webp¡£

2. ÊÓÆµ: mp4£¬mov, ·Ö±æÂÊÖ§³Ö 720P£¬1080P£¬4K¡£

3. ¶¯»­: GIF£¬AG¿­·¢K8¹ú¼ÊSDK¶¨ÒåµÄmvÊÓÆµ, SVGA

4. ÉùÒô:   mp3£¬m4a£¬wav£¬ÓÐÉùÒôµÄmp4Îļþ£»

ÓïÑÔÖ§³Ö£º

1. android £º java£¬ C++

2. ios £º object-c£»

3. windows£ºC++£¬£¨C#¿Éµ÷ÓÃC++ ½Ó¿Ú£¬Ìṩµ÷ÓÃdemo£©

4. ÆäËû1£º Flutter£º¿ÉÅäÖõ÷ÓÃandroidµÄjava»òiosµÄ object-c

5. ÆäËû2£ºuni-app£º¿ÉÅäÖõ÷ÓÃandroidµÄjava »òiosµÄobject-c

¹æ¸ñ˵Ã÷£º

iOS

1. ×î´ó±à¼­Ê±³¤£º30·ÖÖÓ

2. ×î´óͼƬÊýÁ¿£º300ÕÅ¡£

3. ×î´óÊÓÆµÊ±³¤£º30·ÖÖÓ¡£

4. È糬¹ý£¬Ôò»áÌáʾÎÞ·¨¼ÓÔØ¡£

Android

1. TODO

¼¯³ÉºÍÊÚȨ

AG¿­·¢K8¹ú¼ÊSDKµÄAPIÉè¼Æ¹æÂÉ£º1+1



1. ΪÁËÈÃAPI¾¡¿ÉÄܵļò½à£ºAG¿­·¢K8¹ú¼ÊÑϸñÈù¦ÄÜÉè¼ÆÎª£º1+1 µÄÐÎʽ£»¼´Ò»¸öÈÝÆ÷Àà + Ò»¸öͼ²ãÀࣻ

2. ÈÝÆ÷ÀàÊÇ£ºÊÇ·ÅÖø÷ÖÖͼ²ãµÄÈÝÆ÷£¬¸ºÔðÔ¤ÀÀ£¬±à¼­£¬Â¼ÖÆ£¬µ¼³ö£¬Í¼²ãÔöɾ¸Ä²é£¬Í¼²ã¹ÜÀíµÈ¡£

3. ͼ²ãÀàÊÇ£ºÃ¿¸öͼƬ¡¢ÊÓÆµ¡¢ÉãÏñÍ·¡¢gif¡¢ÌùÖ½¡¢ÉùÒô¡¢ÎÄ×Ö£¬ÎÆÀí£¬ÍâÖò¥·ÅÆ÷£¬ÍâÖÃÉãÏñÍ·µÈµÈÔÚÔö¼Óµ½AG¿­·¢K8¹ú¼ÊSDKÀïºó£¬AG¿­·¢K8¹ú¼Ê°ÑËû·âװΪһ¸öͼ²ã¡£ÀàËÆUI²¼¾ÖÖеÄ×é¼þ¡£

4.

5. ¼ÓÒ»¸öËØ²Ä£¬µÃµ½Ò»¸ö¶ÔÓ¦µÄͼ²ã¶ÔÏó£¬Í¼²ã¶ÔÏó¿É×ö¸÷ÖÖ´óСλÖýǶÈ£¬Í¸Ã÷£¬Òþ²Ø£¬ÕÚÕÖ£¬µ÷É«£¬Â˾µ±à¼­£¬¿ÙÂÌ£¬AI¿ÙÈË£¬ÃÀÑÕ£¬pushÊý¾Ý£¬Çл»Í¼Æ¬µÈ²Ù×÷¡£

6.


µ÷ÊÔ

? androidÖеÄTAGÊÇLanSongSDK

? iOSºÍWindows »áÒÔLanSongSDK¿ªÍ·µÄÈÕÖ¾

? ¿ÉÌṩ¹ý¹ýÂËÈÕÖ¾µÄ¹Ø¼ü×ÖÀ´²é¿´AG¿­·¢K8¹ú¼ÊµÄÈÕÖ¾Êä³ö£¬AG¿­·¢K8¹ú¼ÊµÄÿ¸öÈÝÆ÷µÄ¿ªÆôºÍ¹Ø±Õ£¬»áÓÐÈÕÖ¾Êä³ö¡£

Android¼¯³É

1. µ¼Èë¹ý³Ì:   ÔÚÄãµÄÏîÄ¿Öеã»÷ File/import module µ¯³ö¶Ô»°¿ò, Ñ¡ÖÐLanSongSDKºÍLanSongAISDKÎļþ¼Ð,µã»÷µ¼Èë, È»ºóÔÚÄãÐèÒªµ÷ÓõÄmoduleÀï, ´ò¿ªbuild.gradle, Ôö¼Ó implementation project(':LanSongSDK')   implementation project(':LanSongAISDK')

2. ³õʼ»¯:   °ÑÊÚȨÎļþ·Åµ½ appµÄassetsÎļþ¼ÐÏ£¬Ôڼ̳ÐApplicationÀàµÄonCreate·½·¨ÖÐ,µ÷ÓÃһϷ½·¨:


Markdown

String keyName="·ÅÔÚassetsÀïµÄÊÚȨÎļþÃû×Ö";

LanSoEditor.initSDK(getApplicationContext(),keyName);


LSOBoxMattingTexture.setAiMatting(new LSOAiMattingTextureImpl(new LSOAiMattingVideo()));

LSOMattingAuth.loadModel(getApplicationContext(), keyName);

3. ÆäËû´úÂëµÄ¼¯³É£º


Markdown


1. ÂÌĻֱ²¥£ºÈÝÆ÷ÀàLSOCameraLive£¬ demoÔÚGreenMattingLiveActivity.javaÖУ¬¹æÔòÊÇ£ºÔÚActivityµÄ onCreate£¬ onPause£¬onResume£¬ onDestoryÖзֱð¼ÓÈëLSOCameraLive¶ÔÓ¦µÄͬ·½·¨Ãû×Ö£¬È»ºó´ó¸Å¿´LSOCameraLiveÔÚGreenMattingLiveActivity.javaÖеÄʹÓü´¿É¡£´ó¸Å¾ÍÊÇaddXXXLayerÈ»ºóµÃµ½Ò»¸öͼ²ã¶ÔÏó£¬ÓÃͼ²ã¶ÔÏóÈ¥ÉèÖø÷ÖÖЧ¹û

2. ÊÓÆµ±à¼­£ºÈÝÆ÷ÀàLSOEditPlayer£¬ demoÔÚVideoEditorDemoActivity.javaÖУ¬¹æÔòÊÇ£ºÔÚActivityµÄ onCreate£¬ onPause£¬onResume£¬ onDestoryÖзֱð¼ÓÈëLSOEditPlayer¶ÔÓ¦µÄͬ·½·¨Ãû×Ö£¬È»ºó¿ªÆôÈÝÆ÷¼´¿É¡£

4. ´úÂë»ìÏý£º



Markdown

Èç¹ûÄúÒª·¢²¼µÄʱºò»ìÏý´úÂ룬Ôò½¨Òé²»Òª»ìÏýAG¿­·¢K8¹ú¼ÊµÄsdk£¬»ìÏý¹æÔòÈçÏ£º

- £¨ÒÑÔÚ LanSongSDKºÍLanSongAISDKÀïµÄproguard-rules.proÎļþÖÐдºÃ£©

-keep public class com.lansosdk.videoeditor.** {

   *;

}


-keep public class com.lansosdk.videoplayer.** {

   *;

}



iOS¼¯³É

1. °Ñ<<LanSongSDK>>ºÍ <<LanSongAISDK>>Îļþ¼ÐÍϽøÄúµÄXcodeÖÐ, ²¢¼ì²éBuild PhasesµÄLinkºÍCopyÖÐÊÇ·ñÓжÔÓ¦µÄÎļþ.

2. Ôö¼Ó¸÷ÖÖϵͳͷÎļþ


Markdown

Ôö¼ÓSDKµÄÍ·Îļþ;

- #import <LanSongEditorFramework/LanSongEditor.h>

- #import "LanSongAIMatting/VisionSDKMattingAPI.h"

- µ¼ÈëһЩϵͳÒÀÀµ¿â:OpenGLES.framework Accelerate.framework Metal.framework,CoreML.framework,VideoToolbox.framework CoreGraphics.framework,

CoreVideo.framework CoreMedia.framework, libiconv.tbd,libz.tbd,libbz2.tbd libc++.tbd

3. ³õʼ»¯£º

? °ÑÊÚȨÎļþÍϵ½ÄúÏîÄ¿ÖУ¬²¢È·±£ÔÚbundl phasesÖС£

? °ÑһϴúÂë¸´ÖÆµ½AppDelegate.mÖеÄdidFinishLaunchingWithOptions·½·¨ÖÐ.


Markdown

//³õʼ»¯AG¿­·¢K8¹ú¼ÊSDK

    NSString *path = [[NSBundle mainBundle] pathForResource:@"ios_lansong_end20220801" ofType:@"license"];

    [self setupLanSongSDKwithLicense:path];

   

    ÆäÖз½·¨ÊÇ£º

/// ³õʼ»¯AG¿­·¢K8¹ú¼ÊSDK

/// @param licensePath ÊÚȨÎļþµÄÍêÕû·¾¶

- (void)setupLanSongSDKwithLicense:(NSString *)licensePath

{

    [LanSongContext setOpengles30:YES];

    if ([LanSongEditor initSDKWithPath:licensePath] == NO) {

        NSLog(@"AG¿­·¢K8¹ú¼ÊSDK ³õʼ»¯Ê§°Ü");

        return;

    }

   

   

    [LanSongFFmpeg initLanSongFFmpeg];

    [LSOFileUtil deleteAllSDKFiles];

    [VisionSDKMattingAPI setLicenseWithPath:licensePath];

    LSOAiMattingInterface *interface=[[LSOAiMattingInterface alloc] init];

    [LSOAiMattingEntry2 setSegmentInput:interface];

}

Windows¼¯³É

1. SDKÊÇÒ»¸ö¡¶LanSongSDK¡·Îļþ¼Ð£¬ÀïÃæÓжà¸öÎļþ£¬ÆäÖÐÓÐdllºÍÄ£ÐÍÎļþ¡£

2. dllÎļþ²ÉÓö¯Ì¬¼ÓÔØ¿âµÄÐÎʽִÐУ¬¹ÊÔÚÄúµÄÏîÄ¿ÖÐûÓÐÒýÓúÍÅäÖã¬Ö»ÐèÒª°ÑdllÎļþºÍÄ£ÐÍÎļþ·Åµ½Ö´ÐÐÎļþ¼ÐÏ£¬²¢ÔÚ´úÂëÀïÉèÖú÷¾¶¼´¿É¡£

3. ²Î¿¼AG¿­·¢K8¹ú¼ÊdemoÖеļÓÔØdllµÄÐÎʽ£¬°Ñ3¸ö·½·¨µÄÖ¸Õ뺯Êý¼ÓÔØ½øÀ´


Markdown

¾ßÌåÈçÏ£º

- ÉùÃ÷£º

        t_fn_VisionSDKSegmentAPI_init pfn_VisionSDKSegmentAPI_init;

        t_fn_VisionSDKSegmentAPI_segmentOneFrame pfn_VisionSDKSegmentAPI_segmentOneFrame;

        t_fn_VisionSDKSegmentAPI_release pfn_VisionSDKSegmentAPI_release;

- ʹÓà      

m_hTNNModule = ::LoadLibrary(_T("TNN.dll"));

        if (NULL == m_hTNNModule) {

                OutputDebugString(_T("load TNN.dll failed"));

                return;

        }

        pfn_VisionSDKSegmentAPI_init = (t_fn_VisionSDKSegmentAPI_init)GetProcAddress(m_hTNNModule, "?VisionSDKSegmentAPI_init@@YAHPEAX00@Z");

        pfn_VisionSDKSegmentAPI_segmentOneFrame = (t_fn_VisionSDKSegmentAPI_segmentOneFrame)GetProcAddress(m_hTNNModule, "?VisionSDKSegmentAPI_segmentOneFrame@@YAHPEAEHH0@Z");

        pfn_VisionSDKSegmentAPI_release = (t_fn_VisionSDKSegmentAPI_release)GetProcAddress(m_hTNNModule, "?VisionSDKSegmentAPI_release@@YAXXZ");

        if (NULL == pfn_VisionSDKSegmentAPI_init || NULL == pfn_VisionSDKSegmentAPI_segmentOneFrame

                || NULL == pfn_VisionSDKSegmentAPI_release) {

                OutputDebugString(_T("GetProcAddress TNN.dll failed"));

                return;

        }


ÑÝʾ¹¤³Ì´úÂë˵Ã÷


Android£º


CSS

©¤©¤ MainActivity.java   (Ö÷½çÃæ)

    ©À©¤©¤ GreenMattingAPIDemoActivity.java   (ÂÌÄ»¿ÙͼÑÝʾ)

    ©À

    ©À©¤©¤ GreenMattingLiveActivity.java   £¨¿ÙÂÌ¿Ùͼ-ͼ²ã°æÑÝʾ£©

    ©À

    ©À©¤©¤ AiMattingAPIDemoActivity.java £¨AIÈËÏñ¿ÙͼÑÝʾ£©

    ©À

    ©À©¤©¤ AiMattingRecordDemoActivity.java £¨AIÈËÏñ¿Ùͼ-Â¼ÖÆ°æÑÝʾ£©

    ©À

    ©¸©¤©¤ VideoEditorDemoActivity.java £¨ÊÓÆµ±à¼­ÑÝʾ£©

    ©À

    ©¸©¤©¤ LayerEditorDemoActivity.java £¨×ÔÓɱ༭ÑÝʾ£©

iOS :


CSS

©¤©¤ HomeViewController.m   (Ö÷½çÃæ)

    ©À©¤©¤ DemoGreenMattingAPIVC.m   (ÂÌÄ»¿ÙͼÑÝʾ)

    ©À

    ©À©¤©¤ GmLiveRootViewController.m   £¨¿ÙÂÌ¿Ùͼ-ͼ²ã°æÑÝʾ£©

    ©À

    ©À©¤©¤ DemoAiMattingCameraVC.m £¨AIÈËÏñ¿ÙͼÑÝʾ£©

    ©À

    ©À©¤©¤ CameraRecordViewController.m £¨AIÈËÏñ¿Ùͼ-Â¼ÖÆ°æÑÝʾ£©

    ©À

    ©¸©¤©¤ VideoEditViewController.m £¨ÊÓÆµ±à¼­ÑÝʾ£©

    ©À

    ©¸©¤©¤ LayerEditorViewController.m £¨×ÔÓɱ༭ÑÝʾ£©

API ½Ó¿ÚÎĵµËµÃ÷


ÂÌÄ»¿Ùͼ-android


Java


public class LSOGreenMatting {


    public LSOGreenMatting();

    /**

     * ÉèÖÿÙÏñÇ¿¶È, ·¶Î§ÊÇ0--100;

     */

    public void setGreenMattingLevel(int level);


    /**

     * »ñÈ¡µ±Ç°¿Ùͼǿ¶È

     * ·¶Î§ÊÇ0--100;

     */

    public int getGreenMattingLevel();


    /**

     * »ñȡĬÈÏ¿Ùͼǿ¶È

     */

    public int getGreenMattingDefaultLevel();


    /**

     * ¿ÙÂ̵ı£»¤ÇøÓòÉèÖÃ

     * xStartºÍxEndµÄ·¶Î§ 0.0---1.0;

     * yStart ºÍ yEndµÄ·¶Î§ÊÇ0.0 --1.0;

     *

     * @param xStart ºáÏò×ø±êµÄ¿ªÊ¼ÇøÓò.

     * @param xEnd   ºáÏò×ø±êµÄ½áÊøÇøÓò×ø±ê. ·¶Î§ÊÇ0.0---1.0; ×ó²àÊÇ0.0, ×îÓÒ²àÊÇ1.0;

     * @param yStart ×ÝÏòYµÄ¿ªÊ¼×ø±ê·¶Î§ÊÇ0.0---1.0; ÉϲàÊÇ0.0, ×îϲàÊÇ1.0;

     * @param yEnd   ×ÝÏòYµÄ½áÊø×ø±ê, ·¶Î§ÊÇ0.0---1.0; ÉϲàÊÇ0.0, ×îϲàÊÇ1.0;

     */

    public void setGreenMattingProtectRect(float xStart, float xEnd, float yStart, float yEnd);


    /**

     * È¡ÏûÂÌÄ»¿ÙͼµÄÇøÓò±£»¤

     */

    public void cancelGreenMattingProtectRect();

    /**

     * »ñÈ¡¿ÙÂ̵Ä×îСãÐÖµ·¶Î§

     */

    public Range<Float> getMattingGreenMinThresholdRange();


    /**

     * »ñÈ¡¿ÙÂ̵Ä×î´óãÐÖµ·¶Î§

     */

    public Range<Float> getMattingGreenMaxThresholdRange();


    /**

     * ÉèÖÿÙÂ̵Ä×îСãÐÖµ;

     */

    public void setMattingGreenMinThreshold(float value);


    /**

     * »ñÈ¡µ±Ç°¿ÙÂ̵Ä×îСãÐÖµ;

     */

    public float getMattingGreenMinThreshold();


    /**

     * ÉèÖÿÙÂ̵Ä×î´óãÐÖµ;

     */

    public void setMattingGreenMaxThreshold(float value);



    /**

     * »ñÈ¡¿ÙÂ̵Ä×î´óãÐÖµ;

     */

    public float getMattingGreenMaxThreshold();


    /**

     * ÉèÖÿÙÀ¶µÄ×îСãÐÖµ·¶Î§;

     * @return

     */

    public Range<Float> getMattingBlueMinThresholdRange();


    /**

     * ÉèÖÿÙÀ¶µÄ×î´óãÐÖµ·¶Î§;

     */

    public Range<Float> getMattingBlueMaxThresholdRange();


    /**

     * ÉèÖÿÙÀ¶µÄ×îСãÐÖµ

     */

    public void setMattingBlueMinThreshold(float value);


    /**

     * »ñÈ¡µ±Ç°¿ÙÀ¶µÄ×îСãÐÖµ

     */

    public float getMattingBlueMinThreshold() ;


    /**

     * ÉèÖÿÙÀ¶µÄ×î´óãÐÖµ

     */

    public void setMattingBlueMaxThreshold(float value);


    /**

     * »ñÈ¡µ±Ç°¿ÙÀ¶µÄ×î´óãÐÖµ;

     */

    public float getMattingBlueMaxThreshold() ;


    /**

     * »ñÈ¡¿ÙºìµÄ×îСãÐÖµ·¶Î§;

     */

    public Range<Float> getMattingRedMinThresholdRange() ;


    /**

     * »ñÈ¡¿ÙºìµÄ×î´óãÐÖµ·¶Î§;

     */

    public Range<Float> getMattingRedMaxThresholdRange();


    /**

     * ÉèÖÿٺìµÄ×îСãÐÖµ;

     */

    public void setMattingRedMinThreshold(float value) ;



    /**

     * »ñÈ¡µ±Ç°¿ÙºìµÄ×îСãÐÖµ

     */

    public float getMattingRedMinThreshold() ;


    /**

     * ÉèÖÿٺìµÄ×î´óãÐÖµ;

     */

    public void setMattingRedMaxThreshold(float value);



    /**

     * »ñÈ¡µ±Ç°¿ÙºìµÄ×î´óãÐÖµ

     */

    public float getMattingRedMaxThreshold() ;


    /**

     * ÉèÖÿÙͼÀàÐÍ;

     * µ±Ç°Ö§³Ö NONE/ GREEN /BLUE/RED;

     * @param type

     */

    public void setMattingType(LSOGreenMattingType type) ;



    /**

     * Ö´ÐÐÂÌÄ»¿Ùͼ

     * ´Ë·½·¨¹¤×÷ÔÚopenglesÓï¾³ÖÐ.

     * @param context   androidµÄContextµÄÓï¾³¿ÉÒÔÊÇgetApplicationContext()

     * @param textureId sample2DÀàÐ͵ÄÎÆÀí, ½¨ÒéÊÇfboäÖȾºóµÄ.

     * @param width     ÎÆÀíµÄ¿í¶È

     * @param height    ÎÆÀíµÄ¸ß¶È

     * @return ·µ»ØäÖȾºóµÄÎÆÀí, ʧ°ÜÔò·µ»Ø-1

     */

    public int renderOnGPU(Context context, int textureId, int width, int height);

;


    /**

     * Ö´ÐÐÂÌÄ»¿Ùͼ camera»·¾³ÏÂ.

     *   ´Ë·½·¨¹¤×÷ÔÚopenglesÓï¾³ÖÐ.

     * @param context   androidµÄcontextÓï¾³

     * @param textureId ÊäÈëµÄÏà»úÎÆÀíEXTÀàÐÍ

     * @param tmpMatrix Ïà»ú»ñÈ¡µ½µÄ×ø±ê

     * @param front µ±Ç°ÊÇ·ñǰÖÃ

     * @param width ÎÆÀí¿í¶È

     * @param height ¸ß¶È

     * @return ·µ»ØäÖȾºóµÄÎÆÀí,ʧ°ÜÔò·µ»Ø-1

     */

    public int renderCameraExtIdOnGPU(Context context, int textureId, float[] tmpMatrix, boolean front, int width, int height);


    /**

     * ÊÍ·ÅÎÆÀí

     * ´Ë·½·¨¹¤×÷ÔÚopenglesÓï¾³ÖÐ.

     */

    public void releaseOnGPU();


}

ÂÌÄ»¿Ùͼ-iOS


Objective-C


#import <Foundation/Foundation.h>

#import "LSOObject.h"

NS_ASSUME_NONNULL_BEGIN


@interface LSOGreenMatting : LSOObject

/**

³õʼ»¯

*/

- (instancetype)init;


/**

size: ÊÇÊäÈëµÄͼÏñ¿í¸ß;

Èç¹ûÊÇÊúÆÁÔò½¨ÒéÊÇ720x1280 / 1080x1920;

Èç¹ûÊǺáÆÁ,Ôò½¨ÒéÊÇ1280x720   / 1920x1080;

½öÔÚ³õʼ»¯ºó,ÉèÖÃÒ»´Î; ²»¿É¶à´ÎÉèÖÃ;

*/

@property (nonatomic, assign)CGSize renderSize;


/**

äÖȾһ֡,ÊäÈëµÄÊÇsampleBuffer

Êä³öµÄÊÇCVPixelBuffer;

*/

- (CVPixelBufferRef)renderOneFrameWithSampeBuffer:(CMSampleBufferRef)sampleBuffer;


/**

¿ÙÂÌÒ»Ö¡

*/

- (CVPixelBufferRef)renderOneFrameWithPixelBuffer:(CVPixelBufferRef)pixelBuffer;




/**

ÊÍ·Å;

*/

- (void)releaseLSO;



/**

ÉèÖ÷ָîÀàÐÍ, ĬÈÏÊÇÂÌÉ«; Ö§³ÖÂÌÉ«/ºìÉ«/À¶É«/ÎÞ;

*/

@property (nonatomic, assign) VisionSDKMattingType mattingType;


/**

ÂÌÄ»¿ÙͼµÄµ÷½Ú¼¶±ð

·¶Î§ÊÇ:

0--1.0f;

0ÊǽûÖ¹¿ÙÏñ; 0.1¿ÙµÄºÜÈõ; 0.5ÊÊÖÐ; 1.0ÊǿٵÄ×îÇ¿(¿ÉÄÜ»á°ÑһЩ²»ÊÇÂ̵ÄÒ²¿ÙÈ¥)

*/

@property (nonatomic,assign) CGFloat greenMattingLevel;


/**

¶ÁȡĬÈÏÇ¿¶È;

*/

@property (nonatomic,readonly) CGFloat greenMattingLevelDefault;



/// ÔÚÂÌÄ»¿ÙͼµÄʱºò, ¹âÏߺܰµµÄÇé¿öÏ¿ÉÄÜÓÐÒõÓ°,ÕâÀïÊÇÉèÖÃÒõÓ°µÄ°Ù·Ö±È.

/// ·¶Î§ÊÇ0.0---1.0; ĬÈÏÊÇ1.0; 0.0ÊÇÍêÈ«Ïû³ý; 1.0ÊDz»Ïû³ý;

@property (nonatomic, assign) CGFloat greenMattingShadowPercent;



///--------------------------------------------¿ÙÂÌ---------------------------------

/// »ñÈ¡¿ÙÂÌ×îСãÐÖµ·¶Î§start;

@property (nonatomic, readonly) CGFloat mattingGreenMin_start;


/// »ñÈ¡¿ÙÂ̵Ä×îСãÐÖµ·¶Î§end

@property (nonatomic, readonly) CGFloat mattingGreenMin_end;


/// »ñÈ¡¿ÙÂ̵Ä×îСãÐֵĬÈÏÖµ;

@property (nonatomic, readonly) CGFloat mattingGreenMin_default;



/// ÉèÖúͻñÈ¡¿ÙÂ̵Ä×îСãÐÖµ

@property (nonatomic,assign) CGFloat mattingGreenMin;



/// »ñÈ¡¿ÙÂ̵Ä×î´óãÐÖµ·¶Î§start;

@property (nonatomic, readonly) CGFloat mattingGreenMax_start;



/// »ñÈ¡¿ÙÂ̵Ä×î´óãÐÖµend

@property (nonatomic, readonly) CGFloat mattingGreenMax_end;


/// »ñÈ¡¿ÙÂ̵Ä×î´óãÐֵĬÈÏÖµ;

@property (nonatomic, readonly) CGFloat mattingGreenMax_default;


/// ÉèÖúͻñÈ¡¿ÙÂ̵Ä×î´óãÐÖµ

@property (nonatomic,assign) CGFloat mattingGreenMax;



///----------------------------------------------¿ÙÀ¶(²ÎÊýº¬Òåͬ¿ÙÂÌ)-------------------------------

//µ÷½ÚÀ¶É«¿Ùͼ×îСãÐÖµ

@property (nonatomic, readonly) CGFloat mattingBlueMin_start;

@property (nonatomic, readonly) CGFloat mattingBlueMin_end;

@property (nonatomic, readonly) CGFloat mattingBlueMin_default;

@property (nonatomic, assign) CGFloat mattingBlueMin;




//µ÷½ÚÀ¶É«¿Ùͼ×î´óãÐÖµ

@property (nonatomic, readonly) CGFloat mattingBlueMax_start;

@property (nonatomic, readonly) CGFloat mattingBlueMax_end;

@property (nonatomic, readonly) CGFloat mattingBlueMax_default;

@property (nonatomic, assign) CGFloat mattingBlueMax;



///---------------------------------------------¿Ùºì(²ÎÊýº¬Òåͬ¿ÙÂÌ)-------------------------------

//µ÷½ÚºìÉ«¿Ùͼ×îСãÐÖµ

@property (nonatomic, readonly) CGFloat mattingRedMin_start;

@property (nonatomic, readonly) CGFloat mattingRedMin_end;

@property (nonatomic, readonly) CGFloat mattingRedMin_default;

@property (nonatomic, assign) CGFloat mattingRedMin;



//µ÷½ÚºìÉ«¿Ùͼ×î´óãÐÖµ

@property (nonatomic, readonly) CGFloat mattingRedMax_start;

@property (nonatomic, readonly) CGFloat mattingRedMax_end;

@property (nonatomic, readonly) CGFloat mattingRedMax_default;

@property (nonatomic, assign) CGFloat mattingRedMax;


/// ÉèÖÃÂÌÉ«¿ÙͼµÄ±£»¤ÇøÓò.

/// ±£»¤ÇøÓòÄÚ²»¿Ùͼ;

/// @param startX ºáÏòµÄ¿ªÊ¼µã, ºáÏò´Ó×óµ½ÓÒ,·Ö±ðÊÇ0.0---1.0;

/// @param endX ºáÏòµÄ½áÊøµã, ºáÏò´Ó×óµ½ÓÒ,·Ö±ðÊÇ0.0---1.0;

/// @param startY ÊúÏòµÄ½áÊøµã, ´ÓÉϵ½ÏÂ,·Ö±ðÊÇ0.0---1.0;

/// @param endY ÊúÏòµÄ½áÊøµã, ´ÓÉϵ½ÏÂ,·Ö±ðÊÇ0.0---1.0;

-(void)setMattingProtectRect:(CGFloat)startX endX:(CGFloat)endX startY:(CGFloat)startY endY:(CGFloat)endY;


/**

È¡Ïû±£»¤ÇøÓò

*/

-(void)cancelMattingProtectRect;



@end


NS_ASSUME_NONNULL_END

AIÈËÏñ¿Ùͼ-Android


PHP

public class LSOAiMattingCamera {

    /**

     * Òì²½³õʼ»¯

     */

    public void initAsync()

    /**

     * Òì²½³õʼ»¯ÊÇ·ñÍê±Ï;

     */

    public boolean isReady()


    /**

     * Ïà»úÊÇ·ñÇл»¾µÍ·

     * Èç¹ûÊÇÊÓÆµ¿Ùͼ,Ôò²»ÐèÒªµ÷ÓÃ;

     */

    public void changeCameraOnGPU()


    /**

     *   ¶ÔÏà»úcameraµÄ¿Ùͼ

     * @param isExt ÊÇ·ñÊÇextÀàÐ͵ÄÎÆÀí

     * @param texture ÎÆÀíid

     * @param tmpMatrix ÎÆÀíµÄmatrix×ø±ê

     * @param front µ±Ç°ÊÇ·ñÊÇǰÖÃ

     * @param width ÎÆÀíµÄ¿í¶È

     * @param height ÎÆÀíµÄ¸ß¶È

     * @return ¿ÙͼºóµÄÎÆÀí, Èçʧ°Ü·µ»Ø-1;

     * @throws Exception ÆäËûÇé¿ö»áÅ׳öÒì³£

     */

    public int mattingTextureOnGPU(boolean isExt, int texture, float[] tmpMatrix, boolean front, int width, int height) throws Exception;


    /**

     * sample2DÀàÐ͵ÄÎÆÀí;

     * [ͼƬ¿ÙͼÓõ½]

     * @param textureId ÎÆÀí

     * @param width     ÎÆÀí¿í¶È

     * @param height    ÎÆÀí¸ß¶È

     * @return

     */

    public int mattingSample2DTextureOnGPU(int textureId, int width, int height) throws Exception;



    /**

     * ÊÍ·Å

     * ¹¤×÷ÔÚGPUÓï¾³ÏÂ;

     */

    public void releaseOnGPU();



}

AI ÈËÏñ¿Ùͼ- iOS


Objective-C


//

//   VisionSDKAiMattingAPI.h

//   LanSongEditorFramework

//

//   Created by sno on 2021/12/30.

//   Copyright ? 2021 sno. All rights reserved.

//


#import <Foundation/Foundation.h>

#import <Foundation/Foundation.h>

#import "LSOObject.h"



NS_ASSUME_NONNULL_BEGIN


@interface LSOAiMatting : NSObject




/// ¿Ùͼ³õʼ»¯ , ´Ë·½·¨ºÄʱ,½¨Òé·Åµ½Òì²½Ö´ÐÐ;

/// @param force ÊÇ·ñÇ¿ÖÆµÈ¼¶, ÈçÉèÖÃΪNO,ÔòÄÚ²¿»á¸ù¾Ý²»Í¬´¦ÀíÆ÷,¶ø×öÏà¹ØµÄµ÷Õû; ÉèÖÃΪYESÔòÓÃ×îºÃµÄµÈ¼¶;

/// @param fastMode ÊÇ·ñÊÇ¿ìËÙģʽ, ½¨ÒéΪ¿ìËÙģʽ; ÉèÖÃΪYES

/// @param angle ±¾µØÊÓÆµµÄʱºò, ÊÇ·ñÐýת½Ç¶È;

- (instancetype)initWithForceLevel:(BOOL)force fastMode:(BOOL)fastMode videoRotateAngle:(int)angle;



/// ÊÇ·ñÕýÔÚ¹¤×÷;

@property (nonatomic, readonly) BOOL   isWorking;



/// ÊÇ·ñ»­Ãæ×óÓÒ¾µÏñ;

@property (nonatomic, assign) BOOL   mirrorX;




/// ÊÇ·ñÊä³ömaskÀàÐ͵ĺڰ×ͼÏñ; ÔÚµ÷ÓÃmattingWithSampleBuffer ֮ǰÉèÖÃ;

/// [²»½¨ÒéÉèÖÃ]

@property (nonatomic, assign) BOOL   outMaskData;




@property (nonatomic, assign) BOOL   advanceMatting;




/// ¿Ùͼ·½·¨

/// @param sampleBuffer ÊäÈëµÄÊÇÉãÏñÍ·µÄͼÏñ, ÐèÒªÊÇkCVPixelFormatType_32BGRA¸ñʽ

/// @param handler ¿ÙͼÍê±ÏºóµÄ»­Ãæ,¿Éת»»ÎªUIImage,Ö±½ÓÔ¤ÀÀ, ¹¤×÷ÔÚUI(dispatch_get_main_queue)Ïß³ÌÖÐ;

- (void)mattingWithSampleBuffer:(CMSampleBufferRef)sampleBuffer handler:(void (^)(CVImageBufferRef)) handler;




/// ÊÍ·Å

- (void)releaseLSO;


@end


NS_ASSUME_NONNULL_END


AIÈËÏñ¿Ùͼ- widows


C++


#ifndef VisionSDKSegmentAPI_H

#define VisionSDKSegmentAPI_H


#include <string>


#pragma warning(push)

#pragma warning(disable : 4251)


class __declspec(dllimport) VisionSDKSegmentAPI {

public:

    /**

     * @brief   ³õʼ»¯·Ö¸îÄ£ÐÍ

     *

     * @param keyPath Ä£Ð͵ÄÊÚȨÎļþ, ÔÝʱΪnull;

     * @param protoPath ÊäÈëAG¿­·¢K8¹ú¼ÊÌṩµÄtenLineV3.proto·¾¶

     * @param modelPath ÊäÈëAG¿­·¢K8¹ú¼ÊÌṩµÄtenLineV3.model·¾¶

     * @return int ³õʼ»¯³É¹¦,·µ»Ø0; ʧ°Ü·µ»Ø-1;

     */

    int init(std::string keyPath, std::string protoPath, std::string modelPath);


    /**

     * @brief ¿ªÊ¼·Ö¸îÒ»Ö¡Êý¾Ý

     *

     * @param rgba Òª·Ö¸îµÄͼÏñÊý¾ÝÖ¸Õë,rgba¸ñʽ

     * @param width ͼÏñÊý¾ÝµÄ¿í¶È

     * @param height   Í¼ÏñµÄ¸ß¶È

     * @param dst   ·Ö¸îÍê±Ïºó·µ»ØµÄͼÏñÖ¸Õë, rgba¸ñʽ£¬ÄÚ²¿ÊÇ¿ÙͼÍê±ÏºóµÄÒ»Ö¡´øÍ¸Ã÷µÄ»­Ãæ¡£

     * @return int ·Ö¸î³É¹¦·µ»Ø0,ʧ°Ü·µ»Ø-1;

     */

    int segmentOneFrame(unsigned char *rgba, int width, int height, unsigned char *dst);


    /**

     * @brief ÊÍ·Å·Ö¸îÄ£ÐÍ

     *

     * @return int ·µ»Ø0;

     */

    int release();


private:

    int createModelEnty(int level, int cpuType);

    double testRunTime(int type);

};


//------------------

//

//   Èç¹ûÄúÊÇC# ½Ó¿Ú, Ôò½¨ÒéÓÃÒÔÏÂÐÎʽ

// ÒÔÏ´úÂëºÍVisionSDKSegmentAPIÀà¶ÔÏóµÄÐÎʽµ×²ãÊÇͬһ·Ý´úÂë.

//


/**

* @brief ´òÓ¡µ÷ÊÔÐÅÏ¢¿ª¹Ø;

*   is =1 Ôò´òÓ¡ÐÅÏ¢, =0 ²»´òÓ¡;

*/

__declspec(dllimport) void _stdcall setVisionSDKSegmentAPIPrintDebugInfo(int is);


/**

* @brief ³õʼ»¯

*

* @param ptrKeyPath ÊÚȨÎļþ·¾¶µÄÖ¸Õë, ÄÚ²¿»áתºÃΪchar *;

* @param ptrProtoPath

* @param ptrModelPath

* @return int ³É¹¦·µ»Ø0; ʧ°Ü·µ»Ø-1;

*/

__declspec(dllimport) int _stdcall VisionSDKSegmentAPI_init(void *ptrKeyPath, void *ptrProtoPath, void *ptrModelPath);

/**

* @brief ¿ªÊ¼·Ö¸îÒ»Ö¡Êý¾Ý

*

* @param rgba Òª·Ö¸îµÄͼÏñÊý¾ÝÖ¸Õë,rgba¸ñʽ

* @param width ͼÏñÊý¾ÝµÄ¿í¶È

* @param height   Í¼ÏñµÄ¸ß¶È

* @param dst   ·Ö¸îÍê±Ïºó·µ»ØµÄͼÏñÖ¸Õë, rgba¸ñʽ

* @return int ·Ö¸î³É¹¦·µ»Ø0,ʧ°Ü·µ»Ø-1;

*/

__declspec(dllimport) int _stdcall VisionSDKSegmentAPI_segmentOneFrame(unsigned char *rgba, int width, int height,

                                                                       unsigned char *dst);


/**

* @brief ÊÍ·Å·Ö¸îÄ£ÐÍ

*/

__declspec(dllimport) void _stdcall VisionSDKSegmentAPI_release(void);


#pragma warning(pop)

#endif   // VisionSDKSegmentAPI_H

ÂÌÄ»¿Ùͼ- ͼ²ã°æ

? ÒòAG¿­·¢K8¹ú¼ÊandroidºÍiosµÄ½Ó¿Ú´úÂë¶¼Êǹ«¿ªµÄ£¬¿ÉÒÔÔÚÄú¼¯³ÉºÃAG¿­·¢K8¹ú¼ÊSDKºó£¬ÔÚSDKµÄÎļþÖм´¿É¿´µ½Ã¿¸öÀàÿ¸ö½Ó¿ÚµÄ˵Ã÷¡£

? android£ºÀàÃû£ºLSOCameraLive.java£»Î»ÖãºÔÚLanSongSDKÎļþ¼ÐµÄmain/javaĿ¼Ï¡£

? ios£ºÀàÃû£ºLSOCameraLive.h£»Î»ÖÃÔÚ£ºLanSongEditorFrameWork/LSOCameraLive.h Ï¡£

? ´óÖÂ˵Ã÷£ºLSOCameraLiveÊÇÒ»¸öÏà»úÔ¤ÀÀÈÝÆ÷£¬AG¿­·¢K8¹ú¼ÊĬÈÏÊÇ·â×°ÁËϵͳµÄÏà»úCamera£¬ÈçÄã²»ÐèҪϵͳÏà»ú£¬Ôò¿ÉÒÔÉèÖÃΪÒþ²Ø£»¿ÉÊäÈë¸÷ÖÖͼ²ã£¬Ã¿¸öͼ²ã¿ÉÉèÖÃλÖᢴóС¡¢Ðýת¡¢¿ÙÂÌ£¬Â˾µ£¬Í¼²ãÖ®¼ä¿ÉÉÏϵþ¼Ó£¬ÏÔʾ£¬Òþ²Ø£¬Ìæ»»£¬É¾³ýµÈ²Ù×÷¡£

AIÈËÏñ¿Ùͼ- Â¼ÖÆ°æ

? ÒòAG¿­·¢K8¹ú¼ÊandroidºÍiosµÄ½Ó¿Ú´úÂë¶¼Êǹ«¿ªµÄ£¬¿ÉÒÔÔÚÄú¼¯³ÉºÃAG¿­·¢K8¹ú¼ÊSDKºó£¬ÔÚSDKµÄÎļþ¼´¿É¿´µ½Ã¿¸öÀàÖÐÿ¸ö½Ó¿ÚµÄ˵Ã÷

? android£ºÀàÃû£ºLSOCamera.java   Î»ÖãºÔÚLanSongSDKÎļþ¼ÐµÄmain/javaĿ¼Ï¡£

? Ios:   ÀàÃû£º LSOCamera.h λÖÃÔÚ£ºLanSongEditorFrameWork/LSOCamera.h Ï¡£

? ´óÖÂ˵Ã÷£ºÊÇÒ»¸öÈÝÆ÷£¬¿ÉÊäÈë¸÷ÖÖͼ²ã£¬Ã¿¸öͼ²ã¿ÉÉèÖÃλÖᢴóС¡¢Ðýת¡¢Â˾µ£¬Í¼²ãÖ®¼ä¿ÉÉÏϵþ¼Ó£¬ÏÔʾ£¬Òþ²Ø£¬Ìæ»»£¬É¾³ý£¬·Ö¶ÎÂ¼ÖÆ£¬»ØÉ¾£¬ºÏ³ÉµÈ²Ù×÷¡£

ÊÓÆµ±à¼­

? ÒòAG¿­·¢K8¹ú¼ÊandroidºÍiosµÄ½Ó¿Ú´úÂë¶¼Êǹ«¿ªµÄ£¬¿ÉÒÔÔÚÄú¼¯³ÉºÃAG¿­·¢K8¹ú¼ÊSDKºó£¬ÔÚSDKµÄÎļþ¼´¿É¿´µ½Ã¿¸öÀàÖÐÿ¸ö½Ó¿ÚµÄ˵Ã÷

? android£ºÀàÃû£ºLSOEditPlayer. Java λÖãºÔÚLanSongSDKÎļþ¼ÐµÄmain/javaĿ¼Ï¡£

? ios£ºÀàÃû£º VisionSDKEditPlayer.h λÖÃÔÚ£ºLanSongEditorFrameWork/VisionSDKEditPlayer.h Ï¡£

? ´óÖÂ˵Ã÷£ºÃû×ÖÊÇÒ»¸ö±à¼­²¥·ÅÆ÷£¬²¥·ÅµÄÊÇÒ»¸öÈÝÆ÷ÀïµÄͼ²ã£¬¿ÉÒÔÔö¼ÓÒ»¸ö»ò¶à¸ö£¬¶à¸öͼ²ãÖ®¼ä¿ÉÆ´½Ó£¬¿Éµþ¼Ó£¬¿Éµ÷½ÚÉÏÏÂλÖã¬Ã¿¸öͼ²ã¿ÉÉèÖò»Í¬µÄµ÷É«£¬Â˾µ£¬¶¯»­£¬ÕÚÕÖ£¬ÌØÐ§ÎÄ×Ö£¬ÓÐʱ¼äÖᣬʱ¼äÖá¿ÉÍ϶¯£¬Ëõ·Å£¬²Ã¼ô£»Ö§³Ö»­²¼£¬±ÈÀý£¬ÌùÖ½£¬ÎÄ×Ö£¬ÉùÒô£¬Ë®Ó¡£¬ÂíÈü¿Ë£¬Í¿Ñ»µÈ¹¦ÄÜ¡£

×ÔÓɱ༭

? £¨´ýÐø£©

ͼ²ã·½·¨ËµÃ÷

? ÒòAG¿­·¢K8¹ú¼ÊSDKÀﲻͬµÄ²úÆ·µÄͼ²ãÃû×Ö²»Í¬£¬´óÖÂΪXXXLayer£¬

? ÈçÊÓÆµ±à¼­ÔòÊÇLSOLayer£¬ÉãÏñÍ·Ïà¹ØµÄÊÇLSOCamLayer£¬»ýľ¼ô¼­ÊÇLSOMindLayer£¬AEÄ£°åÊÇLSOAexLayer

? µ«ËûÃǵŦÄÜ£¬·½·¨Ãû×Ö£¬Ó÷¨£¬´óÖÂÏàͬ£¬Ö»ÊÇÒòʹÓó¡¾°²»Í¬£¬¾ßÓеķ½·¨ÊôÐÔÂÔÓв»Í¬¡£

? Ò»ÏÂÊÇÊÓÆµ±à¼­µÄͼ²ãLSOLayerÀàµÄ˵Ã÷£¬ÆäËûͼ²ãxxxLayerÀàÖеķ½·¨ÃûºÍÓ÷¨   ´óÖÂÏàͬ£¬²»ÔÙÒ»Ò»Áгö¡£

? ÿ¸ö·½·¨µÄ˵Ã÷£¬ÔÚ´Ë·½·¨µÄÏÂÒ»ÐУ»£¨ÎÄ×ÖÃèÊöµÄÊÇÉÏÒ»Ðеķ½·¨×÷Óã©


Markdown

public String getOriginalPath()

¹¦ÄÜ£º

? »ñȡԭÊÓÆµ/ͼƬµÄ·¾¶

²ÎÊý£º

? @return

public long getOriginalDurationUs()

¹¦ÄÜ£º

? »ñÈ¡ÊÓÆµ/ͼƬµÄԭʼʱ³¤

²ÎÊý£º

? @return

public int getOriginalWidth()

¹¦ÄÜ£º

? »ñȡԭʼ¿í¶È

²ÎÊý£º

? @return

public int getOriginalHeight()

¹¦ÄÜ£º

? »ñȡԭʼ¸ß¶È

²ÎÊý£º

? @return

public long getDisplayDurationUs()

¹¦ÄÜ£º

? »ñÈ¡ÏÔʾʱ³¤;

? Èç¹û²¥·ÅÆ÷ÖÐÖ»ÓÐÒ»¸öÊÓÆµ»òͼƬ, Ôò´Ëʱ³¤µÈÓÚ²¥·ÅÆ÷µÄʱ³¤;

²ÎÊý£º

? @return

public long getThumbnailDurationUs()

¹¦ÄÜ£º

? »ñÈ¡ËõÂÔͼµÄÏÔʾʱ¼ä;

? ×¢: Òòת³¡µÈ¹¦ÄÜ,Æ´½Ó²ã¿ÉÄÜÓÐÖØµþÇøÓò. Òò´ËÏÔʾʱ³¤²»µÈÓÚËõÂÔͼµÄʱ³¤;


²ÎÊý£º

? @return

public void setDisplayDurationUs(long durationUs)

¹¦ÄÜ£º

? ÉèÖÃÏÔʾʱ³¤;

²ÎÊý£º

? durationUs

public long getStartTimeOfComp()

¹¦ÄÜ£º

? »ñÈ¡µ±Ç°Í¼²ãÔÚ²¥·ÅÆ÷ÖеĿªÊ¼Ê±¼ä

²ÎÊý£º

? @return

public void setCutDurationUs(long startUs, long endUs)

¹¦ÄÜ£º

? ÉèÖÃÊÓÆµµÄ²Ã¼ôʱ³¤

²ÎÊý£º

? startUs ¿ªÊ¼²Ã¼ôʱ¼ä

? endUs ½áÊø²Ã¼ôʱ¼ä

public long getCutStartTimeUs()

¹¦ÄÜ£º

? »ñÈ¡²Ã¼ô¿ªÊ¼Ê±¼ä

²ÎÊý£º

? @return

public long getCutEndTimeUs()

¹¦ÄÜ£º

? »ñÈ¡²Ã¼ô½áÊøÊ±¼ä


²ÎÊý£º

? @return

public void setCropRect(LSORect rect)

¹¦ÄÜ£º

? ÉèÖòüôÇøÓò;

²ÎÊý£º

? @param rect

public void setCropRectToOriginal()

¹¦ÄÜ£º

? »Ö¸´µ½²»²Ã¼ô

public void setCropRectPercent(float x, float y, float width, float height)

¹¦ÄÜ£º

? ÉèÖòüô°Ù·Ö±È.Õû¸ö»­Ãæ´Ó×óµ½ÓÒÊÇ0.0--1.0; ´ÓÉϵ½ÏÂÊÇ0.0--1.0;

²ÎÊý£º

? x   ¿í¶ÈµÄ¿ªÊ¼±ÈÀý

? y   ²Ã¼ô¸ßµÄ¿ªÊ¼±ÈÀý

? width ²Ã¼ô¿í¶ÈµÄ±ÈÀý

? height ²Ã¼ô¸ß¶ÈµÄ±ÈÀý

public void setLooping(boolean is)

¹¦ÄÜ£º

? µþ¼Ó²ãÉèÖÃÑ­»·

²ÎÊý£º

?   is

public void setStartTimeOfComp(long atCompUs)

¹¦ÄÜ£º

? ÉèÖõ±Ç°Í¼²ãÔÚ²¥·ÅÆ÷ÖеĿªÊ¼Ê±¼äµã;


²ÎÊý£º

? atCompUs

public void setVisibility(boolean is)

¹¦ÄÜ£º

? ÉèÖÃÊÇ·ñÏÔʾ

²ÎÊý£º

? is

public void setVisibility(int visibility)

¹¦ÄÜ£º

? ÉèÖÃÊÇ·ñÏÔʾ

? ÀàÐÍÊÇ LSOLayer.VISIBLE ºÍ LSOLayer.INVISIBLE

²ÎÊý£º

? visibility

public int getVisibility()

¹¦ÄÜ£º

? »ñÈ¡ÊÇ·ñÏÔʾ

²ÎÊý£º

? @return

public void resetScaleSize()

¹¦ÄÜ£º

? »Ö¸´µ½Ëõ·ÅǰµÄ´óС

public void setScaleType(LSOScaleType type)

¹¦ÄÜ£º

? ÉèÖÃËõ·Åö¾ÙÀàÐÍ.

? NONE: ÎÞËõ·ÅÐÎʽ.ÔòÄÚ²¿»á¸ù¾Ý²»Í¬µÄËØ²Ä,²ÉÓÃĬÈÏÐÎʽ;

? ORIGINAL: ԭʼ´óС,Ö±½Ó·ÅÈë, ²»×öÈÎÒâ´¦Àí;

? FILL_COMPOSITION, ºöÂÔ°Ù·Ö±È,°Ñ¿í¶ÈµÈÓÚÈÝÆ÷µÄ¿í¶È, ¸ß¶ÈµÈÓÚÈÝÆ÷µÄ¸ß¶È,ÌîÂúÕû¸öÈÝÆ÷,ÕâÑùÓÐЩ»­Ãæ¿ÉÄÜ»á±äÐÎ;

? CROP_FILL_COMPOSITION: ²Ã¼ôÌîÂú·ÅÈëµ½ÈÝÆ÷ÖÐ;°ÑÊÓÆµµÄÖÐÐĵã·Åµ½ÈÝÆ÷µÄÖÐÐĵã,È»ºó°Ñ»­ÃæµÈ±ÈÀýÌáÌîÂúÕû¸öÈÝÆ÷,°Ñ¶àµÄ²¿·Ö²Ã¼ôµô.

? VIDEO_SCALE_TYPE:ÊÓÆµËõ·Åģʽ,Èç¹ûÊÓÆµ¿í¶È´óÓڸ߶È, Ôò¿í¶ÈºÍÈÝÆ÷¶ÔÆë, È»ºóµÈ±ÈÀýµ÷Õû¸ß¶È;Èç¹û¸ß¶È´óÓÚ¿í¶È, Ôò·´Ö®.

²ÎÊý£º

? type

public void setScaledValue(float width, float height)

¹¦ÄÜ£º

? Ëõ·Åµ½µÄʵ¼ÊÖµ

²ÎÊý£º

? width

? height

public float getScaleWidth()

¹¦ÄÜ£º

? »ñÈ¡Ëõ·ÅµÄ¿í¶È

²ÎÊý£º

? @return

public float getScaleHeight()

¹¦ÄÜ£º

? »ñÈ¡Ëõ·ÅµÄ¸ß¶È

²ÎÊý£º

? @return

public float getRotation()

¹¦ÄÜ£º

? »ñÈ¡Ðýת½Ç¶È.

²ÎÊý£º

? @return

public void setRotation(float angle)

¹¦ÄÜ£º

? ÉèÖÃÐýת½Ç¶È

²ÎÊý£º

? angle

public void setLayerMirror(boolean flipHorizontal, boolean flipVertical)

¹¦ÄÜ£º

? ÉèÖÃͼ²ãÊÇ·ñ¾µÏñ, ÉÏϾµÏñ, ×óÓÒ¾µÏñ.

²ÎÊý£º

? flipHorizontal ˮƽ¾µÏñ

? flipVertical ´¹Ö±¾µÏñ

public void cancelLayerMirror()

¹¦ÄÜ£º

? È¡Ïû¾µÏñ

public boolean isMirrorX()

¹¦ÄÜ£º

? ˮƽÊÇ·ñ¾µÏñ

²ÎÊý£º

? @return

public boolean isMirrorY()

¹¦ÄÜ£º

? ´¹Ö±ÊÇ·ñ¾µÏñ

²ÎÊý£º

? @return

public void setPosition(float xPos, float yPos)

¹¦ÄÜ£º

? ÉèÖõ±Ç°Í¼²ãÖÐÐĵãµÄ×ø±ê, xPosÊÇXÖáµÄ×ø±ê,yPosÊÇÉèÖÃYÖáµÄ×ø±ê.

? ´Ë×ø±êÊÇÒÔ²¥·ÅÈÝÆ÷µÄ´óСΪ²Î¿¼, ±ÈÈçÈÝÆ÷µÄ´óСÊÇ1280x720, ÄúÉèÖÃÁË640,360 £¬Ôòͼ²ãÔÚ²¥·ÅÆ÷ÖоÓÖÐÏÔʾ

²ÎÊý£º

? xPos

? yPos

public void setPosition(LSOLayerPosition position)

¹¦ÄÜ£º

? ÉèÖÃͼ²ãµÄö¾ÙλÖÃ;

? ö¾ÙÀàÐÍÓÐ: ×óÉÏ/×óÏÂ/ÓÒÉÏ/ÓÒÏÂ/¾ÓÖÐ/ÉÏ/ÏÂ/×ó/ÓÒ

public float getPositionX()

¹¦ÄÜ£º

? »ñÈ¡µ±Ç°Í¼²ãÖÐÐĵãµÄλÖÃX

²ÎÊý£º

? @return   ºáÏò×ø±êÖÐÐĵã, Ïà¶ÔÓÚ²¥·ÅÈÝÆ÷±¾Éí¶øÑÔ;

public float getPositionY()

¹¦ÄÜ£º

? »ñÈ¡µ±Ç°Í¼²ãÖÐÐĵãµÄλÖÃY

²ÎÊý£º

? @return ÊúÏò×ø±êÖÐÐĵã, Ïà¶ÔÓÚ²¥·ÅÈÝÆ÷±¾Éí¶øÑÔ

public void setOpacityPercent(float percent)

¹¦ÄÜ£º

? ÉèÖÃ͸Ã÷°Ù·Ö±È;

²ÎÊý£º

? percent °Ù·Ö±È·¶Î§´Ó0--1.0;

public void setBrightnessPercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Úµ±Ç°Í¼²ã»­ÃæµÄÁÁ¶È

²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setContrastFilterPercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Úµ±Ç°Í¼²ã»­ÃæµÄ¶Ô±È¶È

²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setSaturationFilterPercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Ú»­ÃæµÄ±¥ºÍ¶È;

²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setWhiteBalanceFilterPercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Ú»­ÃæµÄ°×ƽºâ

²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setHueFilterPercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Ú»­ÃæµÄÉ«¶È


²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setExposurePercent2X(float percent2X)

¹¦ÄÜ£º

? µ÷½Ú»­ÃæµÄÆØ¹â¶È

²ÎÊý£º

? percent2X ·¶Î§ÊÇ0--2.0; 1.0ΪĬÈÏÖµ;

public void setBeautyLevel(float level)

¹¦ÄÜ£º

? ÉèÖû­ÃæµÄĥƤ¼¶±ð 0.0--1.0;

²ÎÊý£º

? level µÈ¼¶ 0.0ÊDz»Ä¥Æ¤, 1.0ÊÇ×î¸ßĥƤ

public void setFilter(LanSongFilter filter)

¹¦ÄÜ£º

? ÉèÖÃÂ˾µ, ÉèÖÃʱ, »á°ÑÉÏÒ»´ÎÉèÖõÄÂ˾µÉ¾³ý; Èç¹û²»Ïëɾ³ýÔòÓÃaddFilter;

²ÎÊý£º

? filter Â˾µ¶ÔÏó, ´Ë¶ÔÏ󲻿ÉͬʱÉèÖÃΪ¶à¸öͼ²ãÖÐ.

public void removeFilter(LanSongFilter filter)

¹¦ÄÜ£º

? ÒÆ³öÂ˾µ

²ÎÊý£º

? filter Ôö¼ÓµÄÂ˾µ¶ÔÏó

public void addFilter(LanSongFilter filter)

¹¦ÄÜ£º

? Ôö¼ÓÂ˾µ,ÈçÔö¼Ó¶à¸ö, Ôò¶à¸öÂ˾µÊǼ¶ÁªµÄ¹ØÏµ, ¼´»­Ãæ°ÑÖ´ÐÐÉÏÒ»¸öÂ˾µµÄ½á¹û, ×÷ΪÏÂÒ»¸öÂ˾µµÄÊäÈë;

²ÎÊý£º

? filter Â˾µ¶ÔÏó

public void removeAllFilter()

¹¦ÄÜ£º

? ɾ³ýËùÓÐÂ˾µ

public void setVideoSpeed(float speed)

¹¦ÄÜ£º

? ÉèÖÃÊÓÆµËÙ¶È.

²ÎÊý£º

? speed ÊÓÆµËÙ¶ÈÖµ, ·¶Î§0.1--10.0;

public float getVideoSpeed()

¹¦ÄÜ£º

? »ñÈ¡ÊÓÆµËÙ¶È;

²ÎÊý£º

? @return ·µ»ØËÙ¶ÈÖµ

public void setVideoReverseAsync(boolean reverse, OnVideoReverseListener listener)

¹¦ÄÜ£º

? Òì²½ÉèÖÃÊÓÆµµ¹Ðò

²ÎÊý£º

? reverse ÊÇ·ñµ¹Ðò

? listener µ¹ÐòºóµÄ¼àÌý;

public boolean isVideoReverse()

¹¦ÄÜ£º

? µ±Ç°ÊÓÆµÊÇ·ñµ¹Ðò

²ÎÊý£º

? @return ÊÇ·ñµ¹Ðò

public LSOEffect addEffectAtCompTimeUs(String jsonPath, long compUs)

¹¦ÄÜ£º

? ÓÃjsonµÄÐÎʽÔö¼ÓÌØÐ§

²ÎÊý£º

? jsonPath Ôö¼ÓÒ»¸öÌØÐ§json·¾¶

? compUs ´Ó²¥·ÅÆ÷µÄʲôʱ¼äµã¿ªÊ¼Ôö¼Ó

? @return Ôö¼Óºó, ·µ»ØÌØÐ§¶ÔÏó, ¿ÉÉèÖÿªÊ¼Ê±¼äºÍ²¥·Åʱ³¤;

public LSOEffect addEffectAtLayerHead(String jsonPath)

¹¦ÄÜ£º

? ÔÚͼ²ãµÄÍ·²¿Ôö¼ÓÒ»¸öÌØÐ§

²ÎÊý£º

? jsonPath json·¾¶

? @return Ôö¼Óºó, ·µ»ØÌØÐ§¶ÔÏó, ¿ÉÉèÖò¥·Åʱ³¤;

public LSOEffect addEffectAtLayerEnd(String jsonPath)

¹¦ÄÜ£º

? ÔÚͼ²ãµÄβ²¿Ôö¼ÓÒ»¸öÌØÐ§

²ÎÊý£º

? jsonPath ÌØÐ§Â·¾¶

? @return Ôö¼Óºó, ·µ»ØÌØÐ§¶ÔÏó, ¿ÉÉèÖò¥·Åʱ³¤;

public List<LSOEffect> getAllEffectList()

¹¦ÄÜ£º

? »ñÈ¡Ôö¼ÓµÄËùÓÐÌØÐ§

²ÎÊý£º

? @return ËùÓÐÌØÐ§Êý×é

public void removeAllEffectList()

¹¦ÄÜ£º

? ÒÆ³öµ±Ç°Í¼²ãµÄËùÓÐÌØÐ§

public void removeEffect(LSOEffect effect)

¹¦ÄÜ£º

? ÒÆ³öÖ¸¶¨µÄÌØÐ§

²ÎÊý£º

? effect

public void playEffect(LSOEffect effect)

¹¦ÄÜ£º

? ²¥·ÅÔ¤ÀÀÌØÐ§

²ÎÊý£º

? effect Ö¸¶¨²¥·ÅµÄÌØÐ§¶ÔÏó,²¥·Åºó»á»Øµ½²¥·ÅǰµÄλÖÃ

public LSOAnimation addAnimationAtCompTimeUs(String jsonPath, long compUs)

¹¦ÄÜ£º

? Ôö¼Ó¶¯»­

²ÎÊý£º

? jsonPath json¸ñʽµÄ·¾¶

? compUs ´Ó²¥·ÅÆ÷µÄʱ¼äµãÔö¼Ó

? @return ·µ»Ø¶¯»­¶ÔÏó, ¿ÉÉèÖÿªÊ¼Ê±¼äºÍ²¥·Åʱ³¤

public LSOAnimation setAnimationAtLayerHead(String jsonPath)

¹¦ÄÜ£º

? ÔÚͼ²ãµÄÍ·²¿Ôö¼ÓÒ»¸ö¶¯»­

²ÎÊý£º

? jsonPath json¶¯»­Â·¾¶

? @return ·µ»Ø¶¯»­¶ÔÏó, ¿ÉÉèÖò¥·Åʱ³¤

public LSOAnimation setAnimationAtLayerEnd(String jsonPath)

¹¦ÄÜ£º

? ÔÚͼ²ãµÄβ²¿Ôö¼ÓÒ»¸ö¶¯»­

²ÎÊý£º

? jsonPath ¶¯»­Â·¾¶

? @return ·µ»Ø¶¯»­¶ÔÏó, ¿ÉÉèÖò¥·Åʱ³¤

public List<LSOAnimation> getAllAnimationList()

¹¦ÄÜ£º

? »ñÈ¡ËùÓж¯»­

²ÎÊý£º

? @return ËùÓж¯»­¶ÔÏó

public void removeAllAnimationList()

¹¦ÄÜ£º

? ÒÆ³öËùÓж¯»­

public void removeAnimation(LSOAnimation animation)

¹¦ÄÜ£º

? ÒÆ³öÖ¸¶¨¶¯»­

²ÎÊý£º

? animation Ö¸¶¨¶¯»­¶ÔÏó

public void playAnimation(LSOAnimation animation)

¹¦ÄÜ£º

? ²¥·Å¶¯»­

²ÎÊý£º

? animation ¶¯»­¶ÔÏó

public boolean setTransitionMaskPath(String maskJsonPath)

¹¦ÄÜ£º

? ÉèÖÃת³¡Â·¾¶

²ÎÊý£º

? maskJsonPath ÕÚÕÖת³¡Â·¾¶

? @return ¿ÉÒÔÉèÖ÷µ»Øtrue; ·ñÔò·µ»Øfalse

public void setTransitionDurationUs(long duration)

¹¦ÄÜ£º

? ÉèÖÃת³¡Ê±³¤

²ÎÊý£º

? duration ʱ³¤,·¶Î§100*100---3*1000*1000;

public void playTransition()

¹¦ÄÜ£º

? ¿ªÊ¼²¥·Åת³¡

public void cancelTransition()

¹¦ÄÜ£º

? È¡Ïûת³¡

protected long getTransitionDurationUs()

¹¦ÄÜ£º

? »ñȡת³¡Ê±³¤;

²ÎÊý£º

? @return

public long getTransitionStartTimeOfComp()

¹¦ÄÜ£º

? »ñÈ¡´ÓºÏ³ÉµÄ¿ªÊ¼Ê±¼ä;

²ÎÊý£º

? @return

public LSOMosaicRect getMosaicRect1()

¹¦ÄÜ£º

? »ñȡһ¸öÂíÈü¿ËÇøÓò, ·µ»ØÂíÈü¿Ë¶ÔÏó,

? ¿ÉÉèÖÃÂíÈü¿ËÇøÓò, ÊÇ·ñ½ûÖ¹,ÂíÈü¿ËÏñËØµãµÄ¿í¶È;


²ÎÊý£º

? @return ÂíÈü¿Ë¶ÔÏó

public void setAudioVolume(float volume)

¹¦ÄÜ£º

? ÉèÖÃÒôƵÒôÁ¿

public float getAudioVolume()

¹¦ÄÜ£º

? »ñÈ¡ÒôƵÒôÁ¿

public void setBackGroundBlurLevel(float level)

¹¦ÄÜ£º

? ÉèÖñ³¾°Ä£ºý¼¶±ð

? 1.0ÊÇÇá΢ģºý,ë²£Á§Ä£ºý. 8.0fÊÇÍêÈ«,Éî¶ÈÄ£ºý;   0.0ÊÇɾ³ýÄ£ºýЧ¹û;

²ÎÊý£º

? level

public void setBackGroundBitmap(String bitmapPath)

¹¦ÄÜ£º

? ÉèÖñ³¾°Í¼Æ¬

²ÎÊý£º

?   bitmapPath

public void setBackGroundColor(int color)

¹¦ÄÜ£º

? ÉèÖñ³¾°ÑÕÉ«

²ÎÊý£º

? color

public float getMaxBlurLevel()

¹¦ÄÜ£º

? »ñÈ¡×î´óÄ£ºýϵÊý, µ±Ç°·µ»ØµÄÊÇ8.0;

public void getThumbnailAsync(OnLanSongSDKThumbnailBitmapListener listener)

¹¦ÄÜ£º

? Òì²½»ñÈ¡ËõÂÔͼ

²ÎÊý£º

? listener

public List<Bitmap> getThumbnailListWithCount(int count)

¹¦ÄÜ£º

? »ñÈ¡ËõÂÔͼ¸öÊý, ´Ë·½·¨Ò»¶¨ÔÚgetThumbnailAsyncÍê³ÉºóÉèÖÃ

²ÎÊý£º

? count »ñÈ¡µÄͼƬÕÅÊý

? @return ·µ»ØbitmapÊý×é;


ÆäËû˵Ã÷

AIÈËÏñ¿ÙÍ¼ÍÆÀí²ßÂÔ

? ÒòAI ¿ÙͼÊÇÖÇÄÜʶ±ðÍÆÀíµÄ¹ý³Ì£¬ÔËÐÐÔÚ²»Í¬µÄÉ豸ÉϺÄʱÇé¿ö²»Í¬£¬AG¿­·¢K8¹ú¼Ê×öÁËÈçϲßÂÔ£º

? µ±Ç°SDKÄÚ²¿ÒѰüº¬¶à¸ö·Ö±æÂʵÄÄ£ÐÍ£¬ÒÔ·½±ã²»Í¬µÄƽ̨£¬²»Í¬ÐÔÄܲîÒìºÜ´óµÄÉ豸¿ÉÒÔÁ÷³©ÔËÐС£

? ÒÔÁ÷³©¶ÈΪÏÈ¡£

? Èç¹û¼ì²âµ½É豸ÐÔÄܲ»áʹÓÿÙͼ¾«¶ÈµÍµ«ËÙ¶È¿ìµÄÄ£ÐÍ£¬ÒÔ¾¡¿ÉÄܵÄÈû­ÃæÁ÷³©£¬¾ßÌåÈçÏ£º

? Android :

? Android10+£¨°üº¬10£©ÇÒ·ÇNPUÊÖ»ú£¬µÚÒ»´Î¿ªÆôAI¿Ùͼʱ,ÏÈÊÔÔËÐÐһϣ¬²âÊÔµ±Ç°ÊÖ»úÐÔÄÜÈçºÎ, È»ºóʹÓÃÏà¹ØµÄÄ£ÐÍ, ÒÔÈ·±£Á÷³©ÔËÐÐ.(ÊÔÅÜÓнø¶ÈºÍÍê±ÏµÄ¼àÌý)

? Android 10ÒÔÏÂÇÒ·ÇNPUÊÖ»ú£¬ÔòÖ±½ÓÓÿìµÄÄ£ÐÍ¡£

? NPUÊÖ»ú£¬ÔòÖ±½ÓÓúõÄÄ£ÐÍ£¨ÏþÁú870¡¢880²»ÊÔÅÜ£¬Ö±½ÓÓúõÄÄ£ÐÍ£©¡£

? ÊÔÅÜ´ó¸ÅÔÚ1--3Ãë×óÓÒ, Èç¹û¼ì²éµ½Ö´ÐÐÁ½ÈýÖ¡ËÙ¶ÈÒѾ­ºÜ¿ì»òºÜÂý, ¾Í»áÁ¢¼´½áÊø, ²»È»Ö´Ðдó¸Å10´Î×óÓҵõ½Ò»¸öƽ¾ùºÄʱ,´Ó¶ø²ÉÓò»Í¬µÄÄ£ÐÍ

? iOS:

? »á¸ù¾ÝÊÖ»úµÄ²»Í¬ÐͺÅÓò»Í¬µÄÄ£ÐÍ, ÆäÖÐiphone11, 12, 13ÓÃ×îºÃµÄ, iphone6¾«¶È×îµÍ¡£

? Windows

? »áµÚÒ»´Î³õʼ»¯µÄʱºò£¬»áÓÃx86Ö¸Á(CPU)£¬ OpenCLÖ¸Á(GPU)£¬CUDAÖ¸Á(ÏÔ¿¨)£¬¶¼ÅÜÒ»´Î£¬¼ÆËãµÃµ½Ã¿¸öÄ£¿éµÄÖ´ÐÐʱ¼ä£¬È»ºóÑ¡Ôñ×î¿ìµÄÄ£¿éÈ¥×öÍÆÀíÖ´ÐУ¨µ±Ç°´ó²¿·ÖµÄ³¡¾°ÊÇÓÃOpenCLÍÆÀí£©

? windowsÔڱȽÏÍêÄ£¿éºó£¬ÎªÁ˾¡¿ÉÄܵÄÈû­ÃæÁ÷³©£¬»á¸ù¾ÝÒ»Ö¡µÄºÄʱ£¬È¥Ñ¡Ôñ¶ÔÓ¦µÄ¿ÙͼģÐÍ£¬Èç¹ûÒ»Ö¡µÄºÄʱʱ¼ä´óÓÚ50ºÁÃ룬Ôò»á½µµÍ¿Ùͼ¾«¶ÈÒÔ¾¡¿ÉÄܵÄÈ¥ÊÊÅäÁ÷³©¶È¡£

? ÆäËû

? AG¿­·¢K8¹ú¼Ê°Ñ¿Ùͼ·Ö³É10¸öµÈ¼¶£¬ 1¼¶ÊÇ×î¿ì£¬µ«¿ÙͼЧ¹û²îһЩ£¬ÊʺÏÐÔÄܵ͵ÄÉ豸£» 10¼¶ÊÇ¿ÙͼЧ¹û×îºÃ£¬µ«ËÙ¶ÈÂý£¬ÊʺÏÐÔÄܸߵÄÉ豸£»

? ¿ÙÏñµÄºÃ»µ£¬»¹ºÍµ±Ç°»·¾³µÄ¹âÏߣ¬ÉãÏñÍ·µÄ³ÉÏñˮƽÓйØÏµ£¬³ÉÏñÖÊÁ¿Ô½ºÃ£¬Ôò¿ÙͼµÄÔ½¾«×¼¡£

? ×ܽ᣺AIÈËÏñ¿Ùͼ£¬»áÊÔÅÜÒ»´ÎÆÀ¹ÀÉ豸ÐÔÄÜ£¬È»ºóÁ÷³©ÎªÖ÷£¬Óöµ½ÐÔÄܲîµÄ´¦ÀíÆ÷»áÖ÷¶¯½µµÍ¿ÙÏñ¾«¶È£¬Èç¹ûÐÔÄÜÏà½üµÄ´¦ÀíÆ÷£¬ÔòÉãÏñÍ·³ÉÏñˮƽ¸ßµÄÉ豸»á¿ÙµÄ¾«×¼Ò»Ð©¡£


ÂÌÄ»¿Ùͼ--ת³¡¶¯»­µÄÖÆ×÷

1. ÓÃAE»òÆäËûÈí¼þ×ö³öÁ¬ÐøÖð½¥Í¸Ã÷µÄ¶¯»­£¬¿ÉÒÔÊÇÈÎÒâЧ¹û£¬×îÖÕµ¼³ö30ÕÅÁ¬ÐøµÄPNGͼƬ¼´¿É¡£

2. ·Ö±æÂÊÒªÇóÊÇ£º544x960£¬Ê±³¤1ÃëÖÓ£¬Ö¡ÂÊ30֡ÿÃë¡£

3. Ô­ÀíÊÇ£ºSDK»á¼ì²éÿÕÅPNGͼƬµÄ͸Ã÷¶ÈϵÊý£¬°Ñ͸Ã÷¶ÈϵÊýÓ³Éäµ½µ±Ç°Í¼ÏñÖУº PNGͼƬÖеÄÏñËØ²»Í¸Ã÷£¬Ôòͼ²ã¶ÔÓ¦µÄÏñËØÒ²²»Í¸Ã÷£»PNGÏñËØÍ¸Ã÷£¬Ôòͼ²ã¶ÔÓ¦µÄÏñËØÒ²Í¸Ã÷£»



Android°æ´íÎó´úÂë


Markdown

###   »ù±¾Ô­ÔòÊÇ:²»³ö´í.

- AG¿­·¢K8¹ú¼ÊÈÏΪһ¸öSDKÔÚÓû§ÊäÈëËØ²ÄÖ§³ÖµÄǰÌáÏÂ, **¾¡Á¿ÄÚ²¿¶¼¿ÉÒÔ´¦Àí,ÊDz»³ö´íµÄ**, µÈÅ׳ö´íÎóÂë, ¾ÍÒѾ­ÊDZíʾ´úÂëÎÞ·¨Ö´ÐÐ, ÕâʱÓû§²»Ô¸Òâ¿´µ½µÄ.

- ÔÚÓû§ÊäÈëµÄʱºò, AG¿­·¢K8¹ú¼ÊSDK»áÅжϴËËØ²ÄÊÇ·ñÖ§³Ö, Èç¹û²»Ö§³Ö»áÅ׳öÒì³£»ò»Øµ÷¸øÄúÉèÖôíÎó, Õâʱ½ö½öÌáʾÄãÊäÈëµÄËØ²Ä²»Ö§³Ö, µ«Õâ¸ö²»ÊÇÖ´ÐеĴíÎó, ÊÇÊäÈëµÄËØ²Ä²»Ö§³Ö.

- »ùÓÚ²»³ö´íµÄÔ­Ôò, AG¿­·¢K8¹ú¼Ê½öÉè¼ÆÁËÒÔÏÂÉÙÁ¿µÄ´íÎóÂë. ²¢Òý³öÁË´íÎóÈÕÖ¾Log, Äú¿ÉÒÔʵʱ¼Ç¼ִÐÐÈÕÖ¾ÐÅÏ¢,ÒÔ±ã³öÏÖ´íÎóÂ뾡¿ì¶¨Î»µ½ÎÊÌâËùÔÚ.

- µ¼³öʧ°Üºó, Èç¹ûÖ´ÐÐÁË´íÎ󻨵÷, ÔòSDKÄÚ²¿»áÊͷŵ±Ç°Ïß³Ì, ÄÚ²¿µÄ¸÷ÖÖͼ²ã²ÎÊý¶¼»áÊÍ·Å, ÎÞ·¨Ôٴε¼³ö.



### 1. ´íÎóÂë:1200

```

±àÂëÅäÖôíÎó.

Ò»°ãÊǵ±Ç°É豸²»Ö§³Ö±àÂë·Ö±æÂÊ,»ò±àÂëÂëÂʵ¼ÖÂ.

SDKÄÚ²¿ÓõÄÊÇMediaCodec±àÂë,

Èç¹û·Ö±æÂÊÉèÖó¬¹ýÁËMediaCodecµÄ·¶Î§, ÔòÅ׳ö´Ë´íÎóÐÅÏ¢.

```


### 2. ´íÎóÂë:1201

```

±àÂëÅäÖôíÎó.

Ò»°ãÊǵ±Ç°É豸²»Ö§³Ö±àÂë·Ö±æÂÊ,»ò±àÂëÂëÂʵ¼ÖÂ. SDKÄÚ²¿ÓõÄÊÇMediaCodec±àÂë, Èç¹û·Ö±æÂÊÉèÖó¬¹ýÁËMediaCodecµÄ·¶Î§,ÔòÅ׳ö´Ë´íÎóÐÅÏ¢.

```


### 3. ´íÎóÂë:1202

```

GPUÖ´ÐдíÎó.

```


### 4. ´íÎóÂë:1203

```

±àÂëÆ÷ÔÚ±àÂëÒ»Ö¡Íê³ÉºóµÄ, Òý³öÊý¾Ýʱ·¢Éú´íÎó.


```



### 5. ´íÎóÂë:1204

```

SDKµÄÊÚȨÎļþ´íÎó.

¿ÉÄÜÊÇSDK¹ýÆÚ, »òapplicationID ºÍÊÚȨÎļþÖеIJ»Ò»ÖÂ, »ò³¬³öÁËʹÓÃʱ¼ä.

```



### 6. ´íÎóÂë:1205

```

äÖȾµÄsurface´íÎó.

³£¼ûΪ:ûÓÐÉèÖÃsurface»òsurfaceÒѾ­±»ÊÍ·Å


```


### 7. ´íÎóÂë:1206

```

ÈÝÆ÷¿í¸ßÉèÖùýµÍµÄ´íÎó.

·Ö±æÂÊÉèÖÃСÓÚ320x320,Ôò»áÅ׳ö´Ë´íÎóÐÅÏ¢


```


### 8. ´íÎóÂë:1207

```

µ±Ç°Í¼²ã´íÎó.

½¨ÒéÄõ½´íÎóÐÅÏ¢ÈÕÖ¾ºó,·ÖÎöÊÇÄÄÀïµÄÎÊÌâ.

```

ÂÌÄ»¿ÙͼSDK-µ÷½Ú½¨Òé

? ÊÊÓð汾£º4.9.6

? 2022Äê08ÔÂ24ÈÕ


? ´Ë°æ±¾¿ÙÂÌ˵Ã÷£º

? µ±Ç°°æ±¾µÄЧ¹ûÊÇÒÔÎÈΪÖ÷£¬»á°ÑÂÌÉ«ÖܱßÏàËÆµÄÑÕɫȫ²¿¿Ùµô£¬¿ÙµÄ»á¹ý¶ÈһЩ£¬±ÈÈçÊÖ¶¯»Î¶¯ÒýÆðµÄÐéÓ°Ò²»á±»¿Ùµô¡£

? ºÃ´¦ÊÇ£º¿ÙµÄÈ«ÃæÒ»Ð©£¬¼¸ºõûÓÐÂÌÉ«µÄ´æÔÚ¡£

? ȱµãÊÇ£ºÒ»Ð©ºÍÂÌÉ«ºÜ½Ó½üµÄÑÕɫҲ»á¿Ùµô»ò±äÉ«£¬±ÈÈçµ­µ­µÄ»ÆÉ«£¨ÍÏÓ°ÑÕÉ«£©¡£

? ȱµãµÄ½ÃÕý£º°ÑÂÌÄ»¿ÙͼµÄ×îСãÐÖµµ÷Õûµ½80.0¼´¿É¡££¨AG¿­·¢K8¹ú¼ÊÑÝʾ¹¤³ÌÀïµÄ»ÆÉ«±£»¤£¬¼´ÊÇÕâ¸öÀý×Ó£©

? ¿ÙÂ̽¨Òé

? ͼÏñµÄԭʼ»­ÃæÖÊÁ¿ºÜÖØÒª£¬Í¼ÏñµÄԭʼ»­ÃæÇåÎú¶ÈÖ±½Ó¾ö¶¨ÁË¿ÙÏñµÄºÃ»µ¡£±ÈÈçÄãÓÃͬһ¸ö´¦ÀíÆ÷µÄOppoÊÖ»úºÍ±ðµÄÊÖ»ú¶Ô±È£¬OPPOµÄ¿ÙÏñЧ¹ûÏà¶Ô½ÏºÃһЩ¡££¨OPPO×î½üÁ½ÄêµÄÊÖ»úÆÕ±é³ÉÏñ½ÏºÃ£©

? ¾Û½¹£º½¨ÒéÔÚÉãÏñÍ·µ÷½Úʱ£¬¾¡¿ÉÄܵİѾ۽¹µã·Åµ½²»±»¿ÙµÄÖ÷²¥»òÎïÌåÉÏ£¬ÕâÑùÖ÷²¥»òÎïÌå¾Í»áÇåÎú¶È¸ßһЩ£¬Ï¸½ÚÕ¹ÏֵĶàһЩ£¬´Ó¶ø¿ÙµÄºÃһЩ¡£

? ·Ö±æÂÊ£º½¨ÒéÆÕͨÉÏ1920x1080£¬Èç¹ûÊÇÖ±²¥»ú£¬¿ÉÒÔÅÜ4kµÄ£¬Ôò½¨ÒéÉÏ4k£¬·Ö±æÂÊÔ½´ó£¬³ÊÏÖµÄϸ½ÚÔ½¶à£¬ÔÙËõ·Åµ½µÍ·Ö±æÂÊʱ£¬»á³ÊÏÖ³ö¿ÙµÄºÜ¾«Ï¸¡£

? ÆØ¹â¶È£º½¨Ò龡¿ÉÄܵĵ÷´óһЩÏà»úµÄÆØ¹â¶È(exposure)£¬´Ó¶ø»ñÈ¡¸ü¶àµÄÁÁ¶È¡£

? ¾àÀ룺½¨Òé¾àÀëÂ̲¼²»µÍÓÚ1.5Ã××óÓÒ£¬²¢¾¡Á¿²Î¿¼µÆ¹â³§¼ÒµÄ²¼¾Ö²ÎÊý£¬£¨±ÈÈç¹âÕնȵȣ©ÒÔ¾¡Á¿±ÜÃâÂÌÉ«·´Éäµ½Ö÷²¥»òÎïÌåÉÏ£¬¿ÙÂ̵ÄÔ­ÀíÊÇ£ºÓöµ½ÂÌÉ«¾Í»á¿Ùµô£¬Èç¹û¾àÀëÌ«½ü£¬Ö÷²¥»òÎïÌåÉϾͻáÓдóÁ¿µÄÂÌÉ«£¬´Ó¶øÒ²»á±»¿Ùµô¡£

? ´ò¹â£º½¨Òé×ó²àºÍÓҲ࣬ÉÏ·½¶¼´ò¹â¡£

? ÒÂÎ²»Òª´©×ÅÂÌÉ«·þ×°£¬»ù±¾ÉϰµÂÌÉ«²ÝÂÌɫ֮ÀàµÄÒ·þ¶¼²»½¨Òé´©£¬»á±»¿Ùµô¡£


? ¡¶¿ÙÏñÇ¿¶È¡·ËµÃ÷

? ¿ÙµÄÀ÷º¦³Ì¶È£»Ô½À÷º¦£¬ÔòºÜ¶àÏàËÆµÄÑÕÉ«¾Í»á±»¿Ùµô¡£Ä¬ÈÏÊÇ40£»Èç¹ûµÆ¹âÆ«Èõ£¬Ôòµ÷´óһЩ£¬Èç¹ûµÆ¹âºÜÇ¿£¬½¨Òéµ÷µÍһЩ£»·¶Î§ÊÇ0--100£»

? µ±È»£¬ÖµÔ½´ó£¬Èç¹ûÉãÏñÍ·³ÉÏñÄÜÁ¦²»ÊǺܺõÄÇé¿öÏ£¬»á³öÏÖ±ßÔµÉÁ˸µÄÇé¿ö£¬Õâʱ£¬½µµÍÇ¿¶È»á¸ÄÉÆÒ»Ð©£»

? ¡¶¿ÙÂ̵ÄãÐÖµ¡·ËµÃ÷

? ×îСãÐÖµ·¶Î§£º0---100£»Ä¬ÈÏÊÇ0 ±íʾ¿ÙµÄÀ÷º¦Ò»Ð©£¬°ÑÂÌÉ«ºÍÖܱߵÄÑÕÉ«¶¼¿Ùµô£¬Èç¹ûÄú²»Ïë±»¿Ùµô£¬Ôò½¨Òéµ÷ÕûΪ80.0£¬

? ×î´óãÐÖµ·¶Î§£º150---210£»Ä¬ÈÏÊÇ210£¬±íʾºÍÂÌÉ«Ïà½üµÄÇàɫҲ»á±»¿Ùµô£¬Èç¹ûÄú²»Ïë°ÑÇàÉ«¿Ùµô£¬Ôò½¨Òéµ÷ÕûΪ170£»

? ¡¾Íê¡£ºóÐø³ÖÐø¸üÐÂ...¡¿




ÓÑÇéÁ´½Ó£ºERPϵͳ£üÇý¶¯IC£üÕ¿½­ÅàÑµÍø£ü24λADC |
΢ÐŹ«Öںţº
AG¿­·¢K8¹ú¼ÊÎĵµ£º
µØÖ·£ºÕã½­Ê¡º¼ÖÝÊÐÓàº¼Çø²Öǰ½ÖµÀÁú԰·88ºÅ3ºÅÂ¥A1318ÊÒ(´´öÎʱ´ú¹ã³¡)
sitemap¡¢ÍøÕ¾µØÍ¼