收藏
回答

小程序base64的mp3音频文件怎么播放?

小程序base64的mp3音频文件怎么播放?

const innerAudioContext = wx.createInnerAudioContext();

innerAudioContext.src ='data:audio/mp3;base64,'+ 请求获取的base64编码的mp3格式文件;

innerAudioContext.play();

结果:播放不出来

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

4 个回答

  • 雨肖
    雨肖
    01-19

    完美解决了,使用getFileSystemManager、writeFile 将base64音频转为临时mp3文件地址(encoding: 'base64'),再使用getBackgroundAudioManager播放音频即可,可以跨页面播放

    注:使用audio组件会存在兼容问题,部分手机播放不了,也无法跨页面播放音频

    const backgroundAudioManager = wx.getBackgroundAudioManager()
    const audioPath = wx.env.USER_DATA_PATH + '/ordernew.mp3'
    const fs = wx.getFileSystemManager();
    fs.writeFile({
      filePath: audioPath,
      data: item,
      encoding: 'base64',
      success(res) {
        backgroundAudioManager.title = '您有新的订单!'
        backgroundAudioManager.src = audioPath
      },
    })
    
    01-19
    有用
    回复
  • 徐俊
    徐俊
    01-04

    请问楼主有解决方案了吗

    01-04
    有用
    回复 1
    • 祭夏
      祭夏
      01-09
      哥们你解决了嘛
      01-09
      回复
  • 那只知更鸟
    那只知更鸟
    2023-10-27

    目前来说,小程序无法播放,放弃吧。

    2023-10-27
    有用
    回复 2
    • 雨肖
      雨肖
      01-19
      可以的,保存为临时mp3/wav地址就行了
      01-19
      回复
    • 那只知更鸟
      那只知更鸟
      01-22回复雨肖
      牛p plus 还能这样 学到了
      01-22
      回复
  • CRMEB
    CRMEB
    2023-10-23

    请确保已经获得了访问网络和播放音频的权限。可以在app.json文件中添加以下配置:

    {
      "permission": {
        "scope.userLocation": {
          "desc": "你的位置信息将用于小程序位置相关的功能"
        },
        "scope.recordAudio": {
          "desc": "你的录音信息将用于小程序录音相关的功能"
        }
      }
    }  
    

    然后在需要使用这些权限的地方调用wx.authorize({scope: 'scope.userLocation'})wx.authorize({scope: 'scope.recordAudio'})进行授权。


    2023-10-23
    有用
    回复 2
    • !
      2023-10-23
      但是我的录音播放啥的都可以的,就是文字转语音后的base64格式的mp3文件播放不了
      2023-10-23
      回复
    • 苏公子
      苏公子
      04-25回复
      我的也是。后来找到什么解决方案了吗?
      04-25
      回复
登录 后发表内容