我使用 RecordRTC 来录制音频并将其发送到语音转文本 API。
不知何故,除了使用 Safari IOS 之外,一切都运行得很好。
使用 Safari IOS 时,我以 Base64 字符串形式检索录音,
不知何故从记录器对象返回空。
之前提出的有关它的问题已得到回答以使用另一个库,
然而 RecordRTC 的文档明确表示它完全支持 Safari IOS。
您能帮我找出问题并找到解决方法吗?
我的代码:
async initMic() {
let stream = await navigator.mediaDevices.getUserMedia({video: false, audio: true});
mic = new RecordRTCPromisesHandler(stream, {
type: 'audio',
mimeType: 'audio/wav',
recorderType: RecordRTC.StereoAudioRecorder,
sampleRate: 48000,
numberOfAudioChannels: 1,
});
},
async sendRecording() {
let vm = this;
mic.stopRecording(function() {
mic.getDataURL(function(dataURL) {
vm.$store.dispatch('UpdateAudioBase64', dataURL.replace('data:audio/wav;base64,', ''));
mic.reset();
vm.$emit('send-recording');
});
});
},
** 字符串“replace”函数旨在删除 base64 header
在将其发送到语音转文本 API 之前(API 的需要)。
谢谢!
最佳答案
如果没记错的话,苹果公司...又搞砸了他们愚蠢的政策, 问题是你不能做很多事情(比如设置录音机) 没有用户触发它们,
所以你应该将你的录音机包装在点击事件监听器中,
用户单击按钮,然后您的 mic = new RecordRTCPromisesHandler(stream, {... etc
火灾并开始录音。
检查这个例子https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/audio-recording.html
这个技巧在这里起作用
顺便说一句,你的代码可以在 mac safari 中运行吗?
关于javascript - Safari ios 上录音为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56091327/