【发布时间】:2020-03-09 09:17:03
【问题描述】:
我在我的 React 项目中使用 audio-recorder-polyfill,以便为 Safari 录制音频。它似乎可以进行录制,但是没有可用的音频数据。 “dataavailable”事件永远不会被触发,停止记录后似乎也没有数据被“编译”。
recordFunc() {
navigator.mediaDevices.getUserMedia({ audio: true }).then(stream => {
recorder = new MediaRecorder(stream);
// Set record to <audio> when recording will be finished
recorder.addEventListener('dataavailable', e => {
this.audio.current.src = URL.createObjectURL(e.data);
})
// Start recording
recorder.start();
})
}
stopFunc() {
// Stop recording
recorder.stop();
// Remove “recording” icon from browser tab
recorder.stream.getTracks().forEach(i => i.stop());
}
【问题讨论】:
-
始终检查 caniuse。在这种情况下:caniuse.com/#search=dataavailable,因此可以肯定的是,这在 Safari/webkit 中完全不受支持,您将不得不说服 webkit 问题跟踪器上的人们,这甚至应该被处理
-
据说 polyfill 会增加对原生不支持它的浏览器的支持。但是最好知道它是否在支持它的浏览器中完全有效,或者它是否是 polyfill 的问题。
-
官方演示的polyfill在safari中无法正常工作(13.0.5) ai.github.io/audio-recorder-polyfill
-
您是否尝试将您的处理程序指定为
recorder.ondataavailable = ( e => { ... } );? -
你能再添加一些你的反应代码吗?也许是代码沙箱链接,问题可能出在其他地方。它是否适用于本机支持此功能的其他浏览器?
标签: javascript reactjs web-mediarecorder