使用 Socket Io 的音频流

问题描述

我正在开发一个项目,我可以将音频从服务器实时流式传输到 HTML 文件,我在客户端使用 flask_socketio 和 Socket io。我不确定它为什么起作用,这是我的代码server.py

from flask import Flask
from flask_socketio import SocketIO,send

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecret'
socketio = SocketIO(app,cors_allowed_origins='*')

with open("bensound-spinningcollins.wav","rb") as fwav:
    data = fwav.read(8)
    while data:
        data = fwav.read(8)
@socketio.on('message')
def handleMessage(msg):
    print('User has connected')
    while True:
        send(data)

if __name__ == '__main__':
    socketio.run(app)

这是我的客户端代码

<html>
<head>
<title>Chat Room</title>
<link rel="preconnect" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css2?family=Quicksand&display=swap" rel="stylesheet">
<script src="https://cdn.socket.io/3.1.1/socket.io.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script type="text/javascript">
var socket = io.connect('http://127.0.0.1:5000');
socket.on('connect',function() {
    socket.send('connect');
});

socket.on('message',function(msg) {
    audioObj = new Audio(msg);
    audioObj.play();

});

</script>
</body>
</html>

解决方法

没有足够的代表发表评论,很抱歉回复。

我认为您真正要寻找的是 WebRTC。

Socket.io 非常适合来回发送消息,但不太适合连续流式传输。

如果你只想在消息上播放声音,为什么不直接从 JS 访问音频?