HarmonyOS 鸿蒙Next中使用AVScreenCaptureRecorder怎么调整录屏方向?

HarmonyOS 鸿蒙Next中使用AVScreenCaptureRecorder怎么调整录屏方向? 使用AVScreenCaptureRecorder实现录屏,目前默认录出来是竖屏的,怎么能调整成横屏的,支持自定义方向吗

6 回复

在开始录制时,设置窗口为横屏。通过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


这样直接改页面的窗口方向,会影响页面体验。我只是想单纯调整录屏的方向,不能影响app本身页面体验。

可以的,

怎么配置呢,

在HarmonyOS Next中,使用AVScreenCaptureRecorder调整录屏方向,需在录制配置时设置视频编码参数。通过VideoEncoderConfig中的rotation属性指定旋转角度,例如设置为90、180或270度。该设置直接影响输出视频文件的元数据方向信息,播放器会根据此信息正确渲染。

在HarmonyOS Next中,AVScreenCaptureRecorder的录屏方向主要由设备当前屏幕方向或应用设置的固定方向决定。要调整或自定义录屏方向,可以通过以下方式实现:

  1. 设置应用固定方向:在应用配置文件module.json5中,为EntryAbility设置orientationlandscape,强制应用以横屏运行,此时录屏输出通常为横屏。

  2. 动态调整屏幕方向:在录屏前,通过window模块的setPreferredOrientation方法动态设置窗口方向。例如,设置为横屏:

    import window from '[@ohos](/user/ohos).window';
    // 获取当前窗口并设置方向
    let windowClass = await window.getLastWindow(context);
    await windowClass.setPreferredOrientation(window.Orientation.LANDSCAPE);
    

    设置后再启动AVScreenCaptureRecorder,录屏方向会与窗口方向一致。

  3. 配置AVScreenCaptureRecorder参数:创建ScreenCaptureRecorderConfig时,目前未直接提供方向设置参数。方向通常继承当前屏幕或窗口方向。确保在启动录屏前完成方向设置。

  4. 处理方向变化:如果应用支持动态旋转,需监听方向变化并相应调整录屏。但注意录屏过程中方向固定,建议在稳定方向下启动录屏。

目前AVScreenCaptureRecorder不支持直接设置自定义录屏方向(如任意角度旋转),方向由系统屏幕方向决定。如需横屏录屏,优先采用固定应用方向或动态设置窗口方向的方法。

回到顶部