簡體   English   中英

Python 從緩沖區播放聲音

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM