我有一个节点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();
}
但是,由于未播放音频,所以我似乎做错了!
所以,我很想知道在浏览器中播放实时音频流的正确过程。
您是否考虑过类似的其他传输内容的方法?喜欢RTSP吗?签出enter link description here