鸿蒙Next语法如何保存视频到相册
在鸿蒙Next开发中,如何通过代码实现将视频文件保存到系统相册?需要调用哪些API接口?具体实现步骤是什么?是否有权限要求或者其他需要注意的事项?
2 回复
鸿蒙Next保存视频到相册?简单!用PhotoAccessHelper的createAsset()方法,把视频流塞进去就行。记得先申请权限,不然系统会像没带钥匙的室友一样把你拦在门外。代码一写,视频秒存,稳如老狗!
更多关于鸿蒙Next语法如何保存视频到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,保存视频到相册主要涉及 媒体库管理 和 文件存储权限。以下是实现步骤和示例代码:
步骤概述:
- 申请存储权限:在
module.json5中配置权限。 - 创建视频文件:指定保存路径(相册目录)。
- 写入视频数据:将视频数据写入文件。
- 通知媒体库更新:刷新相册显示新视频。
示例代码(ArkTS):
import fs from '@ohos.file.fs';
import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import common from '@ohos.app.ability.common';
// 1. 申请权限(在 module.json5 中添加)
// "requestPermissions": [
// {
// "name": "ohos.permission.READ_MEDIA",
// "reason": "$string:reason_desc",
// "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
// },
// {
// "name": "ohos.permission.WRITE_MEDIA",
// "reason": "$string:reason_desc",
// "usedScene": { "abilities": ["EntryAbility"], "when": "always" }
// }
// ]
async function saveVideoToGallery(context: common.Context, videoData: ArrayBuffer) {
// 2. 获取媒体库实例
const media = mediaLibrary.getMediaLibrary(context);
// 3. 创建视频文件(保存到相册目录)
const publicDirectory = mediaLibrary.DirectoryType.DIR_VIDEO; // 视频目录
const displayName = `video_${Date.now()}.mp4`; // 文件名
let publicFile: mediaLibrary.FileAsset;
try {
publicFile = await media.createAsset(
mediaLibrary.MediaType.VIDEO,
displayName,
publicDirectory
);
} catch (err) {
console.error('创建文件失败:', err);
return;
}
// 4. 写入视频数据
try {
const file = await fs.open(publicFile.uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
await fs.write(file.fd, videoData);
await fs.close(file.fd);
} catch (err) {
console.error('写入视频失败:', err);
return;
}
// 5. 通知媒体库刷新(可选,系统通常会自动检测)
console.log('视频已保存到相册: ' + publicFile.uri);
}
// 调用示例(在Ability中)
// saveVideoToGallery(getContext(), videoData);
关键说明:
- 权限配置:必须声明
READ_MEDIA和WRITE_MEDIA权限。 - 路径处理:使用
mediaLibraryAPI 确保文件保存到系统相册目录。 - 数据来源:
videoData需是ArrayBuffer类型(例如从网络下载或录制获取)。
注意事项:
- 鸿蒙Next的API可能随版本更新,请参考官方媒体库文档调整。
- 真实场景需处理用户动态授权(通过
abilityAccessCtrl请求权限)。
通过以上代码,可正确将视频保存至相册并自动显示。

