SceneGraphDeveloperExtensions中mediaView重复播放出现-5错误码的解决方法
解决SceneGraph audio_mode返回后重播放-5错误码的方案
针对你遇到的首次播放正常、返回后再播放触发-5错误码的问题,以下是几种实用的解决思路:
返回时强制释放音频资源
按下返回键退出播放场景时,必须调用音频组件的close()方法,不能仅关闭场景。示例代码:function onKeyEvent(key as String, press as Boolean) as Boolean if press and key = "back" then m.audioPlayer.close() ' 彻底释放音频资源 m.top.close() return true end if return false end function未执行
close()会导致音频资源被占用,再次初始化时无法获取系统音频通道,触发-5错误。重进场景时重置音频实例
重新进入播放场景时,销毁旧的音频组件实例后再创建新实例,不要复用:' 播放场景初始化逻辑 if m.audioPlayer <> invalid then m.audioPlayer.close() m.audioPlayer = invalid end if m.audioPlayer = createObject("roSGNode", "Audio") m.audioPlayer.audio_mode = "music" ' 匹配你的音频模式设置 ' 后续设置音频URL、启动播放等操作等待资源加载完成再播放
再次播放时,监听音频组件的loadStatus事件,确保资源加载完成后再调用play():m.audioPlayer.observeField("loadStatus", "onAudioLoadReady") function onAudioLoadReady(event as Object) if event.getData() = "ready" then m.audioPlayer.play() end if end function避免在资源未就绪时强行触发播放,这也是引发-5错误的常见原因。
确认音频模式上下文正确切换
如果切换过audio_mode类型,返回后需要明确重新设置目标模式,确保系统音频上下文完成切换,避免模式冲突导致的资源占用问题。
内容的提问来源于stack exchange,提问作者Nikunj Chaklasiya
相关产品推荐
相关产品推荐

