HarmonyOS 鸿蒙Next中使用AVScreenCaptureRecorder怎么调整录屏方向?
HarmonyOS 鸿蒙Next中使用AVScreenCaptureRecorder怎么调整录屏方向? 使用AVScreenCaptureRecorder实现录屏,目前默认录出来是竖屏的,怎么能调整成横屏的,支持自定义方向吗
在开始录制时,设置窗口为横屏。通过this.getUIContext()?.getHostContext()拿到对应的UIAbilityContext,并通过context拿到对应的windowStage实例,然后通过windowStage.getMainWindowSync同步方法拿到对应的窗口实例win,然后调用setPreferredOrientation方法设置窗口方向。
const context = this.getUIContext().getHostContext()
window.getLastWindow(context).then(win => {
win.setPreferredOrientation(window.Orientation.AUTO_ROTATION_LANDSCAPE)
});
更多关于HarmonyOS 鸿蒙Next中使用AVScreenCaptureRecorder怎么调整录屏方向?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
可以的,
怎么配置呢,
在HarmonyOS Next中,使用AVScreenCaptureRecorder调整录屏方向,需在录制配置时设置视频编码参数。通过VideoEncoderConfig中的rotation属性指定旋转角度,例如设置为90、180或270度。该设置直接影响输出视频文件的元数据方向信息,播放器会根据此信息正确渲染。
在HarmonyOS Next中,AVScreenCaptureRecorder的录屏方向主要由设备当前屏幕方向或应用设置的固定方向决定。要调整或自定义录屏方向,可以通过以下方式实现:
-
设置应用固定方向:在应用配置文件
module.json5中,为EntryAbility设置orientation为landscape,强制应用以横屏运行,此时录屏输出通常为横屏。 -
动态调整屏幕方向:在录屏前,通过
window模块的setPreferredOrientation方法动态设置窗口方向。例如,设置为横屏:import window from '[@ohos](/user/ohos).window'; // 获取当前窗口并设置方向 let windowClass = await window.getLastWindow(context); await windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE);设置后再启动
AVScreenCaptureRecorder,录屏方向会与窗口方向一致。 -
配置AVScreenCaptureRecorder参数:创建
ScreenCaptureRecorderConfig时,目前未直接提供方向设置参数。方向通常继承当前屏幕或窗口方向。确保在启动录屏前完成方向设置。 -
处理方向变化:如果应用支持动态旋转,需监听方向变化并相应调整录屏。但注意录屏过程中方向固定,建议在稳定方向下启动录屏。
目前AVScreenCaptureRecorder不支持直接设置自定义录屏方向(如任意角度旋转),方向由系统屏幕方向决定。如需横屏录屏,优先采用固定应用方向或动态设置窗口方向的方法。


