如何从接收的UDP数据包中在浏览器中播放实时音频?

问题描述 投票:0回答:1

我有一个节点js服务器,它通过UDP接收BufferArray,一旦接收到数据包,socket.io就会执行下一个将BufferArray发送给客户端(Angular)的工作。

这是节点js服务器实现的示例代码:

  io.on("connection", () => {
  server.on("listening", () => {
    let address = server.address();
    console.log("server host", address.address);
    console.log("server port", address.port);
  });

  server.on("message", function (message, remote) {
    arrayBuffer = message.slice(28);
    io.emit("audio", buffer); // // console.log(`Received packet: ${remote.address}:${remote.port}`)
  });
  server.bind(PORT, HOST);
});

在客户端,我从接收到的BufferArray创建了一个blob对象,然后创建了一个URL对象,将其传递给音频元素src。

 socket.on('audio', (audio) => {
      this.startAudio(audio);     
    });

      private startAudio(audio) {

    const blob = new Blob([audio], { type: "audio/wav" });

    var audioElement = document.createElement('audio');
    // // console.log('blob', blob);
    var url = window.URL.createObjectURL(blob);
    // // console.log('url', url);
    audioElement.src = url;
    audioElement.play();
  }

但是,由于未播放音频,所以我似乎做错了!

所以,我很想知道在浏览器中播放实时音频流的正确过程。

javascript angular socket.io html5-audio audio-streaming
1个回答
0
投票

我可以使用FFmpeg在浏览器中播放实时音频,这是答案的link

© www.soinside.com 2019 - 2024. All rights reserved.