【问题标题】:Python play sound from a bufferPython 从缓冲区播放声音
【发布时间】:2019-10-25 04:09:09
【问题描述】:

我正在尝试使用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()

这样做的正确方法是什么?

【问题讨论】:

    标签: python sockets audio


    【解决方案1】:

    使其成为多线程。

    线程 1 将从文件/套接字中读取数据并将它们放入缓冲区中。

    线程 2 从缓冲区中读取数据并将其播放到声音设备。

    有一个乒乓缓冲机制,这样两个线程都不会被阻塞。

    示例:

    https://embedded.fm/blog/2017/3/21/ping-pong-buffers

    https://overlay.technology/ping-pong-buffer-to-embedded-systems/

    【讨论】:

    • 你能举个例子吗?我不知道乒乓缓冲区是什么。
    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-31
    • 1970-01-01
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多