所以我想创建一个简单的程序,如使用UDP套接字协议的音乐流播放器。到目前为止,我可以读取mp3文件,将其分成几个字节,并将其连续发送到我的接收器(客户端)。我的问题是我想从服务器接收它时逐个播放mp3文件。任何人都可以告诉我如何做到这一点?我收到后试图播放该部分,但部分之间存在过渡。我想像spotify一样顺利播放。
注意:我不想接收所有部分,加入它们并播放它们。我想要的是在接收它时播放它。非常感谢你的帮助。我很感激
到目前为止我的代码:
我通过此代码
通过UDP发送了拆分文件with open('test.mp3', 'rb') as infile:
d = infile.read(65500)
while d :
time.sleep(1)
sent = sock.sendto(d, address)
d = infile.read(65500)
我通过此代码
收到拆分文件p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
channels=10,
rate=44100,
output=True)
data, server = (sock.recvfrom(65500))
while data != 'stop':
stream.write(data)
data, server = (sock.recvfrom(65500))
stream.stop_stream()
stream.close()
p.terminate()
我已经尝试过这段代码了,我发出了嗡嗡声。
另一种方法是:
while 1:
data, server = (sock.recvfrom(65500))
song = AudioSegment.from_file(io.BytesIO(data), format="mp3")
play(song) #with pydub
这段代码很有效,但是你知道我会分别播放每个部分,所以每个部分之间都有延迟,而且部分歌曲缺失