ios webgl音频问题
问题描述:
使用audiosource播放音频。一个audiosource播放背景音;一个audiosource播放音效;一个audiosource播放语气
在android上没有问题。
但是在ios上遇到问题,声音一卡一卡的。
做了几个尝试:
1. 使用audiocontext播放,但是ios上丝毫未改变啥。而且在android上还报错。
2. 使用audio,在android上播放正常,ios不能不正常。
3. 使用wx.createinneraudiocontext,android正常,ios上直接卡死。
jslib的代码如下:
mergeInto(LibraryManager.library, {CallJS: function (){GameGlobal.TestCStoJS();},OpenMobuleGame: function (){GameGlobal.nfo.OpenMobuleGame();},// 播放背景音乐PlayBGMByJs: function (srcPtr) {var src = UTF8ToString(srcPtr);if (!window._bgmAudio) {window._bgmAudio = new Audio(src);} else {// 如果切换不同的背景音,替换 srcif (window._bgmAudio.src.indexOf(src) === -1) {window._bgmAudio.pause();window._bgmAudio = null;window._bgmAudio = new Audio(src);}}window._bgmAudio.loop = true;var playPromise = window._bgmAudio.play();if (playPromise !== undefined) {playPromise.catch(function (err) {console.warn("PlayBGM failed:", err);});}},// 停止背景音乐StopBGMByJs: function () {if (!window._bgmAudio) return;window._bgmAudio.pause();window._bgmAudio.currentTime = 0;},//刷新数据到IndexedDBSyncDB: function () {FS.syncfs(false, function (err) {if (err) console.log("syncfs error: " + err);});},// 初始化 AudioContext(用户交互后调用)AudioContext_Unlock: function() {if (!window._audioCtx) {window._audioCtx = new (window.AudioContext || window.webkitAudioContext)();}if (window._audioCtx.state === 'suspended') {window._audioCtx.resume().then(function() {console.log("AudioContext 已解锁");});}},// 播放音频:传入路径字符串(UTF8指针)AudioContext_Play: function(urlPtr) {var url = UTF8ToString(urlPtr);if (!window._audioCtx) {const AudioCtx = window.AudioContext || window.webkitAudioContext;window._audioCtx = new AudioCtx();}// 停止之前的音频if (window._bgmSource) {window._bgmSource.stop();window._bgmSource.disconnect();window._bgmSource = null;}fetch(url).then(function(res) { return res.arrayBuffer(); }).then(function(arrayBuffer) { return window._audioCtx.decodeAudioData(arrayBuffer); }).then(function(audioBuffer) {var source = window._audioCtx.createBufferSource();source.buffer = audioBuffer;source.loop = true;source.connect(window._audioCtx.destination);source.start(0);window._bgmSource = source;}).catch(function(err) {console.error("音频加载或播放失败", err);});},// 停止音频AudioContext_Stop: function() {if (window._bgmSource) {window._bgmSource.stop();window._bgmSource.disconnect();window._bgmSource = null;}}
})
不知道有啥好的解决方式。。。。