- 当前 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
})
}
})