HarmonyOS 鸿蒙Next 视频解码surface模式下,OH_AVFormat_Create的裁剪参数问题

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 视频解码surface模式下,OH_AVFormat_Create的裁剪参数问题

cke_935.png

这4个参数怎么通过OH_VideoDecoder_SetParameter进行动态配置


更多关于HarmonyOS 鸿蒙Next 视频解码surface模式下,OH_AVFormat_Create的裁剪参数问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

使用

bool OH_AVFormat_SetIntValue(struct OH_AVFormat *format, const char *key, int32_t value);

可以设置上述参数

OH_AVFormat *format = OH_AVFormat_Create();

// 获取裁剪矩形信息可选 OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_CROP_TOP, &cropTop); OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_CROP_BOTTOM, &cropBottom); OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_CROP_LEFT, &cropLeft); OH_AVFormat_GetIntValue(format, OH_MD_KEY_VIDEO_CROP_RIGHT, &cropRight);

更多关于HarmonyOS 鸿蒙Next 视频解码surface模式下,OH_AVFormat_Create的裁剪参数问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


你好,这里面是不是有什么前置需求呢,我试了一下,没有效果

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

之前可能给错信息了,OH_VideoDecoder_SetParameter是设置解码器的动态参数。例如 // 配置显示旋转角度 OH_AVFormat_SetIntValue(format, OH_MD_KEY_ROTATION, 90); // 配置视频与显示屏匹配模式(缩放与显示窗口适配,裁剪与显示窗口适配) OH_AVFormat_SetIntValue(format, OH_MD_KEY_SCALING_MODE, SCALING_MODE_SCALE_CROP);

而上面你需要设置的参数是 描述裁剪矩形底部坐标(y)值的键,值类型为int32_t。 包含裁剪框底部的行,行索引从0开始。 应该是获取到视频解码信息的KEY, 裁剪能力应该不是通过OH_AVFormat_SetIntValue实现

好的,感谢解惑

在HarmonyOS鸿蒙Next的视频解码surface模式下,关于OH_AVFormat_Create的裁剪参数问题,以下是直接相关的专业解答:

OH_AVFormat_Create函数在鸿蒙系统中用于创建AVFormat上下文,该上下文管理视频流的解码过程。在surface模式下,裁剪参数通常通过AVFrame结构体中的相关字段或AVCodecContext的裁剪参数进行设置。

对于裁剪,你需要关注的是AVCodecContext中的skip_frameskip_idctskip_loop_filter等字段,但这些字段通常不直接用于裁剪,而是用于控制解码过程中的跳过行为。实际裁剪通常通过解码后处理实现,即在获取到AVFrame后,根据裁剪区域调整显示的像素区域。

在surface模式下,裁剪更可能通过视频显示层实现,即在解码后的帧传递给显示surface之前,通过调整显示区域的坐标来实现裁剪效果。这意味着裁剪参数可能需要在显示模块或相关API中设置,而非直接在OH_AVFormat_Create中设置。

因此,你需要查阅鸿蒙系统关于视频显示模块的API文档,了解如何在解码后的帧传递给显示surface前设置裁剪参数。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部