HarmonyOS 鸿蒙Next 保存在线视频到本地相册

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 保存在线视频到本地相册 需要保存在线视频到本地相册,文档中未找到类似demo

2 回复

参考demo,可以使用安全组件saveButteon

// 获取应用文件路径
let context = this as common.UIAbilityContext;
let cacheDir = context.cacheDir;

async function readWriteFile(){
  let helper = photoAccessHelper.getPhotoAccessHelper(context);
  let uri = await helper.createAsset(photoAccessHelper.PhotoType.VIDEO, 'mp4');
  let destFile = await fs.open(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  // 打开文件
  let srcFile = fs.openSync(cacheDir + '/8.mp4', fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
  // 读取源文件内容并写入至目的文件
  let bufSize = 4096;
  let readSize = 0;
  let buf = new ArrayBuffer(bufSize);
  let readOptions: ReadOptions = {
    offset: readSize,
    length: bufSize
  };
  let readLen = fs.readSync(srcFile.fd, buf, readOptions);
  while(readLen > 0){
    readSize += readLen;
    let writeOptions: WriteOptions = {
      length: readLen
    };
    fs.writeSync(destFile.fd, buf, writeOptions);
    readOptions.offset = readSize;
    readLen = fs.readSync(srcFile.fd, buf, readOptions);
  }
  // 关闭文件
  fs.closeSync(srcFile);
  fs.closeSync(destFile);
}

@Entry
@Component
struct VideoPage {
  @State message: string = 'Save Demo';
  downLoad(){
    try {
      request.downloadFile(context, {
        url: 'https://xxx/10.mp4',
        filePath: cacheDir + '/8.mp4'
      }).then((downloadTask: request.DownloadTask) => {
        downloadTask.on('complete', () => {
          console.info('download complete');
          let file = fs.openSync(cacheDir + '/8.mp4', fs.OpenMode.READ_WRITE);
          let arrayBuffer = new ArrayBuffer(8000);
          let readLen = fs.readSync(file.fd, arrayBuffer);
          let buf = buffer.from(arrayBuffer, 0, readLen);
          console.info(`The content of file: ${buf.toString()}`);
          fs.closeSync(file);
        })
      }).catch((err: BusinessError) => {
        console.error(`Invoke downloadTask failed, code is ${err.code}, message is ${err.message}`);
      });
    } catch (error) {
      let err: BusinessError = error as BusinessError;
      console.error(`Invoke downloadFile failed, code is ${err.code}, message is ${err.message}`);
    }
  }
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('SaveDemo')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(() =>{
          this.downLoad()
        })
      SaveButton({text:SaveDescription.SAVE}).onClick(async (_event: ClickEvent, result: SaveButtonOnClickResult) =>{
        if(result == SaveButtonOnClickResult.SUCCESS){
          readWriteFile()
        }
        else {
          AlertDialog.show({ message: "设置权限失败" })
        }
      })
    }
    .height('100%')
    .width('100%')
  }
}

更多关于HarmonyOS 鸿蒙Next 保存在线视频到本地相册的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中,将在线视频保存到本地相册的操作通常涉及几个步骤,具体取决于视频所在的应用以及该应用是否提供了下载功能。以下是一个基于一般情况的说明:

  1. 寻找下载选项:首先,在播放在线视频的页面或应用中,查找是否有“下载”或类似的按钮。大多数视频播放应用都会在视频播放界面或相关设置页面提供下载选项。

  2. 选择下载质量:如果应用支持多种下载质量,选择合适的视频质量进行下载。一般来说,高清视频会占用更多存储空间。

  3. 确认下载路径:在开始下载前,确认或设置下载路径为设备的本地相册或指定的文件夹。某些应用可能允许用户自定义下载位置。

  4. 等待下载完成:一旦开始下载,耐心等待视频文件下载完成。下载时间取决于视频大小和网络速度。

  5. 检查本地相册:下载完成后,打开设备的相册应用,检查下载的视频是否已成功保存到指定的相册或文件夹中。

请注意,不是所有应用都支持将在线视频保存到本地相册。如果特定应用没有提供下载功能,可能需要通过其他方式(如屏幕录制)来获取视频内容,但这可能会影响视频质量和分辨率。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部