小程序对某些mp3格式不兼容,播放不了
发布于 6 年前 作者 elei 9971 次浏览 来自 问答
  • 当前 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

})

}

})

回到顶部