我使用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标头
在将其发送到语音转文本API之前(API的需要)。
谢谢!
答案 0 :(得分:0)
如果没记错的话,苹果公司...愚蠢的政策又搞砸了, 问题是您不能做很多事情(例如设置录音机) 没有USER触发它们,
,因此您应该将记录器包装在click事件监听器中,
用户点击按钮,然后您的mic = new RecordRTCPromisesHandler(stream, {... etc
触发并开始录制。
检查此示例https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/audio-recording.html
此技巧在这里起作用
您的代码是否可以在Mac Safari中工作?