[英]Python play sound from a buffer
我正在嘗試使用socket
制作簡單的音樂流媒體應用程序,以便客戶端請求歌曲,服務器從文件中讀取歌曲並將其部分發送給客戶端播放。 我想要一種將零件放入緩沖區的方法,以便我可以繼續播放它。 我正在使用sounddevice
庫來播放聲音。 問題是如果我一個接一個地演奏這些部分,它們聽起來就壞了。 這是我的代碼:
import socket
import soundfile as sf
import sounddevice as sd
data, samplerate = sf.read('audio.wav')
sd.play(data[:100000], samplerate)
sd.wait()
sd.play(data[100000:200000], samplerate)
sd.wait()
這樣做的正確方法是什么?
使其成為多線程。
線程 1 將從文件/套接字中讀取數據並將它們放入緩沖區中。
線程 2 從緩沖區讀取數據並將其播放到聲音設備。
有一個乒乓緩沖機制,這樣兩個線程都不會被阻塞。
例子:
https://embedded.fm/blog/2017/3/21/ping-pong-buffers
https://overlay.technology/ping-pong-buffer-to-embedded-systems/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.