HarmonyOS鸿蒙Next中用 ohos.media.player.Player 来播放mp3音频报错!
HarmonyOS鸿蒙Next中用 ohos.media.player.Player 来播放mp3音频报错!
我想实现一个mp3播放器功能,看帖子其他人说推荐用 ohos.media.player.Player 来播放mp3音频,
核心代码如下。
```java
player.setSource(source);
player.setPlayerCallback(playerCallback);
player.prepare();
player.play();
private Player.IPlayerCallback playerCallback = new Player.IPlayerCallback() {
@Override
public void onPrepared() {
HiLog.info(LABEL_LOG, "onPrepared");
HiLog.info(LABEL_LOG, "isNowPlaying: %{public}s", player.isNowPlaying());
HiLog.info(LABEL_LOG, "getCurrentTime: %{public}s", player.getCurrentTime());
HiLog.info(LABEL_LOG, "getDuration: %{public}s", player.getDuration());
}
@Override
public void onMessage(int i, int i1) {
HiLog.info(LABEL_LOG, "onMessage");
}
@Override
public void onError(int i, int i1) {
HiLog.info(LABEL_LOG, "onError, i: %{public}s, i1: %{public}s", i, i1);
}
@Override
public void onResolutionChanged(int i, int i1) {
HiLog.info(LABEL_LOG, "onResolutionChanged");
}
@Override
public void onPlayBackComplete() {
HiLog.info(LABEL_LOG, "onPlayBackComplete");
}
@Override
public void onRewindToComplete() {
HiLog.info(LABEL_LOG, "onRewindToComplete");
}
@Override
public void onBufferingChange(int i) {
HiLog.info(LABEL_LOG, "onBufferingChange");
}
@Override
public void onNewTimedMetaData(Player.MediaTimedMetaData mediaTimedMetaData) {
HiLog.info(LABEL_LOG, "onNewTimedMetaData");
}
@Override
public void onMediaTimeIncontinuity(Player.MediaTimeInfo mediaTimeInfo) {
HiLog.info(LABEL_LOG, "onMediaTimeIncontinuity");
}
};
在手机远程模拟器里面运行报错如下:
02-16 21:04:50.516 7873-25684/com.waylau.hmos.musicplayer I 00001/MainAbilitySlice: onError, i: 1, i1: -19
找下了错误码,前面的1说的是未知错误,后面的-19就不知是啥意思了。
之后便再也获取不到 getCurrentTime、getDuration 的值,无法知道这个mp3歌曲的播放进度,是还在放还是已经放完了?(本身手机远程模拟器也是听不到声音的)。
```plaintext
02-16 21:40:43.746 29502-29502/com.waylau.hmos.musicplayer I 00001/MainAbilitySlice: getCurrentTime: 0
02-16 21:40:43.747 29502-29502/com.waylau.hmos.musicplayer I 00001/MainAbilitySlice: getDuration: -1
02-16 21:40:43.750 29502-4064/com.waylau.hmos.musicplayer I 00001/MainAbilitySlice: onError, i: 62980137, i1: 0
老卫这个问题解决了嘛,我也出现了这个报错,我是一开始可以播放MP3文件,但是多次点击(大约130次)播放之后就有这个报错了,怀疑是里面哪块数组超范围了?
我在每次播放完执行release()操作,无效。
然后尝试只使用10个来播放,每次播放不new了,还是大约130次播放之后报错。
然后,我发现,即使release()之后,整个播放器对象实例好像没有释放?
更多关于HarmonyOS鸿蒙Next中用 ohos.media.player.Player 来播放mp3音频报错!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
api的问题,有些版本可以,有些不行。你升级到最新版本试下。我也没有去测试所有的版本,
好嘞,谢谢啦,
开发者你好,目前wearable的version 4是有问题的,version 3是没问题的,phone和tablet只有version 4的,都有问题,TV的都没有问题。已经在抓紧修复中。
好的。明白。好的。明白。好的。明白。好的。明白。
您好,你这个是用的手机测试的吧,我试了一下使用TV没问题,同样的代码使用手机却是有问题的,我这边会反馈并发个帖子让鸿蒙处理一下
嗯。记得当时只是在 Car 和 Phone 远程设备模拟器上测过。
你好,我也在弄多媒体这一块,问题好像比较多,也遇到了-19的问题
我是做的player视频播放,我发现-19应该是跟source关系比较大,鸿蒙这个errorcode实在一言难尽,资料不好找,errorcode也提供不了任何帮助
开发者你好,收到你的反馈,我们将尽快将问题转发相关责任人处理,因正值假期,当前咨询人数较多,请耐心等待。
在使用 ohos.media.player.Player
播放MP3音频时,常见报错可能包括资源路径错误、权限未配置或播放器状态异常。请检查以下内容:
- 资源路径:确保音频文件路径正确,且文件存在。
- 权限配置:在
config.json
中添加ohos.permission.READ_MEDIA
权限。 - 播放器状态:确保在
prepare()
和play()
之前正确初始化播放器。
示例代码:
Player player = new Player(context);
player.setSource(new Source("file:///sdcard/audio.mp3"));
player.prepare();
player.play();
如仍报错,请检查日志获取具体错误信息。