q***@163.com
q***@163.com
  • 发布:2019-05-14 15:18
  • 更新:2019-05-18 15:40
  • 阅读:3814

【报Bug】音频组件播放问题

分类:uni-app

详细问题描述

计算机系统:win10
hx版本:1.9.4.20190426
APP运行手机:iOS12.2版本

在自定义基座中,自定义组件模式,真机运行。APP中有一个聊天模块,调用录音组件录音之后,调用音频组件播放录音。声音能正常听到,但是声音播放结束之后,会出现错误日志。具体日志如下:
15:08:21.799 [ERROR] : appServiceSDKScriptError
15:08:21.799 undefined is not an object (evaluating 'n.src');at api onAudioStateChange callback function
15:08:21.799 getAudioState@app-service.js:3:75555
15:08:21.799 Un@app-service.js:3:77415
15:08:21.799 app-service.js:4:844
15:08:21.799 invoke@app-service.js:4:889
15:08:21.799 invoke@app-service.js:4:105643
15:08:21.799 X@app-service.js:4:163217
15:08:21.799 app-service.js:4:170670
15:08:21.799 hc@app-service.js:4:310445
15:08:21.799 app-service.js:4:311579
15:08:21.799 app-service.js:4:164893
15:08:21.799 subscribeHandler@app-service.js:4:1563
15:08:21.799 P@app-service.js:3:5118
15:08:21.799 callbackFromNative
15:08:21.799 nativeEval
15:08:21.799 global code

播放完之后,如果此时我重新运行一次项目的话,再点击刚才的语音播放(因为我的聊天消息有在本地缓存),会出现如下错误:
在音频组件的onError事件里,errMsg:MediaError; errCode:-4
通过日志记录,两次播放的音频地址是一模一样的,所以可以排除是音频文件错误的原因。

下面贴出我播放语音的代码:
//播放语音
function playvoice(o) {
const _src = o.file || o.localurl || o.mediaUrl;
audioContext && audioContext.destroy() && (audioContext = null);
audioContext = uni.createInnerAudioContext();
audioContext.src = _src;
_debug('播放音频的地址为:' + _src);
audioContext.onEnded(function() {
o.action = "voiceplaystop";
_postMessage(o);
audioContext && audioContext.destroy() && (audioContext = null);
})
audioContext.onError((res) => {
console.log("audioContext error, msg:" + res.errMsg + "; errCode:" + res.errCode);
});
audioContext.play();
}

2019-05-14 15:18 负责人:无 分享
已邀请:

最佳回复

DCloud_uniAD_HDX

DCloud_uniAD_HDX

HBuilderX 1.9.7 已修复

q***@163.com

q***@163.com (作者)

补充一下:重新运行项目,播放语音,是不出声音的,onError事件返回的错误代码就是上文中的 -4 MediaError

DCloud_uniAD_HDX

DCloud_uniAD_HDX

不出声的问题是因为调用 audioContext.destroy() 出错了

audioContext.destroy() 实现有些问题,下版修复

q***@163.com

q***@163.com (作者)

那么,上面那个能出声音,也报错是什么情况

q***@163.com

q***@163.com (作者)

那么,上面那个能出声音,也报错是什么情况。

而且我刚安卓里面调试了一下,压根都不会有声音,而且onError里面报 errCode:-99

q***@163.com

q***@163.com (作者)

第一次发送语音可以播放。然后重新运行一下项目,就不能播放了。

audioContext error, msg:MediaError; errCode:-4

报这个错误,alpha1.9.7版本还是这样

q***@163.com

q***@163.com (作者)

项目第一次运行,录音是正常,播放也正常。然后将录音文件缓存起来。重新运行项目,点击播放,第一次正常。再点击一次就不正常。demo见附件。。。。。

  • DCloud_uniAD_HDX

    录音保存为临时文件会清理,如需再次播放需要手动保存


    2019-05-17 18:50

q***@163.com

q***@163.com (作者)

什么时候清理呢,我的demo你有没有调试。你手机真机运行一下。然后录音,播放,没有问题。然后把APP进程结束掉,重新点进APP,然后直接播放语音,前面一两次可能也是正常播放,多点几次就不行了。没有道理我点两次播放就给我删除了吧。

q***@163.com

q***@163.com (作者)

那么我在APP里面调用uni.chooseImage选择照片,返回的路径如果我没有手动保存,也会被清理嘛。

手动保存是调用uni.saveFile接口嘛。返回的保存路径要不要做处理。

该问题目前已经被锁定, 无法添加新回复