运镜算法在直播和短视频中可以增加动态镜头特效,使用户体验更多的动态效果。
该算法为V4.4.3新增算法。
支持平台 | Android、iOS |
---|---|
支持输入格式 | 安卓为 RGBA TEXTURE,iOS为RGBA Buffer |
内存占用 | <41M (测试设备OPPO R11) |
检测速度 | <25ms(测试设备OPPO R11) |
详细接口说明查看头文件:bef_ai_image_quality_enhancement_cine_move.h
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;
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_image_quality_enhancement_handle* | 创建的运镜算法句柄 |
lensType | int | 运镜类型 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
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;
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_image_quality_enhancement_handle | 运镜算法句柄 |
isFirstFrame | bool | 是否首帧 |
isOpen | bool | 是否开启运镜处理 |
input | bef_ai_cine_move_input* | 图像数据输入 |
output | bef_ai_cine_move_output* | 运镜算法结果输出 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
BEF_SDK_API bef_effect_result_t bef_effect_ai_cine_move_release(bef_image_quality_enhancement_handle handle);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_image_quality_enhancement_handle | 运镜算法的句柄 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
// 离线鉴权 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);
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
handle | bef_image_quality_enhancement_handle | 运镜算法句柄 |
licensePath | const char * | 授权文件字符串 |
返回值
成功返回 BEF_RESULT_SUC, 失败返回相应错误码, 具体请参考 bef_effect_ai_public_define.h
接口说明
详细接口说明查看文件:com.effectsar.labcv.effectsdk.CineMove.java
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), }
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
context | Context | 安卓上下文 |
type | int | 运镜类型 |
licensePath | String | 授权文件路径 |
onlineLicense | boolean | 是否为在线授权 |
返回值
成功返回BEF_RESULT_SUC,否则返回对应的错误码
public int process( int inputTexture, PixlFormat pixelFormat, int imageWidth, int imageHeight, int imageStride, boolean isOpen, Integer destTextureId )
参数说明
参数名 | 参数类型 | 参数说明 |
---|---|---|
inputTexture | int | 输入纹理号 |
pixelFormat | PixlFormat | 输入格式 |
imageWidth | int | 纹理宽度 |
imageHeight | int | 纹理高度 |
imageStride | int | 纹理步长 |
isOpen | boolean | 是否开启运镜算法 |
destTextureId | Integer | 输出纹理号 |
public void release()
答:建议首先查看以下tag输出Error类型的日志:
bef_effect_ai 和SMASH_E_LOG 以及 EffectSDK
错误码请参考错误码表