HarmonyOS鸿蒙Next中使用AVScreenCapture录屏后获取原始码流进行编码,在录屏时手机横屏应该如何处理,只需要重启编码器还是录屏也需要停止重新打开?
HarmonyOS鸿蒙Next中使用AVScreenCapture录屏后获取原始码流进行编码,在录屏时手机横屏应该如何处理,只需要重启编码器还是录屏也需要停止重新打开?
当前存在疑问:
使用AVScreenCapture录屏后获取原始码流进行编码, 在录屏时手机横屏应该如何处理,是只需要重启编码器还是录屏和编码都需要停止重新打开?
目前已尝试方式:
-
每次横竖屏切换停止录屏、停止编码,重新Init、Start启动录屏和编码。结果: 每次横竖屏切换会重新拉起录屏权限申请弹窗,体验非常差
-
每次横竖屏切换只重置编码器,不停止录屏,暂时不知道这种方式是否可行,目前暂未跑通,每次横竖屏切换会闪退,报错(OH_AVBuffer_GetAddr(), 127): input buffer is nullptr!,自身代码未在reset后调用OH_AVBuffer_GetAddr,应该是surface模式系统在输入时native调用的,不知如何处理。
考虑到录屏和编码都需要传入视频宽高,如果使用第二种方式,只修改编码宽高未修改录屏宽高是否行不通,是否必须使用第一种方式?
更多关于HarmonyOS鸿蒙Next中使用AVScreenCapture录屏后获取原始码流进行编码,在录屏时手机横屏应该如何处理,只需要重启编码器还是录屏也需要停止重新打开?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中使用AVScreenCapture录屏时,横竖屏切换需要重新配置编码器参数。录屏无需停止,但需调用AVScreenCapture.setDisplayRotation()调整旋转参数,并重置编码器的分辨率、方向等配置。编码器需重启以应用新的参数设置,保持输出视频方向正确。整个过程无需中断录屏流采集。
更多关于HarmonyOS鸿蒙Next中使用AVScreenCapture录屏后获取原始码流进行编码,在录屏时手机横屏应该如何处理,只需要重启编码器还是录屏也需要停止重新打开?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS Next中处理录屏横竖屏切换时,建议采用以下方案:
- 关于录屏宽高适配问题:
- 录屏服务(AVScreenCapture)本身会根据当前屏幕方向自动调整输出帧的宽高比
- 不需要停止/重启录屏服务,系统会自动处理方向变化
- 编码器处理方案:
- 当检测到屏幕方向变化时,应先停止当前编码器
- 创建新的编码器实例,使用新的宽高参数初始化
- 关键点:保持录屏服务持续运行,仅重置编码器
- 针对你遇到的闪退问题:
- OH_AVBuffer_GetAddr()报错通常是因为编码器重置后未正确重新配置输入Surface
- 确保在编码器重置后重新配置输入Surface与录屏输出的关联
- 性能优化建议:
- 可以预创建横竖屏两套编码器实例
- 方向切换时只需切换使用对应的编码器
- 避免频繁创建销毁带来的性能开销
这种方案既避免了频繁弹出权限提示的问题,又能正确处理方向变化。注意在编码器重置时要确保所有缓冲区都被正确释放和重新初始化。