鸿蒙Next如何将视频保存到相册
在鸿蒙Next系统上录制的视频默认保存在哪个文件夹?如何将拍摄或下载的视频保存到系统相册中显示?需要手动设置路径还是自动同步?如果无法显示该如何排查问题?
2 回复
鸿蒙Next中,用PhotoAccessHelper的createAsset()方法就能把视频存进相册。记得先申请存储权限,不然系统会像防贼一样拦着你。代码写两行,视频存好了,朋友圈素材又+1!
更多关于鸿蒙Next如何将视频保存到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,将视频保存到相册需要使用媒体库管理功能。核心步骤包括获取相册权限、创建媒体资源并写入文件。以下是详细方法和代码示例:
1. 添加权限
在 module.json5 配置文件中声明存储权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.READ_MEDIA",
"reason": "需要读取媒体文件"
},
{
"name": "ohos.permission.WRITE_MEDIA",
"reason": "需要保存视频到相册"
}
]
}
}
2. 动态申请权限
在代码中请求用户授权:
import abilityAccessCtrl from '@ohos.abilityAccessCtrl';
import { BusinessError } from '@ohos.base';
const permissions: Array<string> = ['ohos.permission.READ_MEDIA', 'ohos.permission.WRITE_MEDIA'];
let atManager = abilityAccessCtrl.createAtManager();
// 申请权限
atManager.requestPermissionsFromUser(this.context, permissions).then((data) => {
console.log('权限授权结果:', JSON.stringify(data));
}).catch((err: BusinessError) => {
console.error('权限申请失败:', err.code);
});
3. 保存视频到相册
使用 @ohos.file.mediaLibrary 将视频文件写入媒体库:
import mediaLibrary from '@ohos.file.mediaLibrary';
import { BusinessError } from '@ohos.base';
async function saveVideoToGallery(videoPath: string) {
try {
// 获取媒体库实例
let media = mediaLibrary.getMediaLibrary(this.context);
// 创建视频资源参数
let videoInfo: mediaLibrary.FileAsset = await media.createAsset(
mediaLibrary.MediaType.VIDEO,
'myVideo.mp4' // 保存的文件名
);
// 将视频文件写入媒体库
let fd = await videoInfo.open('Rw');
await fd.write(videoPath); // videoPath 是源视频文件的完整路径
await fd.close();
console.log('视频已保存到相册,URI:', videoInfo.uri);
} catch (err) {
console.error('保存失败:', (err as BusinessError).message);
}
}
关键说明:
- 视频路径:确保
videoPath是设备上已存在的视频文件路径(例如通过录制或下载获得)。 - 文件格式:文件名需带标准扩展名(如
.mp4),否则可能无法识别。 - 权限验证:若用户拒绝权限,需引导手动开启(通过系统设置)。
完整调用示例:
// 假设视频文件位于应用沙箱路径
let videoPath = '/data/storage/el2/base/files/video.mp4';
saveVideoToGallery(videoPath);
通过以上步骤,即可将视频保存到系统相册,并在图库中可见。

