Python воспроизводит звук из буфера - PullRequest
0 голосов
/ 25 октября 2019

Я пытаюсь создать простое приложение для потоковой передачи музыки, используя 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 Ответ

0 голосов
/ 25 октября 2019

Сделать его многопоточным.

Поток 1 будет считывать данные из файла / сокета и помещать их в буфер.

Поток 2 читает данные из буфера и воспроизводить их наЗвуковое устройство.

Имейте механизм буфера пинг-понга, чтобы оба потока не были заблокированы.

пример:

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...