手机播放走的是onError方法报的是unknow format 安卓手机无法播放,我的是荣耀手机
我也碰到了这个问题。。研究了一晚上感觉勉强算是找到问题所在了,不知道和你的是不是一个问题。
先说一下的我情况:用户需要实现一个动态的语音效果,也就是调用第三方的语音合成API然后再将音频返回。
首先先要确定,音频是否支持该机型:https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/InnerAudioContext.html
拖到最下面对照一下。
这里第三方给我的是mp3,我就直接把音频流返回的。表格里面安卓和ios也的确同时支持mp3的。
虽然ios工作正常,但是既然安卓控制台返回unknow format,那么说明安卓小程序的逻辑无法正确识别mp3文件(没错,就是小程序本身的锅)。
虽然我们没办法改进小程序的代码,但是我们可以修改我们自己的mp3文件帮助小程序来识别!!!
根据调查可知,mp3格式的文件由3部分组成:ID3v2标签 + 帧数据 + ID3v1标签。
一前一后两个标签分别记录了歌曲歌手专辑之类的信息,而这两块却不是必须存在的。比如说我这里的语音合成音频就是没有这部分内容的。
而mp3作为流媒体文件,也不存在文件头,按照最合理的思路来看,识别是否是mp3类型需要通过帧头来识别。但是显然安卓版小程序不是这样做的。
于是我大胆猜测,安卓版小程序是根据前后的标签来识别是否是mp3!!
要验证这个猜测很简单,我手动给一个生成出的mp3加上的歌曲专辑信息,然后再让安卓真机播放——声音真的出来了!!!
之后的事情就简单了,我每次生成语音的时候用代码把标签加上,于是就能正常工作了。