收藏
回答

WeChatLib 2.31.0 AudioContext切换src,duration不变?

框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
小程序 Bug const InnerAudioContext = wx.createInnerAudioContext(); InnerAudioContext.duration 微信安卓客户端 8.0.34.2340 2.31.0
// 录音完成猴预览播放
// duration的取值是播放对象的duration ,当InnerAudioContext2.src替换后,InnerAudioContext2.duration 不会变还是如图的8秒,实际录音是2秒            

const InnerAudioContext2 = wx.createInnerAudioContext();
const recordManger = wx.getRecorderManager();

recordManger.onStop((res) => {
  this.tempRecordFilePath = res.tempFilePath;
  this.audioDuration = Math.round(res.duration);
  InnerAudioContext2.src = res.tempFilePath;
  this.recordDuration = parseInt(RECORD_DURATION - this.remainingTime);
});

this.send({
  type: 'VOICE_MSG',
  content: JSON.stringify({
    content: res.resourceName,
    duration: Math.floor(
      InnerAudioContext2.duration || this.audioDuration / 1000
    )
  })
});


以上代码片段实现的是:

1、录音完成后,预览播放并设置录音的duration

2、发送时优先读播放器的duration,如果没有值则读取录音对象的duration(录音对象duration一直有问题,多次pause的录音,duration不会听一直累加,所以用了播放器的duration)

3、这边执行完后打日志发现(忘记截图) 该灰度基础库2.31.0版本,大概率出现 InnerAudioContext.src修改后,InnerAudioContext.duration不会变的情况。影响目前我们的语音播放和进度条。

期望处理方案

A、官方修复该问题:InnerAudioContext.src修改后,InnerAudioContext及时刷新,InnerAudioContext.duration返回新src路径文件的duration。

B、27日之后再全量2.31.0,我们26日发布回退代码,用回以前recordManger返回的duration。


2.31.0预计啥时候灰度,会修复该问题吗?@官方

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

1 个回答

  • 社区技术运营专员--阳光
    社区技术运营专员--阳光
    2023-04-24

    切换src后,duration不会马上变,因为加载新的src需要时间,可以用 InnerAudioContext.onCanplay 来监听加载好事件,加载好之后可以读 duration

    2023-04-24
    有用
    回复 3
    • Geefib
      Geefib
      2023-04-25
      好滴感谢
      2023-04-25
      回复
    • Geefib
      Geefib
      2023-04-25
      但是2.31.0的安卓上面特别明显
      2023-04-25
      回复
    • 吃货,别追
      吃货,别追
      03-15
      没有用的,我就是监听了oncanplay,获取到的还是上一个src
      03-15
      回复
登录 后发表内容