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应用开发
(本文原创,转载请标明出处和原文链接)
在HarmonyOS鸿蒙Next中,HmPlayer: onError is called, i is 1, i1 is -19
报错通常与媒体播放器相关。i
表示错误类型,i1
表示具体错误码。i=1
表示媒体错误,i1=-19
表示媒体格式不支持或文件损坏。
解决方法包括:
- 检查媒体文件格式,确保支持HmPlayer的格式,如MP4、MP3等。
- 确认媒体文件未损坏,尝试重新下载或转换格式。
- 更新HmPlayer到最新版本,确保兼容性。
- 检查设备存储空间,确保足够空间进行播放。
- 查看系统日志,获取更多错误信息。
如果问题持续,建议检查媒体文件格式和设备存储状态。
更多关于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
报错通常与媒体播放器的初始化或资源加载失败有关。建议以下步骤排查:
- 检查媒体文件:确保媒体文件路径正确且文件未损坏。
- 权限配置:在
config.json
中确认已添加必要的权限,如ohos.permission.READ_MEDIA
。 - 网络连接:若播放网络资源,确保设备网络正常且URL可访问。
- 播放器配置:检查播放器初始化代码,确保参数和回调设置正确。
- 日志分析:查看详细日志,定位具体错误原因。
若问题持续,建议查阅官方文档或社区寻求进一步帮助。