当前位置: 首页 > 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.dtcms.com/a/349850.html

相关文章:

  • 深入解析:为什么应该避免使用 atoi、atol 和 atof 函数
  • 集成算法概述与分类
  • 大数据毕业设计选题推荐-基于大数据的超市销售数据统计分析系统-Hadoop-Spark-数据可视化-BigData
  • 【opengl 实践】 windows下vscode配置遇到的问题
  • week4-[二维数组]幻方检测
  • 【Android】Activity和Fragment之间的通讯
  • 大型电动化工程机械设备智能施工试验场的网络设计方案
  • java基础(十五)计算机网络
  • 【栈 - LeetCode】739.每日温度
  • 深入理解JVM垃圾收集器:垃圾收集器
  • Vue3 + Golang Gin 实现客服实时聊天系统(WebSocket + Socket.IO 详解)
  • Maven、Spring Boot、Spring Cloud以及它们的相互关系
  • iptables 防火墙技术详解
  • 如何通过虚函数实现多态?
  • 文入门Ubuntu:从零到精通的Linux之旅
  • 数学建模-整数规划(IP)
  • FunASR语音识别框架流式识别模型切换
  • SpringBoot的条件装配原理
  • SpringBoot3集成Oauth2.1——10重启程序Token失效(RSA持久化)
  • Java项目-苍穹外卖_Day1
  • Visual Studio 2022调试Eigen库查看矩阵与向量的值
  • 大模型知识点之矩阵乘以向量
  • springboot:前后端调用(axios发送异步请求)
  • 那我现在有3个输入 9层神经元 每层神经元数为 3 9 3 5 6 2 3 9 8 请给出我所有的权重矩阵
  • 图论水题5
  • ansible的搭建与安装
  • BIO、NIO 和 AIO
  • 智慧城市SaaS平台/交通设施运行监测系统之桥梁运行监测、城市道路塌陷风险运行监测系统架构内容
  • v-slot 与 slot-scope区别
  • 开源零信任本地化部署实战指南:Keycloak + OpenZiti 完整方案