微信小游戏ogg格式支持问题

cocos creator开发微信小游戏,音频最近遇到的坑,总结一下。

1、cocos creator打包微信端时,不会打包解码器。其他端可能会。

2、微信端的音频系统有两套,一套基于web audio开发的WebAudioContext,是一个功能相对完善的3D音频系统。另一套InnerAudioContext,功能很简陋的2D音频系统,类似cocos creator的音频系统。另外如果是基于微信开发者编辑器的项目,在微信开发者编辑器中可以组件化操作WebAudioContext。详见微信小游戏音频功能

3、WebAudioContext和InnerAudioContext的支持格式有些区别,WebAudioContext不支持ios端播放ogg。详见支持格式

4、cocos creator项目,打包成微信项目时,调用的是InnerAudioContext。

wx.createInnerAudioContext(
  {useWebAudioImplement: true}
);

*同时还会判断音频的时长,长音频时useWebAudioImplement为false,短音频为true。即短音频会走WebAudioContext的底层逻辑。因此ogg格式,ios微信端,长音频可以播出,短音频播不出。

尝试直接调用InnerAudioContext播一条ogg短音频(真机调试需要播网络文件,不能播本地文件)。将useWebAudioImplement设为false时,微信ios端调试能正常播出(或者不写这句,默认false也一样),设为true时播不出。确认无误。

*注:creator打包出的WECHATGAME文件夹里,没有在js文件中找到useWebAudioImplement等字样。不确定判断音频长短的逻辑是哪里加的。

5、解决1:换用mp3格式。mp3格式本来有无法无缝循环的问题。但经测试,微信双端都能无缝播出mp3,说明微信的解码器有经过优化,无需担心这个问题了,可以放心使用。但打包安卓、ios的app尚未测试,不确定mp3无缝循环行不行,不行再换用ogg,理论上creator会把解码器一起打包。

6、解决2:弃用cocos creator的音频接口,直接调用InnerAudioContext并把useWebAudioImplement设为false(默认就是false,不写也可以)。会很麻烦,只能在微信端调试(且需要使用网络文件地址而非本地音频),其他端不能用。不推荐。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值