欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > uni.createInnerAudioContext() 报错{“errMsg“:“MediaError“,“errCode“:-99}

uni.createInnerAudioContext() 报错{“errMsg“:“MediaError“,“errCode“:-99}

2025/2/22 2:06:49 来源:https://blog.csdn.net/kentturing/article/details/145706203  浏览:    关键词:uni.createInnerAudioContext() 报错{“errMsg“:“MediaError“,“errCode“:-99}

 报错原因:
uniapp的uni.createInnerAudioContext不支持直接播放base64音频文件,所以需要把base64音频转为本地音频文件再播放,缺点是转换会导致延迟,音频播放会有延迟
utils文件夹下新建tool.js文件

tool.js文件代码: 

export const base64ToFile = (base64Str, fileName, callback) => {var index = base64Str.indexOf(',');var base64Str = base64Str.slice(index + 1, base64Str.length);plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {fs.root.getFile(fileName, {create: true}, function(entry) {var fullPath = entry.fullPath;let platform = uni.getSystemInfoSync().platform;if (platform == 'android') {var Base64 = plus.android.importClass("android.util.Base64");var FileOutputStream = plus.android.importClass("java.io.FileOutputStream");try {var out = new FileOutputStream(fullPath);var bytes = Base64.decode(base64Str, Base64.DEFAULT);out.write(bytes);out.close();callback && callback(entry.toLocalURL());} catch (e) {console.log(e.message);}} else if (platform == 'ios') {var NSData = plus.ios.importClass('NSData');var nsData = new NSData();nsData = nsData.initWithBase64EncodedStringoptions(base64Str, 0);if (nsData) {nsData.plusCallMethod({writeToFile: fullPath,atomically: true});plus.ios.deleteObject(nsData);}callback && callback(entry.toLocalURL());}});});
}; 

在script下面导入 

<script>
import { base64ToFile } from "@/utils/tools.js";

 方法中使用:

      const base64Audio = uni.arrayBufferToBase64(response.data);const base64WithPrefix = `data:audio/mp3;base64,${base64Audio}`;// 使用 Promise 包装回调式的 base64ToFileconst filePath = await new Promise((resolve) => {const fileName = `${word}_${Date.now()}.mp3`;base64ToFile(base64WithPrefix, fileName, (path) => {resolve(path);});});

参考文献:
uniapp开发安卓和ios播放base64音频(mp3,wav都可以),或者处理其它类型的base64数据成为url_uniapp 播放base64-CSDN博客 uniapp能播放base64格式的音频吗? - DCloud问答

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词