HarmonyOS 鸿蒙Next如何获取音频文件如MP3的文件名称,大小,时长信息

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

HarmonyOS 鸿蒙Next如何获取音频文件如MP3的文件名称,大小,时长信息

如何获取音频文件如MP3的文件名称,大小,时长信息

2 回复
获取媒体文件的时长信息可以通过AVMetadataExtractor获取媒体文件的元数据获取到文件的时长等信息,获取文件名字、大小可以通过fs.lstatSync获取

具体使用可以参考文档:

AVMetadataExtractor:@ohos.multimedia.media (媒体服务)-ArkTS API-Media Kit(媒体服务)-媒体 - 华为HarmonyOS开发者

lstatSync:@ohos.file.fs (文件管理)-ArkTS API-Core File Kit(文件基础服务)-应用框架 - 华为HarmonyOS开发者

请参考demo:

readFileSize(filesDir: string) {

    let filePath = filesDir + "/test.txt";

    fs.stat(filePath).then((stat: fs.Stat) => {

      console.info("get file info succeed, the size of file is " + stat.size);

    }).catch((err: BusinessError) => {

      console.error("get file info failed with error message: " + err.message + ", error code: " + err.code);

    });

  }

该方法是操作应用沙箱路径里的文件,您这个文件地址应该是document文档,

请参考demo:

async getFile() {

    let documentSaveOptions = new picker.DocumentSaveOptions();

    let documentPicker = new picker.DocumentViewPicker();

    await documentPicker.select(documentSaveOptions)

      .then((documentSaveResult: Array<string>) => {

        let uri = documentSaveResult[0]

        let file = fs.openSync(uri)

        let filestat = fs.statSync(file.fd)

        console.log('文件大小:' + filestat.size + 'B')

      })

      .catch((err: BusinessError) => {

        console.log(JSON.stringify(err))

      })

  }

更多关于HarmonyOS 鸿蒙Next如何获取音频文件如MP3的文件名称,大小,时长信息的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next系统中,获取音频文件(如MP3)的文件名称、大小、时长信息,可以通过以下步骤实现:

  1. 文件名称:使用文件管理器(如FileProviderUri处理)直接获取文件路径,通过路径分割得到文件名。

  2. 文件大小:通过文件系统的API,如java.io.File对象的length()方法(注意:此处虽提及Java,但指概念性说明,鸿蒙API类似处理),可以获取文件大小(字节为单位)。

  3. 文件时长:音频文件的时长信息需通过解析音频文件的元数据获取。鸿蒙提供了媒体库(如MediaMetadataRetriever类,注意:此处为类比说明,实际鸿蒙API可能不同),可以加载音频文件并获取其时长。示例代码如下(假设存在类似API):

// 示例代码,注意实际鸿蒙API可能不同
MediaMetadataRetriever retriever = new MediaMetadataRetriever();
retriever.setDataSource(filePath);
String durationStr = retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION);
long duration = Long.parseLong(durationStr); // 毫秒为单位

在鸿蒙系统中,应使用对应的媒体处理API实现上述功能。

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

回到顶部