HarmonyOS鸿蒙Next中如何设置camera.PreviewOutput采样率

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

HarmonyOS鸿蒙Next中如何设置camera.PreviewOutput采样率

我对相机的输出做了监听,但是现在数据采样率很高,想让频率稍微低一些,我看到咱有相关的api接口,我get信息的时候是空,set的时候会异常

const receiver = image.createImageReceiver(settings.size, image.ImageFormat.JPEG, 8)
const imageReceiverId = await receiver.getReceivingSurfaceId()
this.onImageArrival(receiver)
previewOutputReceiver = cameraManager.createPreviewOutput(imageReceiverId)

创建完 outputReceiver 之后,previewOutputReceiver.getSupportedFrameRates() 得到的数据是空数组,然后设置 previewOutputReceiver.setFrameRate(3, 10) 相机就启动失败,不能正常工作

我用的测试机是 p60 pro,这两个api 接口该如何使用,或者有什么办法可以修改采样频率吗?


更多关于HarmonyOS鸿蒙Next中如何设置camera.PreviewOutput采样率的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复
  1. 预览流也就是previewOutput不支持设置帧率,需要采集可以通过录像流VideoOutput设置系统所支持的帧率和分辨率

  2. ImageReceiver是用来采集图片的,采集视频需要AVRecorder,可以配置流的角度rotation,请自行参考相关文档:

    https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-media-V13

更多关于HarmonyOS鸿蒙Next中如何设置camera.PreviewOutput采样率的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,设置camera.PreviewOutput的采样率可以通过Camera模块的相关API实现。具体步骤如下:

  1. 获取Camera实例:首先,使用CameraManager获取Camera实例。
  2. 创建PreviewOutput:通过Camera实例创建PreviewOutput对象。
  3. 设置采样率:通过PreviewOutputsetPreviewRate方法设置采样率,参数为每秒的帧数(fps)。

示例代码如下:

import camera from '@ohos.camera';

// 获取CameraManager实例
let cameraManager = camera.getCameraManager();

// 获取相机设备列表
let cameraDevices = cameraManager.getSupportedCameras();

// 选择第一个相机设备
let cameraDevice = cameraDevices[0];

// 创建Camera实例
let cameraInstance = cameraManager.createCamera(cameraDevice);

// 创建PreviewOutput
let previewOutput = cameraInstance.createPreviewOutput();

// 设置采样率为30fps
previewOutput.setPreviewRate(30);

// 开始预览
cameraInstance.startPreview(previewOutput);

在HarmonyOS鸿蒙Next中,设置camera.PreviewOutput的采样率可以通过配置CameraConfig来实现。首先,获取CameraManager实例,然后通过getSupportedCameraConfigs获取支持的配置。选择适合的CameraConfig,并设置PreviewOutput的采样率,最后通过configure方法应用配置。示例代码如下:

CameraManager cameraManager = getContext().getSystemService(CameraManager.class);
CameraConfig cameraConfig = cameraManager.getSupportedCameraConfigs().get(0);
PreviewOutput previewOutput = new PreviewOutput(surface);
previewOutput.setSampleRate(30); // 设置采样率为30fps
cameraConfig.addPreviewOutput(previewOutput);
cameraManager.configure(cameraConfig);

确保设备支持所选采样率,否则可能抛出异常。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!