是否可以使用 peer.send() 发送流畅的音频?

时间:2021-07-17 08:42:22

标签: javascript webrtc peerjs

我知道您可以使用 peer.call() 创建呼叫,但我希望有可能操纵媒体流,因此我想提取麦克风音频,将其转换为 base64(可以在其中进行操纵)并每秒多次使用 peer.send() 发送它。我目前的暗示导致可以理解(几乎)但非常断断续续的音频,带有回声。如果有帮助,这是我的代码

const audioLatency = 200;

async function startMicrophone() {
  const audioStream = await mediaDevices.getUserMedia({audio: true });
  const mediaRecorder = new MediaRecorder(audioStream);
  let chunks = [];
  mediaRecorder.ondataavailable = function(e) {
    chunks.push(e.data);
  };
  mediaRecorder.onstop = async function () {
    if (microphoneOn) {
      const audioSnapshotBlobCompressed = new Blob(chunks, {"type": "audio/ogg; codecs=opus"});
      const audioSnapshotCompressed = await blobToBase64(audioSnapshotBlobCompressed);
      for (let connection of connections) {
        connection.send([1, audioSnapshotCompressed]);
       };
     };
     chunks = [];
   };
  (async () => {
    while (true) {
      mediaRecorder.start();
      await setTimeoutSync(audioLatency);
      mediaRecorder.stop();
    };
  })();
};

0 个答案:

没有答案