HarmonyOS鸿蒙Next JS框架,读取并播放本地音乐格式错误

HarmonyOS鸿蒙Next JS框架,读取并播放本地音乐格式错误 鸿蒙JS框架读取本地音乐还需要用到音乐在设备上的绝对路径?有点麻烦,有案例吗?

27 回复

请问楼主解决了吗,我也遇到这个问题了。

更多关于HarmonyOS鸿蒙Next JS框架,读取并播放本地音乐格式错误的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


把音频文件放于项目的私有目录:/storage/emulated/0/Android/data/your bundle name/cache/test.mp3,JS读取的路径对应为:internal://share//test.mp3

我只是用数据线和手机上链接测试了这个程序,我查看了手机上的这个路径,没有我的项目,

用真机测试的话,本地会有项目私有目录吗?还是需要提前怎么操作才有项目私有目录?

HarmonyOS的分布式文件系统让我在多设备间共享文件变得更加方便。

项目的私有目录路径对应的手机目录是:我的手机->Android->data->your bundle name,

手动将音频文件放在手机的那个位置,然后这样调用不行。本地的音频没法播放,网络的音频倒是可以,本地音频要绝对路径 如下 :音频媒体URI,支持当前主流的音频格式,支持本地绝对路径(file://)和网络路径(https://)。有知道这个本地绝对路径怎么搞吗?

问題12.jpg

player.src = ‘file://data/test.mp3’;

找HarmonyOS工作还需要会Flutter的哦,有需要Flutter教程的可以学学大地老师的教程,很不错,B站免费学的哦:BV1S4411E7LY/?p=17

player.on(‘dataLoad’, () => {
console.info(‘MusicPlayer[PlayerModel] dataLoad callback, state=’ + player.state);
player.loop = true;
player.play();
});

MusicPlayer[PlayerModel] dataLoad callback, state=[状态值]

使用提供的P40,也不行?

cke_122.jpeg

你应该可以使用p40,查看一下报错信息。

还有就是模拟器,可能没有内存卡,和真机差别挺大的,我是在openharmony上刷的API8的版本才可以做,

我的dev新建项目的话不能选择version6,不知道为什么?明明有version6啊。

源码里有demo

为啥这个代码有错误,

源码里有JS框架的音频demo吗?可以发个链接吗?我没找到。

谢谢啦,

手机版本太低,接口不支持,

第一步:通过媒体库获取所有音频文件:

let fileKeyObj = mediaLibrary.FileKey;

let fetchOp = {
    selections: fileKeyObj.MEDIA_TYPE + '= ?',
    selectionArgs: [mediaLibrary.MediaType.AUDIO.toString()],
    order: fileKeyObj.DATE_ADDED + " DESC",
};

let fetchFileResult = await this.sysMediaLib.getFileAssets(fetchOp);
let fileAssets = await fetchFileResult.getAllObject();

第二步:通过媒体id打开媒体操作符fd:

let fileKeyObj = mediaLibrary.FileKey;

let fetchOp = {
    selections: fileKeyObj.ID + '= ?',
    selectionArgs: [fileId.toString()],
    order: fileKeyObj.DATE_ADDED + " DESC",
};

let fetchFileResult = await this.sysMediaLib.getFileAssets(fetchOp);
let fileAsset = await fetchFileResult.getFirstObject();

第三步:通过获取的文件操作符fd进行播放:

this.#player.src = "fd://" + 获取的文件操作符;

你这个运行不了啊。

## 基本信息

- **日期**: 04-24 10:55:06.037
- **进程ID**: 17521-17588
- **应用包名**: com.example.shoujitest
- **错误级别**: E
- **错误代码**: 03B00/JSApp
- **日志**: app Log: Unhandled promise rejection

欢迎开发小伙伴们进来帮帮楼主

在HarmonyOS鸿蒙Next JS框架中,读取并播放本地音乐时遇到格式错误,可能是由于以下原因导致的:

  1. 文件格式不支持:HarmonyOS支持的音频格式有限,确保音频文件格式为MP3、AAC、WAV等常见格式。

  2. 文件路径错误:检查文件路径是否正确,确保文件存在于指定路径中。

  3. 权限问题:确保应用具有读取本地文件的权限,在config.json中正确配置权限。

  4. 解码器问题:某些音频文件可能需要特定解码器,确保系统或应用内置解码器支持该格式。

  5. 文件损坏:音频文件可能已损坏,尝试使用其他播放器播放以确认文件完整性。

  6. API调用错误:检查相关API调用是否正确,如AudioPlayer的使用方式是否符合规范。

  7. 系统版本兼容性:某些音频格式可能在新版本中支持,确保系统版本支持该格式。

  8. 缓存问题:清除应用缓存,重新加载音频文件。

  9. 编码格式不匹配:音频文件的编码格式可能与系统不匹配,尝试转换编码格式。

  10. 资源文件配置错误:检查resources目录下的音频文件配置是否正确。

通过排查以上问题,可以解决HarmonyOS鸿蒙Next JS框架中读取并播放本地音乐时遇到的格式错误。

在HarmonyOS鸿蒙Next JS框架中,读取并播放本地音乐时出现格式错误,可能是由于以下原因:

  1. 文件格式不支持:确保音乐文件格式(如MP3、WAV等)被鸿蒙系统支持。
  2. 文件路径错误:检查文件路径是否正确,确保文件存在于指定位置。
  3. 权限问题:确认应用已获取读取本地文件的权限。
  4. 解码器问题:系统可能缺少相应的解码器,尝试使用第三方库进行解码。
  5. 代码实现错误:检查播放音乐的代码逻辑,确保正确调用相关API。

建议逐一排查以上问题,确保文件格式、路径、权限和代码实现均正确无误。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!