收藏
回答

在ipad pro上高速频繁使用createInnerAudioCo播放短声音,必然会导致微信闪退!

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug createInnerAudioContext 微信iOS客户端 8.0.20 2.24.1

因为业务需要,用户操作需要触发很密集但无规律的短声音播放(没法用固定循环播放),用下面的代码,在3分钟以内,有接近100%概率能让ipad pro(ios 14.6)上的微信闪退。闪退发生的时间不确定,有时运行4秒就闪退,有时30秒闪退,有时2分多钟后闪退。而同样的测试代码片段运行在iphone 7p手机、android手机上,即使运行2小时也不会闪退。

1、修改useWebAudioImplement: false 后不会闪退,但声音会有很大的咔哒杂音,无法用。(官方文档说设置true会占用更大的内存)

2、并发声音播放数 Contex_Number 试过 4、8、16、32 ,对闪退规律影响不大。小于3时,长时间运行也是会闪退,但是声音密集度不足,满足不了需求。

3、即使先stop()再play(),也是会闪退。

4、缩短声音长度到1秒内,采样率降低到16000sps,也没能缓解闪退问题

5、下面的定时器100ms是业务上需要到的,把定时调到1000ms,也是会闪退的,只是需要等时间久一些。怀疑是内存泄漏。


请问是否有办法解决这个问题,是否有别的途径实现我这个需求,希望能指导,谢谢!


测试代码如下(与代码片段里的一致),大概思路是初始化时一次性创建8个声音contex,在需要播放时调出“空闲”的contex播放,以达到无规律密集重叠播放的效果。

var audio_contex_list = [];
var Contex_Number = 8;
var current_idx = 0var timer_contex = null;
Page({
    onLoad(options) {
        play_audio_file_init()
    },
    onShow() {
        Loop();
    },
    onHide(){
        clearTimeout(timer_contex);
    }
})


function Loop(){
    timer_contex = setTimeout(Loop,100);
    play_shoot_audio_file(); 
}
 
function play_audio_file_init() {
    for (let idx = 0; idx < Contex_Number; idx++) {
        let contex = wx.createInnerAudioContext({
            useWebAudioImplementtrue
        })
        contex.autoplay = false;
        contex.src = '/sound/mix_2.wav';
        audio_contex_list.push(contex);
    }
}


function play_shoot_audio_file() {
    if (current_idx >= Contex_Number) {
        current_idx = 0;
    }
    let contex = audio_contex_list[current_idx];
    contex.play();
    current_idx++;
};




https://developers.weixin.qq.com/miniprogram/dev/api/media/audio/wx.createInnerAudioContext.html


最后一次编辑于  2022-05-06
回答关注问题邀请回答
收藏

2 个回答

  • Riven.
    Riven.
    2022-05-23

    问题已复现,我们会在后续版本中进行修复。

    2022-05-23
    有用
    回复 1
    • 陆家骏
      陆家骏
      2022-06-14
      这几天IOS更诡异,声音怪异、混乱、不响。偶尔发现把声音资源改成url资源后,正常了,连闪退问题也消失了
      2022-06-14
      回复
  • EorrvangS🐯
    EorrvangS🐯
    2022-05-19

    同遇到一样的问题,现在发现ios必闪退

    2022-05-19
    有用
    回复 2
    • 陆家骏
      陆家骏
      2022-06-14
      这几天IOS更诡异,声音混乱、不响。偶尔发现把声音资源改成url资源后,闪退问题消失
      2022-06-14
      回复
    • 聊斋之彼岸如梦
      聊斋之彼岸如梦
      2022-07-24回复陆家骏
      兄弟,你救了我,太NM坑爹了,微信
      2022-07-24
      回复
登录 后发表内容