HarmonyOS鸿蒙Next中解决HmPlayer: onError is called, i is 1, i1 is -19报错

HarmonyOS鸿蒙Next中解决HmPlayer: onError is called, i is 1, i1 is -19报错 一、解决方法

如图:在initBasePlayer中先释放mplayer

if (mPlayer!=null){
    mPlayer.release();
}

PS:文中提到的HmPlayer播放器来自于官方示例

源码下载连接:AudioDemo · HarmonyOS/harmonyos_codelabs - 码云 - 开源中国 (gitee.com)

二、解决过程

1、问题出现

我需要使用HmPlayer多次播放多个音频,在前面是可以正常播放的,但是当播放次数达到一定数量时(约为130次左右),就会报HmPlayer : onError is called ,i is 1,i1 is -19的错误,如下图:

同时也无法正常播放音频,这个错误是从Player中抛出的然后player的源码无法查看,就无法确切的明确错误原因。

最开始我实现多次播放是每次都new一个HmPlayer,然后设置监听,播放完就释放,就抛出了这个错误。

然后尝试创建HmPlayer数组,通过调用HmPlayer.reload()来实现更新播放文件,依然在多次播放后出现了这个错误。

2、尝试解决

与此同时,在论坛搜到了老卫去年年初的帖子:HarmonyOS用 ohos.media.player.Player 来播放mp3音频报错!-华为开发者论坛 (huawei.com),知道了错误代码是未知错误,有可能跟api版本有关。

因为是播放次数达到一定阈值才会抛出这个错误,于是就怀疑是哪块超限了。

同时阅读HmPlayer源码发现reload函数里面更改了player的文件路径及播放位置,同时在play里面调用了player.reset(), 如下图:

之后,在initBasePlayer里面new了一个player

由于无法查看player的源码,这里也无法确定player.reset()的业务流程,而在initBasePlayer里面就会出现多次实例化Player对象,问题可能就是出现在这里。

于是尝试new之前先释放原有的对象。

诶!运气不错,中了!

如下图:播放了二百多次还没出现问题,应该是可以了~

三、总结

如果碰到Player:onError is called ,i is 1,i1 is -19这个报错的话,检查下代码是不是存在多次实例化Player对象的问题,在new之前先释放掉用完的Player实例。

有啥问题欢迎评论区交流呀!

音频播放开发文档:音频播放开发指导-音频-媒体-开发-HarmonyOS应用开发

(本文原创,转载请标明出处和原文链接)

2 回复

在HarmonyOS鸿蒙Next中,HmPlayer: onError is called, i is 1, i1 is -19报错通常与媒体播放器相关。i表示错误类型,i1表示具体错误码。i=1表示媒体错误,i1=-19表示媒体格式不支持或文件损坏。

解决方法包括:

  1. 检查媒体文件格式,确保支持HmPlayer的格式,如MP4、MP3等。
  2. 确认媒体文件未损坏,尝试重新下载或转换格式。
  3. 更新HmPlayer到最新版本,确保兼容性。
  4. 检查设备存储空间,确保足够空间进行播放。
  5. 查看系统日志,获取更多错误信息。

如果问题持续,建议检查媒体文件格式和设备存储状态。

更多关于HarmonyOS鸿蒙Next中解决HmPlayer: onError is called, i is 1, i1 is -19报错的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,HmPlayer: onError is called, i is 1, i1 is -19报错通常与媒体播放器的初始化或资源加载失败有关。建议以下步骤排查:

  1. 检查媒体文件:确保媒体文件路径正确且文件未损坏。
  2. 权限配置:在config.json中确认已添加必要的权限,如ohos.permission.READ_MEDIA
  3. 网络连接:若播放网络资源,确保设备网络正常且URL可访问。
  4. 播放器配置:检查播放器初始化代码,确保参数和回调设置正确。
  5. 日志分析:查看详细日志,定位具体错误原因。

若问题持续,建议查阅官方文档或社区寻求进一步帮助。

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