Javascript Mediarecorder:如何支持Safari上的音频录制,即11? 问题陈述

Javascript Mediarecorder:如何支持Safari上的音频录制,即11? 问题陈述,javascript,html,reactjs,redux,web-mediarecorder,Javascript,Html,Reactjs,Redux,Web Mediarecorder,您好,我想在我的应用程序中为IE 11和Safari添加对使用MediaRecorderAPI进行音频录制的支持,但到目前为止还没有找到任何支持。是否有polyfills可以帮助我在这些浏览器中添加对相同内容的支持 游猎: 我可以看到,Safari确实有MediaRecorderAPI在experimental功能下受支持,但即使这样,尽管提供了正确的mime类型audio/webm,它仍然会返回一个video/mp4mime类型的blob IE 11: 这是一块古老的垃圾,我只能说:) 代码:

您好,我想在我的应用程序中为IE 11Safari添加对使用
MediaRecorder
API进行音频录制的支持,但到目前为止还没有找到任何支持。是否有polyfills可以帮助我在这些浏览器中添加对相同内容的支持

游猎: 我可以看到,Safari确实有
MediaRecorder
API在experimental功能下受支持,但即使这样,尽管提供了正确的mime类型
audio/webm
,它仍然会返回一个
video/mp4
mime类型的blob

IE 11: 这是一块古老的垃圾,我只能说:)

代码: 注意:请不要要求放弃这些浏览器,因为它们是我的要求:)

Safari支持: 通过使用音频记录器Polyfill,我能够在Safari中添加对
MediaRecorder
API的支持。您可以检查此NPM包

步骤(反应JS):
  • 使用npm i音频记录器polyfill安装软件包
  • public/index.html中添加这段代码。这将确保仅为不支持
    MediaRecorder
    API的浏览器加载polyfill
  • 如果您使用的是Typescript,则可能必须在src/audio recorder polyfill.d.ts
  • const stream = await navigator.mediaDevices.getUserMedia({
      audio: true,
      video: false,
    })
    
    
    const mimeType = 'audio/webm'
    
    // check if above mime type is supported in browser and instantiate recorder
    if (MediaRecorder.isTypeSupported(mimeType)) {
      this.recorder = new MediaRecorder(this.stream, { mimeType })
    } else {
      this.recorder = new MediaRecorder(this.stream)
    }
    
    recorder.start()
    
    <script>
      // load this bundle only for browsers without MediaRecorder support
      if (!window.MediaRecorder) {
        document.write(
          decodeURI('%3Cscript defer src="/polyfill.js">%3C/script>')
        )
      }
    </script>
    
    import AudioRecorder from 'audio-recorder-polyfill'
    window.MediaRecorder = AudioRecorder
    
    declare module 'audio-recorder-polyfill'