安卓手机wx.createInnerAudioContext()无法播放音频
发布于 5 年前 作者 qiangyin 5424 次浏览 来自 问答

手机播放走的是onError方法报的是unknow format 安卓手机无法播放,我的是荣耀手机

4 回复

我也碰到了这个问题。。研究了一晚上感觉勉强算是找到问题所在了,不知道和你的是不是一个问题。

先说一下的我情况:用户需要实现一个动态的语音效果,也就是调用第三方的语音合成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加上的歌曲专辑信息,然后再让安卓真机播放——声音真的出来了!!!

之后的事情就简单了,我每次生成语音的时候用代码把标签加上,于是就能正常工作了。

出现这个错误的音频文件是不是你在模拟器里录的音然后上传的文件?

打印错误信息应该是有明确提示的吧

支持的格式为什么安卓手机无法播放,开发工具和ios播放没问题,你能给个解释不

回到顶部