使用发布请求将audioBlob保存到服务器

时间:2019-07-08 17:39:10

标签: javascript html node.js getusermedia

我从中型教程中获得了以下代码,用于使用浏览器录制和播放音频,这是我第一次使用数据块和录制音频,如何将录制内容发布到运行Node.js的服务器上?

<html>
<head>
<title>AudioRecorder</title>
</head>
<body>
  <script>
    const recordAudio = () =>
      new Promise(async resolve => {
        const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
        const mediaRecorder = new MediaRecorder(stream);
        const audioChunks = [];

        mediaRecorder.addEventListener("dataavailable", event => {
          audioChunks.push(event.data);
        });

        const start = () => mediaRecorder.start();

        const stop = () =>
          new Promise(resolve => {
            mediaRecorder.addEventListener("stop", () => {
              const audioBlob = new Blob(audioChunks);
              const audioUrl = URL.createObjectURL(audioBlob);
              const audio = new Audio(audioUrl);
              const play = () => audio.play();
              resolve({ audioBlob, audioUrl, play });
            });

            mediaRecorder.stop();
          });

        resolve({ start, stop });
      });

    const sleep = time => new Promise(resolve => setTimeout(resolve, time));

    (async () => {
      const recorder = await recordAudio();
      recorder.start();
      await sleep(3000);
      const audio = await recorder.stop();
      audio.play();
    })();


    function saveToServer(){
        //post request to server to save audio file
    }
  </script>

<button id="saveToServer" onclick="saveToServer">SaveToServer</button>

</body>
</html>

0 个答案:

没有答案
相关问题