HarmonyOS鸿蒙Next中实现手机录屏功能示例代码

HarmonyOS鸿蒙Next中实现手机录屏功能示例代码

介绍

本示例基于C侧AVScreenCapture模块API实现视频录制功能,并将生成的录屏文件保存到到沙箱目录。

实现手机录屏功能源码链接

效果预览

图片名称

使用说明

  1. 点击“start capture”按钮弹出是否允许应用使用屏幕的弹窗,点击允许开始屏幕录制。
  2. 点击“stop capture”按钮,屏幕录制停止,并生成录屏文件保存到沙箱目录。

实现思路

通过调用AVScreenCapture模块下的接口,实现屏幕录制的功能。先通过OH_AVScreenCapture_Create()创建一个capture实例,再初始化录屏参数,传入配置信息。通过OH_AVScreenCapture_SetMicrophoneEnabled()设置麦克风开关,当isMicrophone为true时,打开麦克风。调用OH_AVScreenCapture_StartScreenRecording()接口启动录屏,并保存录屏文件。

// 初始化录屏参数,传入配置信息OH_AVScreenRecorderConfig
OH_RecorderInfo recorderInfo;
std::string fileUrl = "fd://" + std::to_string(value0);
recorderInfo.url = const_cast<char*>(fileUrl.c_str());
recorderInfo.fileFormat = OH_ContainerFormatType::CFT_MPEG_4;
config.recorderInfo = recorderInfo;
// 设置回调
OH_AVScreenCapture_SetStateCallback(capture, OnStateChange, nullptr);
// 进行初始化操作
int32_t retInit = OH_AVScreenCapture_Init(capture, config);
OH_LOG_Print(LOG_APP, LOG_INFO, 1, "test", "init:%{public}d", retInit);
// 开始录屏
int32_t micRet = OH_AVScreenCapture_SetMicrophoneEnabled(capture, true);
int32_t retStart = OH_AVScreenCapture_StartScreenRecording(capture);
OH_LOG_Print(LOG_APP, LOG_INFO, 1, "test", "start:%{public}d", retStart);
micRet = OH_AVScreenCapture_SetMicrophoneEnabled(capture, true);
napi_value sum;
napi_create_double(env, retStart, &sum);
return sum;

更多关于HarmonyOS鸿蒙Next中实现手机录屏功能示例代码的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

在HarmonyOS Next中实现手机录屏功能需使用AVRecorder API。以下是关键代码示例:

import avRecorder from '@ohos.multimedia.avrecorder';

let avRecorderProfile = {
  audioBitrate: 48000,
  audioChannels: 2,
  audioCodec: 'audio/mp4a-latm',
  audioSampleRate: 48000,
  fileFormat: 'mp4',
  videoBitrate: 2000000,
  videoCodec: 'video/mp4v-es',
  videoFrameWidth: 720,
  videoFrameHeight: 1080,
  videoFrameRate: 30
}

let avRecorderConfig = {
  videoSourceType: 1, // 屏幕录制
  profile: avRecorderProfile,
  url: 'fd://' // 输出文件描述符
}

// 创建实例
let recorder = await avRecorder.createAVRecorder();
// 准备录制
await recorder.prepare(avRecorderConfig);
// 开始录制
await recorder.start();

需要声明ohos.permission.MICROPHONEohos.permission.WRITE_MEDIA权限。

更多关于HarmonyOS鸿蒙Next中实现手机录屏功能示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个很好的HarmonyOS Next录屏功能实现示例。代码展示了如何使用AVScreenCapture模块的核心API进行屏幕录制:

  1. 关键API调用流程清晰:
  • OH_AVScreenCapture_Create()创建实例
  • OH_AVScreenCapture_Init()初始化配置
  • OH_AVScreenCapture_SetMicrophoneEnabled()设置麦克风
  • OH_AVScreenCapture_StartScreenRecording()开始录制
  1. 需要注意的细节:
  • 文件路径使用"fd://"前缀表示文件描述符
  • 配置了MP4容器格式(CFT_MPEG_4)
  • 设置了状态回调函数OnStateChange
  1. 权限方面:
  • 需要用户授权屏幕录制权限
  • 示例中处理了权限弹窗场景

代码结构合理,包含了必要的错误日志打印(OH_LOG_Print),方便调试。开发者可以基于此示例快速实现录屏功能,并根据需要调整录制参数如分辨率、帧率等。

回到顶部