You need to enable JavaScript to run this app.
导航
运镜算法
最近更新时间:2025.03.17 14:05:50首次发布时间:2025.03.17 14:05:50
我的收藏
有用
有用
无用
无用
简介

运镜算法在直播和短视频中可以增加动态镜头特效,使用户体验更多的动态效果。
该算法为V4.4.3新增算法。

技术规格
支持平台Android、iOS
支持输入格式安卓为 RGBA TEXTURE,iOS为RGBA Buffer
内存占用<41M (测试设备OPPO R11)
检测速度<25ms(测试设备OPPO R11)
C接口说明

详细接口说明查看头文件:bef_ai_image_quality_enhancement_cine_move.h

1.创建运镜算法句柄

BEF_SDK_API
bef_effect_result_t bef_effect_ai_cine_move_create(bef_image_quality_enhancement_handle *handle, int lensType);

//运镜类型参数,注:版本443目前只支持BEF_CINE_MOVE_ALG_SNAKE_V8,BEF_CINE_MOVE_ALG_HEART_BEAT_V9,BEF_CINE_MOVE_ALG_BREATH_V10,BEF_CINE_MOVE_ALG_ROT360_V11
typedef enum bef_cine_move_alg_type {
    BEF_CINE_MOVE_ALG_START = 0,
    BEF_CINE_MOVE_ALG_V1,   // 等间隔推拉运镜
    BEF_CINE_MOVE_ALG_V2,   // 等间隔水平运镜
    BEF_CINE_MOVE_ALG_V3,   // 等间隔推拉水平运镜
    BEF_CINE_MOVE_ALG_RHYTHMIC_V4,  // 律动运镜
    BEF_CINE_MOVE_ALG_CENTER_FOCUS, // 人像居中
    BEF_CINE_MOVE_ALG_Y_COOR_V6,    // 等间隔垂直运镜
    BEF_CINE_MOVE_ALG_ROT_V7,       // 摇动运镜
    BEF_CINE_MOVE_ALG_SNAKE_V8 = 8,     // 波动运镜
    BEF_CINE_MOVE_ALG_HEART_BEAT_V9,    // 心跳运镜
    BEF_CINE_MOVE_ALG_BREATH_V10,       // 呼吸运镜
    BEF_CINE_MOVE_ALG_ROT360_V11,       // 全域 POV
    BEF_CINE_MOVE_ALG_END
} bef_cine_move_alg_type;

参数说明

参数名参数类型参数说明
handlebef_image_quality_enhancement_handle*创建的运镜算法句柄
lensTypeint运镜类型

返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

2.运镜算法执行

BEF_SDK_API
bef_effect_result_t bef_effect_ai_cine_move_detect(bef_image_quality_enhancement_handle handle,
                                                         bool isFirstFrame,
                                                         bool isOpen,
                                                         const bef_ai_cine_move_input* input,
                                                         bef_ai_cine_move_output* output);

// 运镜图像输入类型
typedef struct bef_ai_cine_move_input{
    int width;   // 输入数据的宽度
    int height;  // 输入数据的高度
    int stride; 
    bef_ai_lens_data data;   // 输入数据的数据
    bef_ai_lens_data_type type; // 输入数据的类型,iOS 支持pixelbuffer 输出,Android 支持oes 纹理
} bef_ai_cine_move_input;

// 运镜图像输出类型
typedef struct bef_ai_cine_move_output{
    bef_ai_lens_data data;   // 输出类型数据,会根据输入,填充对应的输出部分
    int width;   // 输出数据的宽度
    int height;  // 输入数据的高度
} bef_ai_cine_move_output;

// 运镜数据类型
typedef union bef_ai_lens_data{
    int texture[2]; // 如果是纹理,这里纹理的index, ios 的纹理目前只支持metal的纹理, android 需要oes 纹理,且纹理放在0 位置
    void* buffer;   // 如果是数据输入,iOS 传入pixelBuffer的指针
}bef_ai_lens_data;

参数说明

参数名参数类型参数说明
handlebef_image_quality_enhancement_handle运镜算法句柄
isFirstFramebool是否首帧
isOpenbool是否开启运镜处理
inputbef_ai_cine_move_input*图像数据输入
outputbef_ai_cine_move_output*运镜算法结果输出

返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

3.释放句柄

BEF_SDK_API
bef_effect_result_t bef_effect_ai_cine_move_release(bef_image_quality_enhancement_handle handle);

参数说明

参数名参数类型参数说明
handlebef_image_quality_enhancement_handle运镜算法的句柄

返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

4.运镜算法授权

// 离线鉴权
BEF_SDK_API
bef_effect_result_t bef_effect_ai_cine_move_check_license(bef_image_quality_enhancement_handle handle, const char *licensePath);

// 在线鉴权
BEF_SDK_API
bef_effect_result_t bef_effect_ai_cine_move_check_online_license(bef_image_quality_enhancement_handle handle, const char *licensePath);

参数说明

参数名参数类型参数说明
handlebef_image_quality_enhancement_handle运镜算法句柄
licensePathconst char *授权文件字符串

返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h

Java 接口说明

接口说明
详细接口说明查看文件:com.effectsar.labcv.effectsdk.CineMove.java

1.初始化运镜句柄

public int init(
    Context context, 
    int type, 
    String licensePath, 
    boolean onlineLicense
    )

// 版本4.4.3仅支持波动运镜(8)心跳运镜(9)呼吸运镜(10)POV运镜(11)
public static enum CINE_MOVE_TYPE {

        CINE_MOVE_ALG_SNAKE_V8(8),
        CINE_MOVE_ALG_HEART_BEAT_V9(9),
        CINE_MOVE_ALG_BREATH_V10(10),
        CINE_MOVE_ALG_ROT360_V11(11),
     
    }

参数说明

参数名参数类型参数说明
contextContext安卓上下文
typeint运镜类型
licensePathString授权文件路径
onlineLicenseboolean是否为在线授权

返回值
成功返回BEF_RESULT_SUC,否则返回对应的错误码

2.运镜算法处理

public int process(
    int inputTexture, 
    PixlFormat pixelFormat, 
    int imageWidth, 
    int imageHeight, 
    int imageStride, 
    boolean isOpen, 
    Integer destTextureId
    )

参数说明

参数名参数类型参数说明
inputTextureint输入纹理号
pixelFormatPixlFormat输入格式
imageWidthint纹理宽度
imageHeightint纹理高度
imageStrideint纹理步长
isOpenboolean是否开启运镜算法
destTextureIdInteger输出纹理号

3.释放运镜句柄

public void release()
FAQ

1.如果出现任何异常,请查看是否有以下类型日志

答:建议首先查看以下tag输出Error类型的日志:
bef_effect_ai 和SMASH_E_LOG 以及 EffectSDK

错误码

错误码请参考错误码表