小程序
小游戏
企业微信
微信支付
扫描小程序码分享
手机播放走的是onError方法报的是unknow format 安卓手机无法播放,我的是荣耀手机
6 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
安卓先下载到本地
if (wx.getSystemInfoSync().platform == "ios") { this.innerAudioContext.src = voice; this.innerAudioContext.play(); } else { wx.downloadFile({ url: voice, success:(res)=> { console.log(res) if (res.statusCode === 200) { this.innerAudioContext.src = res.tempFilePath; this.innerAudioContext.play(); } } }) }
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
我也碰到了这个问题。。研究了一晚上感觉勉强算是找到问题所在了,不知道和你的是不是一个问题。
先说一下的我情况:用户需要实现一个动态的语音效果,也就是调用第三方的语音合成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加上的歌曲专辑信息,然后再让安卓真机播放——声音真的出来了!!!
之后的事情就简单了,我每次生成语音的时候用代码把标签加上,于是就能正常工作了。
您好 现在这个问题解决了吗
出现这个错误的音频文件是不是你在模拟器里录的音然后上传的文件?
不是,是通过手机录的,然后上传的
你播放的文件的格式是什么?我之前也遇到安卓上errCode 10004的问题,是因为播放的文件格式是acc,如果是m4a就不会出现这个问题
你看文档,我刚开始用的是其他格式,文档上支持的,也是不能够播放
支持的格式为什么安卓手机无法播放,开发工具和ios播放没问题,你能给个解释不
打印错误信息应该是有明确提示的吧
开发文档中有显示安卓和ios都支持acc
报错是1004吧,这是指格式错误
我能看懂提示,安卓手机上这个格式播放不了,你们api文档上写的是安卓ios都没问题,上面有代码片段,你可以看下,能不能给个解决方法呢,我已经让后台更换格式了,关键是你们的文档上写的支持这种格式
我的意思不是不支持这个acc格式,是你的这个格式不是标准的音频格式
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
安卓先下载到本地
if (wx.getSystemInfoSync().platform == "ios") { this.innerAudioContext.src = voice; this.innerAudioContext.play(); } else { wx.downloadFile({ url: voice, success:(res)=> { console.log(res) if (res.statusCode === 200) { this.innerAudioContext.src = res.tempFilePath; this.innerAudioContext.play(); } } }) }
我也碰到了这个问题。。研究了一晚上感觉勉强算是找到问题所在了,不知道和你的是不是一个问题。
先说一下的我情况:用户需要实现一个动态的语音效果,也就是调用第三方的语音合成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加上的歌曲专辑信息,然后再让安卓真机播放——声音真的出来了!!!
之后的事情就简单了,我每次生成语音的时候用代码把标签加上,于是就能正常工作了。
您好 现在这个问题解决了吗
出现这个错误的音频文件是不是你在模拟器里录的音然后上传的文件?
不是,是通过手机录的,然后上传的
你播放的文件的格式是什么?我之前也遇到安卓上errCode 10004的问题,是因为播放的文件格式是acc,如果是m4a就不会出现这个问题
你看文档,我刚开始用的是其他格式,文档上支持的,也是不能够播放
支持的格式为什么安卓手机无法播放,开发工具和ios播放没问题,你能给个解释不
打印错误信息应该是有明确提示的吧
开发文档中有显示安卓和ios都支持acc
报错是1004吧,这是指格式错误
我能看懂提示,安卓手机上这个格式播放不了,你们api文档上写的是安卓ios都没问题,上面有代码片段,你可以看下,能不能给个解决方法呢,我已经让后台更换格式了,关键是你们的文档上写的支持这种格式
我的意思不是不支持这个acc格式,是你的这个格式不是标准的音频格式