鸿蒙Next如何将视频保存到相册

在鸿蒙Next系统上录制的视频默认保存在哪个文件夹?如何将拍摄或下载的视频保存到系统相册中显示?需要手动设置路径还是自动同步?如果无法显示该如何排查问题?

2 回复

鸿蒙Next中,用PhotoAccessHelpercreateAsset()方法就能把视频存进相册。记得先申请存储权限,不然系统会像防贼一样拦着你。代码写两行,视频存好了,朋友圈素材又+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);

通过以上步骤,即可将视频保存到系统相册,并在图库中可见。

回到顶部