微信小游戏,远程加载音乐loader.load(remoteUrl, function (err, music) {music.play();}
电脑上运行正常,加载完了才进回调。
微信上运行,秒进回调,音乐并没有加载结束,播放不了。等了几秒才播放,导致音乐节奏卡不上。
请问有人解决了吗,马上上线,求解答。
可以看看使用场景的 demo 吗
好的 午饭吃了做一个demo发上来
应该是微信上没有监听加载完成的事件,可以参考下这个修复看看
https://github.com/cocos-creator-packages/adapters/pull/227/files
修改的位置在
编辑器目录 /resources/adapters/common/engine3d/Loader.js
loadInnerAudioContext这个函数没有定义呀
你看下 pr 里边定义了的,大概实现就是 loadInnerAudioContext 返回的音频,保证音频是 can play 的状态
不过之前遇到一些问题,就是并发加载太多 audio 的时候,有些回调会丢失,所以加了个超时的处理,超过 8 秒的加载就不等待 onCanplay 了
最好的当然是先 downloadFile 下载下来 ,再保存到本地,下次直接加载本地缓存是最快的
pr?我这打包报错这个没定义,全局搜也没搜到loadInnerAudioContext。版本creator3D1.1.1
好的好的 sorry 我再试试
还是不行 微信那边好像安卓上远程加载音频直接就是给你canplay,边缓存边播放机制。估计cocos引擎这边没办法,微信那边的问题。我看微信开放平台也有很多人反映。
哦,如果是对音乐播放的时间点卡得比较严格的话,确实不应该使用流式播放,这种方式很依赖网络条件,
最好还是下载到本地稳一点
嗯 最后用微信的接口下载到本地,再播放的。引擎这边有提供下载文件到本地的接口吗,用微信的接口,以后发其他平台不通用。不是很舒服。
1.x 的加载方式 目前检测到 http 的 url 都会采用流式播放,我们在 3.0 里统一改成下载到本地再加载本地缓存了
1.x 的话,可能要暂时要先麻烦自己调用 微信的 downloadFile 接口了
看了下,后缀确实是错的,不过应该 不影响文件解析
我测试了下没问题,这是我的测试代码
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天后自动关闭。不再允许新的回复。





