收藏
回答

真机播放不了音频了

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

- 当前 Bug 的表现(可附上截图)

开发好的功能,在2019-01-08那天在真机上还能正常播放,今天不能在真机上正常播放了。但是目前在微信开发者工具中正常播放

- 预期表现

希望正常播放

- 复现路径


- 提供一个最简复现 Demo


playAudio() {

let audioCtx = wx.createInnerAudioContext();

let src = this.data.tempPath;

console.log(src);

audioCtx.src = src;

this.setData({

'audioCtx': audioCtx,

'currentDuration': '00:00',

'percentage': 0

});

audioCtx.play();

audioCtx.onPlay(() => {

let totalTime = this.data.duration;

let count = 0;

this.setData({

'play': true

});

let audio = setInterval(() => {

if (count >= totalTime) {

audioCtx.pause();

clearInterval(audio);

this.setData({

'play': false,

'percentage': 100

});

} else {

let showDuration;

count++;

let min = parseInt(count / 60);

let senconds = Math.ceil(count % 60);

let newMin, newSenconds;

if (min < 10) {

newMin = '0' + min;

} else {

newMin = min;

}

if (senconds < 10) {

newSenconds = '0' + senconds;

} else {

newSenconds = senconds;

}

showDuration = newMin + ':' + newSenconds;

this.setData({

'currentDuration': showDuration,

'percentage': (count / totalTime) * 100

});

}

}, 1000);

this.setData({

'audioInterval': audio

});

})

},


最后一次编辑于  01-09  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏投诉关注问题回答

3 个回答

  • nickname
    nickname
    01-09

    不能播放报错信息是什么?麻烦提供能复现问题的代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

    01-09
    赞同
    回复 5
    • 小蟹不是小谢
      小蟹不是小谢
      01-09

      不能播放没有报错信息,没有任何报错信息。

      audioCtx.play();执行没有报错 但是没有执行播放

      然后监听onPlay()事件没有触发


      //界面

      <view wx:if="{{item.AudioInfo!=undefined}}" class='video' data-url="{{item.AudioInfo.Url}}" data-duration="{{item.AudioInfo.duration}}" bindtap='workContAudio'>

      <image src='/assets/images/voice-icon.png' mode='aspectFit' class='voice-icon' />

      <text>{{item.AudioInfo.durationShow}}</text>

      </view>

      //item.AudioInfo={

        Ext:".mp3"

        Name:"wx2031dc7e159a6d64.o6zAJs0PAAcES9GL1WoyiZ5cpXIk.eB2TIYugbgZr17cef180d558ada819276787a4339401.durationTime=3260.mp3"

        Size:63

        Url:"https://upload.jxxhy.cn/uploads/mail/20190108/wx2031dc7e159a6d64.o6zAJs0PAAcES9GL1WoyiZ5cpXIk.eB2TIYugbgZr17cef180d558ada819276787a4339401.durationTime=3260.mp3"

        duration:3

        durationShow:"3''"

        mediaType:"audio"

      }



      //js

      workContAudio(e) {

      this.setData({

      'showContPlay': true

      });

      let src = e.currentTarget.dataset.url;

      let timeLen = e.currentTarget.dataset.duration; //数字

      let timeStr = this.formatTimeToStr(timeLen); // 00:00

      this.setData({

      'tempPath': src,

      'duration': timeLen,

      'recordDuration': timeStr

      });

      this.playAudio();

      },



      /**

        * 播放录音

        */

      playAudio() {

      let audioCtx = wx.createInnerAudioContext();

      let src = this.data.tempPath;

      audioCtx.src = src;

      this.setData({

      'audioCtx': audioCtx,

      'currentDuration': '00:00',

      'percentage': 0

      });

      audioCtx.play();

      console.log(this.data);

      audioCtx.onPlay(() => {

      let totalTime = this.data.duration;

      let count = 0;

      this.setData({

      'play': true

      });

      let audio = setInterval(() => {

      if (count >= totalTime) {

      audioCtx.pause();

      clearInterval(audio);

      this.setData({

      'play': false,

      'percentage': 100

      });

      } else {

      let showDuration;

      count++;

      let min = parseInt(count / 60);

      let senconds = Math.ceil(count % 60);

      let newMin, newSenconds;

      if (min < 10) {

      newMin = '0' + min;

      } else {

      newMin = min;

      }

      if (senconds < 10) {

      newSenconds = '0' + senconds;

      } else {

      newSenconds = senconds;

      }

      showDuration = newMin + ':' + newSenconds;

      this.setData({

      'currentDuration': showDuration,

      'percentage': (count / totalTime) * 100

      });

      }

      }, 1000);

      this.setData({

      'audioInterval': audio

      });

      })

      },


      01-09
      回复
    • nickname
      nickname
      01-09回复小蟹不是小谢

      请按格式提供代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html

      01-09
      回复
    • 小蟹不是小谢
      小蟹不是小谢
      01-09回复nickname

      https://developers.weixin.qq.com/s/sZbvAimg7q5B我这都需要一些必要信息,才行,token以及绑定信息,

      01-09
      回复
    • nickname
      nickname
      01-09回复小蟹不是小谢

      麻烦提供可以直接使用的代码片段哈,把那些不必要的逻辑去掉,现在提供的代码片段无法正常使用呢

      01-09
      回复
    • 小蟹不是小谢
      小蟹不是小谢
      01-09回复nickname

      完全没办法呢,你能不能帮我处理一下,把我那个简洁一下

      01-09
      回复
  • 静享华年
    静享华年
    01-17

    我也遇到了相同的问题,也是用的wx.createInnerAudioContext(),有时候语音会正常播放,有时候没有播放,且未报任何错误,下面是我的代码,我的机型是iphone6

    var bgm = wx.createInnerAudioContext();

    bgm.autoplay = true;

    bgm.loop = false;

    bgm.src ="mp3/1.mp3";


    01-17
    赞同
    回复 2
    • 小蟹不是小谢
      小蟹不是小谢
      01-17

      这个问题我这边又发现没有了。就是三个手机都试了,但是之前发的那个也确实还是播放不了,但是新发的都没有问题了。

      还有没有报错信息,你用这个监听错误信息的事件了吗,我当时就是忘了写这个监听事件 bgm.onError((err)=>{     console.log(err) })

      01-17
      回复
    • 静享华年
      静享华年
      01-17回复小蟹不是小谢

      谢谢,我试试

      01-17
      回复
  • ZLY
    ZLY
    01-24

    我的真机也不能播放音频,在模拟器上可以正常播放,真机上播放官方demo上的链接,需要插上耳机才有声音,拔下耳机再插上就没有声音了,播放本地音频插不插耳机都没有声音,以上,在模拟器上都有声音

    01-24
    赞同
    回复 3
    • 静享华年
      静享华年
      01-24

      我这边更无语,真机测试有声音,开发版,体验版都没声音,且不报任何错误,实在郁闷,请问你的问题解决了吗

      01-24
      回复
    • 来宝
      来宝
      02-15回复静享华年

      没有呢,你解决了吗?

      02-15
      回复
    • 静享华年
      静享华年
      03-11回复来宝

      加了个定时器,语音延迟播放,问题基本解决

      03-11
      回复