【问题标题】:Audio recording is empty on safari iossafari ios 上的录音是空的
【发布时间】:2019-05-11 14:40:03
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: javascript ios safari recordrtc


    【解决方案1】:

    如果没记错的话,apple fu……又搞砸了他们愚蠢的政策, 问题是你不能做很多事情(比如设置录音机) 没有 USER 触发它们,

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

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

    这招奏效了

    顺便说一句,您的代码在 mac safari 中工作?

    【讨论】:

      猜你喜欢
      • 2019-01-04
      • 1970-01-01
      • 2012-07-13
      • 2019-10-19
      • 2014-09-02
      • 2019-07-27
      • 2012-06-14
      • 2014-04-01
      • 2011-10-12
      相关资源
      最近更新 更多