HarmonyOS鸿蒙Next JS框架,读取并播放本地音乐格式错误
HarmonyOS鸿蒙Next JS框架,读取并播放本地音乐格式错误 鸿蒙JS框架读取本地音乐还需要用到音乐在设备上的绝对路径?有点麻烦,有案例吗?
请问楼主解决了吗,我也遇到这个问题了。
更多关于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://)。有知道这个本地绝对路径怎么搞吗?
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,也不行?
你应该可以使用p40,查看一下报错信息。
还有就是模拟器,可能没有内存卡,和真机差别挺大的,我是在openharmony上刷的API8的版本才可以做,
我的dev新建项目的话不能选择version6,不知道为什么?明明有version6啊。
我的SDK,是Version 6啊,
他说的版本支持Version6。文档链接:https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-media-0000001103383404#section5174142818365
源码里有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框架中,读取并播放本地音乐时遇到格式错误,可能是由于以下原因导致的:
-
文件格式不支持:HarmonyOS支持的音频格式有限,确保音频文件格式为MP3、AAC、WAV等常见格式。
-
文件路径错误:检查文件路径是否正确,确保文件存在于指定路径中。
-
权限问题:确保应用具有读取本地文件的权限,在
config.json
中正确配置权限。 -
解码器问题:某些音频文件可能需要特定解码器,确保系统或应用内置解码器支持该格式。
-
文件损坏:音频文件可能已损坏,尝试使用其他播放器播放以确认文件完整性。
-
API调用错误:检查相关API调用是否正确,如
AudioPlayer
的使用方式是否符合规范。 -
系统版本兼容性:某些音频格式可能在新版本中支持,确保系统版本支持该格式。
-
缓存问题:清除应用缓存,重新加载音频文件。
-
编码格式不匹配:音频文件的编码格式可能与系统不匹配,尝试转换编码格式。
-
资源文件配置错误:检查
resources
目录下的音频文件配置是否正确。
通过排查以上问题,可以解决HarmonyOS鸿蒙Next JS框架中读取并播放本地音乐时遇到的格式错误。
在HarmonyOS鸿蒙Next JS框架中,读取并播放本地音乐时出现格式错误,可能是由于以下原因:
- 文件格式不支持:确保音乐文件格式(如MP3、WAV等)被鸿蒙系统支持。
- 文件路径错误:检查文件路径是否正确,确保文件存在于指定位置。
- 权限问题:确认应用已获取读取本地文件的权限。
- 解码器问题:系统可能缺少相应的解码器,尝试使用第三方库进行解码。
- 代码实现错误:检查播放音乐的代码逻辑,确保正确调用相关API。
建议逐一排查以上问题,确保文件格式、路径、权限和代码实现均正确无误。