当前位置: 首页 > news >正文

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;}}
})

不知道有啥好的解决方式。。。。

http://www.xdnf.cn/news/1362709.html

相关文章:

  • 设置密钥连接服务器
  • Charles安装到使用全流程教程
  • Gemini 2.5 Flash-Lite 与 GPT-5-mini:高性能低成本模型,如何选择?
  • 第十七节:高级材质 - ShaderMaterial揭秘
  • 物联网时序数据库IoTDB架构解析
  • h5和微信小程序查看pdf文件
  • DrissionPage 能控制火狐或edge吗
  • 20.14 QLoRA微调Whisper-Large-v2终极指南:3倍速训练+显存直降68%调参秘籍
  • ADB 调试工具的学习[特殊字符]
  • 【智慧城市】2025年中国地质大学(武汉)暑期实训优秀作品(2):智慧城市西安与一带一路
  • 技术速递|使用 AI 应用模板扩展创建一个 .NET AI 应用与自定义数据进行对话
  • 通过C#上位机串口写入和读取浮点数到stm32实战5(通过串口读取bmp280气压计的数值并在上位机显示)
  • .NET表格控件Spread .NET v18.0——支持富文本、增强PDF导出
  • 算法学习8.25
  • 如何生成雪碧图和 WEBVTT
  • Elasticsearch脑裂紧急处理与预防
  • [React]Antd Upload组件上传多个文件
  • 微服务商城构筑其一
  • VIVO/OPPO手机,显示5G开关
  • 【Wrangler(Cloudflare 的官方 CLI)和 npm/npx 的区别一次讲清】
  • 大模型面试题剖析:Pre-Norm与Post-Norm的对比及当代大模型选择Pre-Norm的原因
  • openharmony之DRM开发:数字知识产权保护揭秘
  • ESP8266学习
  • 迁移面试题
  • 将跨平台框架或游戏引擎开发的 macOS 应用上架 Mac App Store
  • Docker基本使用方法和常用命令
  • 8851定期复盘代码实现设计模式的于芬应用
  • 从2D序列帧到3D体积感:我用AE+UE5 Niagara构建次世代风格化VFX工作流
  • TDengine IDMP 应用场景:IT 系统监控
  • Ubuntu 14.10 i386桌面版安装教程(U盘启动详细步骤-附安装包下载)​