javascript - Safari ios 上录音为空

标签 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 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/

相关文章:

objective-c - 通知所有已加载的 ViewController 某个事件

javascript - 从 PhoneGap Camera API 返回时如何隐藏 iOS7 状态栏?

css - Safari 在 <img/> 周围显示灰色边框,即使图像存在

javascript - 不同数组上的map()结果不同

javascript - 我正在尝试在 C++ 上移植 1D perlin 噪声教程

Javascript:滚动到表格中的第 n 行?

safari - Safari 上的 IndexedDB 能保证持久吗?

javascript - 通过比较 2 个 JavaScript 数组生成表格数据

ios - NSFetchedController : Displaying Sections out of order

javascript - 使用主屏幕图标会破坏 iPhone 上的设备高度