145 Star 1.4K Fork 1.7K

OpenHarmony/applications_app_samples

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

录屏示例(仅对系统应用开放)

介绍

该示例展示设备屏幕(含音频)录制功能。屏幕录制的主要工作是通过创建一个虚拟屏,捕获屏幕显示图形帧,完成视频编码并保存到文件中,帮助OEM设备厂家系统应用实现屏幕录制功能,也可以通过此应用抓取屏幕帧用于问题复现录制。

效果预览

获取媒体权限 获取录音权限 应用主界面 录制过程界面
image image image image

使用说明

1.启动应用,首次启动需要用户授予“访问媒体和文件”和“麦克风”的权限

2.点击启动按钮,启动屏幕录制。

3.启动录制后会弹出一个透明录制悬浮控件,并显示录制时间计时,此时可以操作屏幕,操作过程屏幕显示会被录制下来。

4.需要停止录屏时,点击悬浮半透明的红色按钮,屏幕录制停止。

5.打开图库应用,在图库中可以看到最新录屏的媒体文件,点击后可支持录屏回放。

工程目录

entry/src/main/ets/
|---common
|   |---Constants.ts                // 数据初始化
|   |---Logger.ts                   // 日志工具
|---MainAbility
|   |---MainAbility.ts
|---pages
|   |---index.ets                   // 首页
|   |---ScreenRecordre.ets          // 屏幕录制

具体实现

  • 该示例通过Screen方法获取屏幕实例,createVirtualScreen方法创建一个虚拟屏,getAllScreens方法获取获取所有的屏幕,makeMirror方法将屏幕设置为镜像模式,setVirtualScreenSurface方法设置虚拟屏幕的surface,display接口捕获屏幕显示图形帧,media,mediaLibrary接口完成视频编码并保存到文件中,帮助OEM设备厂家系统应用实现屏幕录制功能。
  • 源码链接:ScreenRecorder.ets
  • 接口参考:@ohos.screen@ohos.multimedia.media@ohos.file.photoAccessHelper@ohos.display

相关权限

1.允许应用访问用户媒体文件中的地理位置信息权限:ohos.permission.MEDIA_LOCATION

2.允许应用修改用户公共目录的图片或视频文件权限:ohos.permission.WRITE_IMAGEVIDEO

3.允许应用读取用户公共目录的图片或视频文件权限:ohos.permission.READ_IMAGEVIDEO

4.允许应用使用麦克风权限:ohos.permission.MICROPHONE

5.允许应用使用悬浮窗的能力权限,需要配置为system_basic类型系统应用:ohos.permission.SYSTEM_FLOAT_WINDOW

6.允许应用截取屏幕图像权限,需要配置为system_core类型系统应用:ohos.permission.CAPTURE_SCREEN

依赖

不涉及。

约束与限制

1.本示例仅支持标准系统上安装运行。

2.本示例已适配API version 10版本SDK,版本号:4.0.10.15。

3.本示例需要使用DevEco Studio 4.0 Release (Build Version: 4.0.0.600)及以上版本才可编译运行。

4.本示例需要使用@ohos.screen系统权限的系统接口,使用Full SDK时需要手动从镜像站点获取,并在DevEco Studio中替换,具体操作可参考替换指南

5.系统权限的自动化签名指南,可通过打开DevEco Studio中菜单,File -> Project Structure -> Project -> Signing Configs(TAB页最下方蓝色字体) -> “View the operation guide” 跳转链接,可支持系统权限的自动签名生成。

6.rk设备由于芯片限制,应用中videoFrameWidth,videoFrameHeight,videoFrameRate需同比缩小3/5, 才能实现rk上的播放效果。

7.库上代码为rk设备所适用代码,其他设备需要修改完应用代码后(应用代码中缩小3/5的地方,在其他设备不需要缩小),单独打包。

下载

如需单独下载本工程,执行如下命令:

git init
git config core.sparsecheckout true
echo code/SystemFeature/Media/ScreenRecorder/ > .git/info/sparse-checkout
git remote add origin https://gitee.com/openharmony/applications_app_samples.git
git pull origin master

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openharmony/applications_app_samples.git
git@gitee.com:openharmony/applications_app_samples.git
openharmony
applications_app_samples
applications_app_samples
master

搜索帮助