当前位置: 首页 > news >正文

鸿蒙next版开发:相机开发-录像(ArkTS)

在HarmonyOS 5.0中,ArkTS提供了一套完整的API来管理相机功能,特别是录像功能。本文将详细介绍如何在ArkTS中实现录像功能,并提供代码示例进行详细解读。

录像功能开发步骤

1. 导入相关接口

首先,需要导入相机相关的接口,以便使用相机服务。

import { camera } from '@kit.CameraKit';
import { BusinessError } from '@kit.BasicServicesKit';

2. 创建Surface

XComponent组件为预览流提供的Surface(获取surfaceId请参考 getXcomponentSurfaceId 方法),而XComponent的能力由UI提供。

3. 获取相机输出能力

通过CameraOutputCapability类获取当前设备支持的预览能力,并创建预览输出流。

function getPreviewOutput(cameraManager: camera.CameraManager, cameraOutputCapability: camera.CameraOutputCapability, surfaceId: string): camera.PreviewOutput | undefined {let previewProfilesArray: Array<camera.Profile> = cameraOutputCapability.previewProfiles;let previewOutput: camera.PreviewOutput | undefined = undefined;try {previewOutput = cameraManager.createPreviewOutput(previewProfilesArray[0], surfaceId);} catch (error) {let err = error as BusinessError;console.error("Failed to create the PreviewOutput instance. error code: " + err.code);}return previewOutput;
}

4. 创建会话并开始录像

创建相机会话,配置输入流和输出流,然后开始录像。

async function startRecordingOutput(cameraManager: camera.CameraManager, previewOutput: camera.PreviewOutput, surfaceId: string): Promise<void> {let cameraArray: Array<camera.CameraDevice> = cameraManager.getSupportedCameras();if (cameraArray.length == 0) {console.error('no camera.');return;}let sceneModes: Array<camera.SceneMode> = cameraManager.getSupportedSceneModes(cameraArray[0]);let isSupportVideoMode: boolean = sceneModes.indexOf(camera.SceneMode.NORMAL_VIDEO) >= 0;if (!isSupportVideoMode) {console.error('video mode not support');return;}let cameraInput: camera.CameraInput | undefined = undefined;cameraInput = cameraManager.createCameraInput(cameraArray[0]);if (cameraInput === undefined) {console.error('cameraInput is undefined');return;}await cameraInput.open();let recordingSession: camera.VideoSession = cameraManager.createSession(camera.SceneMode.NORMAL_VIDEO) as camera.VideoSession;recordingSession.beginConfig();recordingSession.addInput(cameraInput);recordingSession.addOutput(previewOutput);// 创建录像输出流let recordingOutput: camera.VideoOutput = cameraManager.createVideoOutput(surfaceId);recordingSession.addOutput(recordingOutput);await recordingSession.commitConfig();await recordingSession.start();
}

5. 监听录像输出流状态

在相机应用开发过程中,可以随时监听录像输出流状态,包括录像流启动、录像流结束、录像流输出错误。

function onRecordingOutputFrameStart(recordingOutput: camera.VideoOutput): void {recordingOutput.on('frameStart', (err: BusinessError) => {if (err !== undefined && err.code !== 0) {return;}console.info('Recording frame started');});
}function onRecordingOutputFrameEnd(recordingOutput: camera.VideoOutput): void {recordingOutput.on('frameEnd', (err: BusinessError) => {if (err !== undefined && err.code !== 0) {return;}console.info('Recording frame ended');});
}

结语

通过本文的介绍,你应该对如何在HarmonyOS 5.0中使用ArkTS实现录像功能有了基本的了解。录像功能是相机应用的核心,合理利用这些API可以使你的应用更加专业和高效。希望本文能够帮助你在开发过程中更好地利用ArkTS的相机录像功能。

http://www.lryc.cn/news/483387.html

相关文章:

  • 闯关leetcode——3206. Alternating Groups I
  • 多个摄像机画面融合:找到同一个目标在多个画面中的伪三维坐标,找出这几个摄像头间的转换矩阵
  • Three.js性能优化和实践建议
  • C#入门 023 什么是类(Class)
  • 一篇Spring Boot 笔记
  • 一生一芯 预学习阶段 NEMU代码学习(2)
  • 《手写Spring渐进式源码实践》实践笔记(第二十章 实现简单ORM框架)
  • AI技术赋能电商行业:创新应用与未来展望
  • windows 11编译安装ffmpeg(包含ffplay)
  • 系统启动时将自动加载环境变量,并后台启动 MinIO、Nacos 和 Redis 服务
  • [ACTF2020 新生赛]Upload 1--详细解析
  • power bi中的related函数解析
  • 目前区块链服务商备案支持的区块链技术类型
  • CatBoost中的预测偏移和排序提升
  • python: postgreSQL using psycopg2 or psycopg
  • 从 MySQL 5.7 到 8.0:理解 GROUP BY 的新规则与实战优化20241112
  • npm完整发包流程(亲测可验证)
  • 学习threejs,使用JSON格式保存和加载模型
  • 中国首部《能源法》正式问世,它的亮点有哪些呢?
  • 【外包】软件行业的原始形态,项目外包与独立开发者
  • 工程数学线性代数(同济第七版)附册课后习题答案PDF
  • 【Ubuntu24.04】部署服务(基础)
  • Linux符号使用记录
  • 初阶C++之C++入门基础
  • ODOO学习笔记(7):模块化架构(按需安装)
  • Java的dto,和多表的调用
  • 时序数据库TimescaleDB安装部署以及常见使用
  • MG算法(英文版)题解
  • 2-UML概念模型测试
  • 人工智能(AI)对于电商行业的变革和意义