iPhone 14使用MediaRecorder无法正常录制音频的问题求助
iPhone 14 音频录制异常问题排查求助
我们的网站提供音频录制及回放功能,多年来兼容各类设备,但在iPhone 14上出现故障。搭建的测试应用在其他设备上运行正常,但在iPhone 14上仅首次录制可用,后续无法录制;若先触发其他AudioContext操作,首次录制也会失效。
具体现象
- 点击“new recording”,电平指示器动,触发data available回调;
- 点击“listen”可正常回放;
- 再次点击“new recording”,无电平变化,无数据上报;
- 点击“listen”无声音;
- 若先操作节拍器,首次录制也会失败。
原实现与尝试的修改
原录制方式使用已废弃的createMediaStreamSource()和createScriptProcessor()/createJavaScriptNode()方法,推测iPhone 14不再支持,于是改用MediaRecorder实现,核心代码如下:
const chunks = [] function onSuccess(stream) { mediaRecorder = new MediaRecorder(stream); mediaRecorder.ondataavailable = function (e) { chunks.push(e.data); } mediaRecorder.start(1000); } navigator.mediaDevices.getUserMedia({ audio: true }).then(onSuccess, onError);
求助内容
- 是否有人遇到iPhone 14录制音频的异常情况?
- 有哪些排查建议?
- 若您有iPhone 14,能否测试该应用并反馈结果?(正常录制时每秒会显示类似
data {"len":6784}的日志)
编辑
按照建议修改代码后可录制,但音量极低、存在丢包,且恢复AudioContext时卡顿严重,其他设备及浏览器无此问题。
编辑2
问题已明确为两点:一是废弃的createScriptProcessor不再可用,二是iOS 16.2已修复的系统Bug,需改用AudioWorklet实现。
内容的提问来源于stack exchange,提问作者Paulie
相关产品推荐
相关产品推荐

