我知道您可以使用 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();
};
})();
};