音乐小游戏音乐远程加载问题

微信小游戏,远程加载音乐loader.load(remoteUrl, function (err, music) {music.play();}
电脑上运行正常,加载完了才进回调。
微信上运行,秒进回调,音乐并没有加载结束,播放不了。等了几秒才播放,导致音乐节奏卡不上。
请问有人解决了吗,马上上线,求解答。

可以看看使用场景的 demo 吗

好的 午饭吃了做一个demo发上来

demo_MP3.rar (698.0 KB)
浏览器预览和微信开发者工具都是可以的,用微信扫码预览,就出现问题。回调直接就进去了,但是音乐还没有播放。

应该是微信上没有监听加载完成的事件,可以参考下这个修复看看

https://github.com/cocos-creator-packages/adapters/pull/227/files

修改的位置在

编辑器目录 /resources/adapters/common/engine3d/Loader.js

loadInnerAudioContext这个函数没有定义呀


好像是微信那边的问题?咱引擎这边能怎么处理一下不,不行的话我就准备下载到本地,再load了。但这不是最初设计的方式。

你看下 pr 里边定义了的,大概实现就是 loadInnerAudioContext 返回的音频,保证音频是 can play 的状态
不过之前遇到一些问题,就是并发加载太多 audio 的时候,有些回调会丢失,所以加了个超时的处理,超过 8 秒的加载就不等待 onCanplay 了

最好的当然是先 downloadFile 下载下来 ,再保存到本地,下次直接加载本地缓存是最快的

pr?我这打包报错这个没定义,全局搜也没搜到loadInnerAudioContext。版本creator3D1.1.1

不用 全局搜啊,我这里不就帮你定义了

https://github.com/cocos-creator-packages/adapters/pull/227/files

好的好的 sorry 我再试试

还是不行 微信那边好像安卓上远程加载音频直接就是给你canplay,边缓存边播放机制。估计cocos引擎这边没办法,微信那边的问题。我看微信开放平台也有很多人反映。

哦,如果是对音乐播放的时间点卡得比较严格的话,确实不应该使用流式播放,这种方式很依赖网络条件,
最好还是下载到本地稳一点

嗯 最后用微信的接口下载到本地,再播放的。引擎这边有提供下载文件到本地的接口吗,用微信的接口,以后发其他平台不通用。不是很舒服。

1.x 的加载方式 目前检测到 http 的 url 都会采用流式播放,我们在 3.0 里统一改成下载到本地再加载本地缓存了

1.x 的话,可能要暂时要先麻烦自己调用 微信的 downloadFile 接口了

微信小游戏下载ogg后,临时路径打印出来是oga格式,导致播放不放这个音乐。但其实是ogg格式,电脑上下载下来tempFilePath就是ogg。

微信图片_20210302130354

最后我使用的微信接口进行播放
image

看了下,后缀确实是错的,不过应该 不影响文件解析
我测试了下没问题,这是我的测试代码


wx.downloadFile({
  url: 'https://szkj.soonplay.cn/bg_level_1.ogg',
  success(res) {
    let audio = wx.createInnerAudioContext();
    audio.onCanplay(() => {
      console.log('onCanplay', res.tempFilePath);
      audio.play();
    });
    audio.onError(err => {
      console.log('onError', err, res.tempFilePath);
    });
    audio.src = res.tempFilePath;
  }
});

看报错应该是其他问题 ,不是 oga 后缀的原因

用微信的接口wx.createInnerAudioContext这样去播放是可以的,我现在就是这样做的。
但是ios上有问题没有声音,我还没调试ios。
截图那个报错是因为我之前使用的方法是,wx.downloadFile后,保存了tempFilePath,然后需要播放的时候cc.loader.load(tempFilePath),这种方式不知道有没有可能是因为oga后缀的原因,cocos load不能识别这是一个音频文件,导致报错music.play报错说music没有play这个方法。没有看底层不知道。
应该问题不大,谢谢这两天帮忙查看问题。

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。