美摄SDK For Android  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线程使用!!!。
初始化代码:

        mEffectSdkContext = NvsEffectSdkContext.init(this, "assets:/effectsdkdemo.lic", 0);
        mEffectRenderCore = context.createEffectRenderCore();

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

        NvsRational aspectRatio = new NvsRational(9, 16);
        NvsEffect effect = mEffectSdkContext.createVideoEffect("Color Property", aspectRatio);

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

        effect.setFloatVal("Saturation", 0);//饱和度
        effect.setFloatVal("Brightness", 0);//亮度
        effect.setFloatVal("Contrast", 0);//对比度

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

        String fxPackagePath = "assets:/7CBBDCFB-4568-47FB-8A98-3A699893A043.3.videofx";
        int error = mEffectSdkContext.getAssetPackageManager().installAssetPackage(fxPackagePath, null, NvsAssetPackageManager.ASSET_PACKAGE_TYPE_VIDEOFX, true, m_fxPackageId);
        if (error != NvsAssetPackageManager.ASSET_PACKAGE_MANAGER_ERROR_NO_ERROR
            && error != NvsAssetPackageManager.ASSET_PACKAGE_MANAGER_ERROR_ALREADY_INSTALLED) {
        Log.d(TAG, "Failed to install fx package!");
        }

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

        mEffectRenderCore.clearEffectResources(effect);

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

        NvsEffectSdkContext.close();