美摄SDK For iOS  3.10.0
effectSDK使用讲解

美摄SDK effectSDK使用方式如下:

NvsEffectSdkContext特效上下文类可视作整个SDK框架的入口。开发过程中,NvsEffectSdkContext提供了静态sharedInstance接口创建effectSDK上下文的唯一实例。 通过这个实例对象,我们可以一个或者多个特效的处理。整个使用完成后,要销毁特效上下文的对象实例。 添加素材资源包(采集特效包,场景资源包等),都得先安装,安装成功后获取packageId才能使用,而内建采集特效(builtin)只需获取特效名称即可使用。
sdk接口中凡是需要传入资源、授权等文件路径时一定是全路径。

警告
NvsEffectSdkContext类中,所有public API都在UI线程使用!!!
NvsEffectRenderCore类中,所有public API都在OpenGL线程使用!!!

1.初始化EffectSDK,全局只需一次,NvsEffectSdkContext是特效的上下文类。Context是安卓Context对象,sdkLicenseFilePath是授权文件路径,flags 标志字段,如果无特殊需求请填写0。
NvsEffectRenderCore是特效渲染类整个SDK的特效渲染入口,所有public API都必须在OpenGL线程使用!!!。
初始化代码:

        NSString *licPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"3-2-3d2c1a947b969a7f7ef4e2eb380c8f44.lic"];
        if (![NvsEffectSdkContext verifySdkLicenseFile:licPath]) {
            NSLog(@"Invalid license!");
        }
        self.renderCore = [self.effectContext createEffectRenderCore];

2.创建视频特效对象。
fxIds 特效id。对于内嵌视频特效,就是特效的名字,如果是资源包特效,就是资源包id,aspectRatio 特效的宽幅比。视频特效可以同时添加多个,搭配使用。
视频特效NvsVideoEffect是NvsEffect的派生类,可以通过它进行视频特效的添加,移除和获取等操作。
相应代码如下:

        NvsEffectRational aspectRatio = {9, 16};
        self.faceEffect = [self.effectContext createVideoEffect:@"Specific Warp Effect" aspectRatio:aspectRatio];

3.设置特效的相关参数。fxParam是对应的参数名称,val是参数的值。
相应代码如下:

        [self.faceEffect setFloatVal:"Saturation" val:0];//饱和度
        [self.faceEffect setFloatVal:"Brightness" val:0];//亮度
        [self.faceEffect setFloatVal:"Contrast" val:0];//对比度

4.除了内置特效还有需要安装资源包的外置特效。assetPackageFilePath是资源包的路径,必须是全路径。licenseFilePath是授权文件路径,如果没有可以写null。type是资源包的类型。
synchronous是是否同步的标准,assetPackageId是安装后的资源包id。
相应代码如下:

        NSString *fxPackagePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"D41B1BC6-23AC-4508-9C8A-F6430BB37C3F.videofx"];
        self.assetPackageId = [[NSMutableString alloc] init];
        NvsEffectAssetPackageManagerError err = [self.effectContext.assetPackageManager installAssetPackage:fxPackagePath license:nil type:NvsEffectAssetPackageType_VideoFx sync:YES assetPackageId:self.assetPackageId];
        if (err != NvsEffectAssetPackageManagerError_NoError
            && err != NvsEffectAssetPackageManagerError_AlreadyInstalled) {
            NSLog(@"Failed to install package!");
}

5.使用完成,销毁视频特效。清除特效中携带的OPenGL资源,effect表示要清除的特效对象。
相应代码如下:

        [self.renderCore clearCacheResources];
        [self.renderCore clearEffectResources:self.effect];
        [self.renderCore cleanUp];

6.退出时销毁。相应代码如下:

        [NvsEffectSdkContext destroyInstance];