收藏
回答

innerAudioContext 安卓很长时间后才会播放,或者根本就没有声音

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug innerAudioContext 客户端 6.7.3 2.4.0
initReadPlugin: function () {//初始化,播放插件
 
innerAudioContext.onWaiting(() => {
 
debugger
 
});
 
 
 
innerAudioContext.onCanplay(() => {
 
debugger
 
});
 
 
 
innerAudioContext.onPlay(() => {
 
debugger
 
});
 
 
 
innerAudioContext.onPause(() => {
 
 
 
});
 
 
 
innerAudioContext.onEnded(() => {
 
// debugger
 
// console.log("播放自然结束");});
 
 
 
innerAudioContext.onError((res) => {
 
})
 
},
 
 
//filename 为 语音合成插件了返回的地址,经测试是正常的
 innerAudioContext.autoplay = true
 innerAudioContext.src = res.filename;


预期:

        当下面两行代码执行后,应该有语音播放出来,

innerAudioContext.autoplay = true
 innerAudioContext.src = res.filename;


bug:

    苹果机正常播放,安卓机要很长时间才会播放,或者是根本没有声音(安卓机时,很慢才会到play等的监听事件,有时候到了stop事件,也没有声音)

最后一次编辑于  2018-11-16  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

3 个回答

  • 是柿子啊
    是柿子啊
    2018-11-16

    提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-11-16
    赞同
    回复 5
    • 茹意
      茹意
      2018-11-16
      const app = getApp()
      const innerAudioContext = wx.createInnerAudioContext()
       
      Page({
        data: {
       
        },
        onLoad: function () {
          
       
          this.initReadPlugin();
        },
       
        testread:function(){
          debugger
          // innerAudioContext.stop();
          innerAudioContext.autoplay = true;
          innerAudioContext.obeyMuteSwitch = false;
          innerAudioContext.src = "https://ae.weixin.qq.com/cgi-bin/mmasrai-bin/getmedia?filename=6055837418496065539_6055837418496065539&filekey=127878962&source=miniapp_plugin";
        },
       
        initReadPlugin: function () {//初始化,播放插件
          innerAudioContext.onWaiting(() => {
            debugger
          });
       
          innerAudioContext.onCanplay(() => {
            debugger
          });
       
          innerAudioContext.onPlay(() => {
            debugger
          });
       
          innerAudioContext.onPause(() => {
            debugger
          });
       
          innerAudioContext.onEnded(() => {
            debugger
          });
       
          innerAudioContext.onError((res) => {
            debugger
          })
        },
      })


      不知道代码片段的使用方式对不对,所以,把关键代码拿出来了。

      上面的url地址,是文本合成语音的插件返回的值,可以进行下载播放,那ios机测试,没有问题,声音可以直接播放。

      2018-11-16
      回复
    • 是柿子啊
      是柿子啊
      2018-11-16回复茹意

      该链接在安卓的客户端也是无法正常打开的

      2018-11-16
      回复
    • 茹意
      茹意
      2018-11-16回复是柿子啊

      1、合成插件正确返回结果




      2、过了很久很久,才会进到下面debug


      3、进入后,有时候可以正确朗读,有时候不能



      2018-11-16
      回复
    • 茹意
      茹意
      2018-11-18回复是柿子啊

      这个网址是文本转语音的插件返回的结果-:res.filename

      我把这个网址的音频下载下来,在windows系统上,是可以正常播放的。

      这个网址在ios系统上也是可以正常播放的,但是在安卓就不可以用了。执行autoplay这句话后,会很久才会触发onplay事件,但是,音频却只读了一半就会报错(onerror)。也就是,在安卓机上,插件返回的地址音频文件,偶尔发音、偶尔不发音,这又是怎么回事呢。


      "plugins": {
          "WechatSI": {
            "version": "0.2.0",
            "provider": "wx069ba97219f66d99"
          }
        }
      plugin.textToSpeech({
             lang: "zh_CN",
             tts: true,
             content: text,
             success: function (res) {
               debugger
               console.log("success");
                 innerAudioContext.autoplay = true;
                 // innerAudioContext.obeyMuteSwitch = false;
                 innerAudioContext.src = res.filename;


      2018-11-18
      回复
    • Don`t Talk
      Don`t Talk
      07-02

      这个问题解决没,兄弟

      07-02
      回复
  • 少年郎
    少年郎
    10-11

    兄弟  这个问题解决了么  我也遇到了

    10-11
    赞同
    回复
  • 茹意
    茹意
    2018-11-16


    机型:拿大概5部安卓机进行测试,oppo、华为、coolpad等,都有这个问题,ios没有。


    代码片段:

    https://developers.weixin.qq.com/s/YV6bSYm37V3r



    2018-11-16
    赞同
    回复