鸿蒙Next如何通过安全控件将视频保存到相册

在鸿蒙Next系统中,使用安全控件将视频保存到相册时,具体需要哪些步骤?是否涉及权限配置或特殊API调用?遇到保存失败的情况该如何排查?

2 回复

鸿蒙Next保存视频到相册?简单!用PhotoAccessHelper安全控件,先申请存储权限,再调用createAsset()把视频塞进相册。记得加个try-catch,别让异常把相册吓跑~代码一写,视频一存,搞定!

更多关于鸿蒙Next如何通过安全控件将视频保存到相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next中,可以通过@ohos.multimedia.mediaLibrary@ohos.file.fs模块将视频保存到相册。以下是实现步骤和示例代码:

核心步骤:

  1. 申请存储权限:在module.json5中配置权限。
  2. 获取媒体库实例:通过mediaLibrary.getMediaLibrary获取管理对象。
  3. 创建视频资源:使用createAsset在相册中创建视频文件。
  4. 写入视频数据:通过文件流将视频数据写入创建的资源。

示例代码:

import mediaLibrary from '@ohos.multimedia.mediaLibrary';
import fs from '@ohos.file.fs';

async function saveVideoToAlbum(videoPath: string) {
  // 1. 获取媒体库实例
  const context = getContext(this) as Context;
  const mediaLib = mediaLibrary.getMediaLibrary(context);

  // 2. 创建视频资源(指定相册目录和文件名)
  const videoName = 'my_video.mp4';
  const publicDirectory = mediaLibrary.DirectoryType.DIR_VIDEO; // 视频目录
  let publicAsset: mediaLibrary.FileAsset;
  try {
    publicAsset = await mediaLib.createAsset(
      mediaLibrary.MediaType.VIDEO,
      videoName,
      publicDirectory
    );
  } catch (err) {
    console.error('创建资源失败: ', err);
    return;
  }

  // 3. 打开源视频文件和目标文件流
  let srcFile: fs.File;
  let dstFile: fs.File;
  try {
    srcFile = fs.openSync(videoPath, fs.OpenMode.READ_ONLY);
    dstFile = fs.openSync(publicAsset.uri, fs.OpenMode.WRITE_ONLY);

    // 4. 读取并写入数据(缓冲区大小可根据需要调整)
    const bufferSize = 1024 * 1024; // 1MB
    const buffer = new ArrayBuffer(bufferSize);
    let readLen = 0;
    while ((readLen = fs.readSync(srcFile.fd, buffer)) > 0) {
      fs.writeSync(dstFile.fd, buffer, { offset: readLen });
    }

    // 5. 关闭文件流
    fs.closeSync(srcFile);
    fs.closeSync(dstFile);
    console.info('视频保存成功');
  } catch (err) {
    console.error('写入失败: ', err);
    // 异常时关闭文件
    srcFile && fs.closeSync(srcFile);
    dstFile && fs.closeSync(dstFile);
  }
}

权限配置(module.json5):

{
  "module": {
    "requestPermissions": [
      {
        "name": "ohos.permission.READ_MEDIA",
        "reason": "读取视频文件"
      },
      {
        "name": "ohos.permission.WRITE_MEDIA",
        "reason": "保存视频到相册"
      }
    ]
  }
}

注意事项:

  • 安全机制:系统会自动检查权限,用户需在安装时或运行时授权。
  • 路径处理:确保源视频路径可访问,临时文件建议使用应用沙箱路径。
  • 错误处理:读写操作需捕获异常,避免资源泄露。

通过以上方法,可安全地将视频保存到系统相册,符合鸿蒙安全规范。

回到顶部