收藏
回答

安卓手机wx.createInnerAudioContext()无法播放音频

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug wx.createInnerAudioContext() 客户端 6.5.6 2.5.2

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

回答关注问题邀请回答
收藏

6 个回答

  • Soulmate
    Soulmate
    2021-04-28

    安卓先下载到本地

    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();
             }
          }
       })
    }
    
    2021-04-28
    有用 1
    回复
  • 张颢頔
    张颢頔
    2019-07-07

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


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


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

    2019-07-07
    有用 1
    回复 4
    • ꧁꫞吴江꫞꧂
      ꧁꫞吴江꫞꧂
      2019-07-16
      请问每次生成语音的时候用代码把标签加上,是怎么做到的呢
      2019-07-16
      回复
    • 张颢頔
      张颢頔
      2019-07-16回复꧁꫞吴江꫞꧂
      我是java服务器,直接参考https://www.cnblogs.com/ztysir/p/5513853.html,加入的内容写死在代码里(我的歌名专辑名都是“a”)
      2019-07-16
      回复
    • ꧁꫞吴江꫞꧂
      ꧁꫞吴江꫞꧂
      2019-07-17回复张颢頔
      昨天解决了,是后台java对音频进行转码解决的
      2019-07-17
      回复
    • 狄不动我不动
      狄不动我不动
      2020-06-29回复꧁꫞吴江꫞꧂
      具体怎么转码的,求告知一下
      2020-06-29
      回复
  • P
    P
    2020-05-26

    您好 现在这个问题解决了吗

    2020-05-26
    有用
    回复
  • 2019-06-04

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

    2019-06-04
    有用
    回复 3
    • 2019-06-04

      不是,是通过手机录的,然后上传的

      2019-06-04
      回复
    • 2019-06-04回复

      你播放的文件的格式是什么?我之前也遇到安卓上errCode 10004的问题,是因为播放的文件格式是acc,如果是m4a就不会出现这个问题

      2019-06-04
      回复
    • 2019-06-04回复

      你看文档,我刚开始用的是其他格式,文档上支持的,也是不能够播放

      2019-06-04
      回复
  • 2019-05-31

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

    2019-05-31
    有用
    回复 2
    • 南柯君
      南柯君
      2019-12-03
      支持的格式 ,有时候特殊处理 过后的 的还是无法播放 会提示格式错误
      2019-12-03
      回复
    • 南柯君
      南柯君
      2019-12-03
      这应该是微信方的问题 ,里面对音频处理部分的兼容性bug
      2019-12-03
      回复
  • 疯狂的小辣椒
    疯狂的小辣椒
    2019-05-31

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

    2019-05-31
    有用
    回复 6
    • 2019-05-31

      开发文档中有显示安卓和ios都支持acc

      2019-05-31
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2019-05-31回复

      报错是1004吧,这是指格式错误

      2019-05-31
      回复
    • 2019-05-31回复疯狂的小辣椒

      我能看懂提示,安卓手机上这个格式播放不了,你们api文档上写的是安卓ios都没问题,上面有代码片段,你可以看下,能不能给个解决方法呢,我已经让后台更换格式了,关键是你们的文档上写的支持这种格式

      2019-05-31
      回复
    • 疯狂的小辣椒
      疯狂的小辣椒
      2019-05-31回复

      我的意思不是不支持这个acc格式,是你的这个格式不是标准的音频格式

      2019-05-31
      回复
    • 2019-05-31回复疯狂的小辣椒


      2019-05-31
      回复
    查看更多(1)
登录 后发表内容