收藏
回答

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

框架类型 问题类型 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事件,也没有声音)

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

3 个回答

  • 社区技术运营专员-小柿子
    社区技术运营专员-小柿子
    2018-11-16

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

    2018-11-16
    有用
    回复 5
    • fry
      fry
      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回复fry

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

      2018-11-16
      回复
    • fry
      fry
      2018-11-16回复社区技术运营专员-小柿子

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




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


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



      2018-11-16
      回复
    • fry
      fry
      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
      2019-07-02

      这个问题解决没,兄弟

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

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

    2019-10-11
    有用
    回复
  • fry
    fry
    2018-11-16


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


    代码片段:

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



    2018-11-16
    有用
    回复
登录 后发表内容