Safari iOS上的录音为空

时间:2019-05-11 14:40:04

标签: javascript ios safari recordrtc

我使用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的需要)。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果没记错的话,苹果公司...愚蠢的政策又搞砸了, 问题是您不能做很多事情(例如设置录音机) 没有USER触发它们,

,因此您应该将记录器包装在click事件监听器中, 用户点击按钮,然后您的mic = new RecordRTCPromisesHandler(stream, {... etc 触发并开始录制。

检查此示例https://github.com/muaz-khan/RecordRTC/blob/master/simple-demos/audio-recording.html

此技巧在这里起作用

您的代码是否可以在Mac Safari中工作?