小程序对某些mp3格式不兼容,播放不了
- 当前 Bug 的表现(可附上截图) 推测:小程序对某些mp3格式不兼容,这些语音都是通过tts工具自动生成的 - 预期表现 电脑或手机浏览器能播放的mp3,在小程序上也应该可以播放 - 复现路径 1:新建一个小程序工程,选择建立普通快速启动模板。 2:按照下面的修改index.js代码。 在电脑上可以听到声音。 3:将程序传到网上,在手机上听不到声音。 在手机上,打开这个链接:http://hz.runzhichina.com/audio/word/10025.mp3,可以听到声音。 4:将index: 修改成 10026,再执行step1-step3,在手机上可以听到声音。 推测:小程序对某些mp3格式不兼容 - 提供一个最简复现 Demo //获取应用实例 const app = getApp() const innerAudioContext = wx.createInnerAudioContext(); Page({ data: { motto: 'Hello World', userInfo: {}, hasUserInfo: false, index: 10025, canIUse: wx.canIUse('button.open-type.getUserInfo') }, //事件处理函数 bindViewTap: function() { wx.navigateTo({ url: '../logs/logs' }) }, onLoad: function () { var path = "http://hz.runzhichina.com/audio/word/" + this.data.index + ".mp3" innerAudioContext.src = path; innerAudioContext.play(); //这个必须要加上,不然会出现错误 if (app.globalData.userInfo) { this.setData({ userInfo: app.globalData.userInfo, hasUserInfo: true }) } else if (this.data.canIUse){ // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回 // 所以此处加入 callback 以防止这种情况 app.userInfoReadyCallback = res => { this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } } else { // 在没有 open-type=getUserInfo 版本的兼容处理 wx.getUserInfo({ success: res => { app.globalData.userInfo = res.userInfo this.setData({ userInfo: res.userInfo, hasUserInfo: true }) } }) } }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { innerAudioContext.stop(); console.log("onHide=============") }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { innerAudioContext.stop(); console.log("onUnload=============") }, go(res) { var newIndex = this.data.index + 1; var path = "http://hz.runzhichina.com/audio/word/" + newIndex + ".mp3" innerAudioContext.src = path; innerAudioContext.play(); //这个必须要加上,不然会出现错误 this.setData({ index: newIndex }) }, getUserInfo: function(e) { console.log(e) app.globalData.userInfo = e.detail.userInfo this.setData({ userInfo: e.detail.userInfo, hasUserInfo: true }) } })