Как транслировать файл .wav в websocket с Python3 (у меня есть рабочий пример Node) - PullRequest
0 голосов
/ 17 сентября 2018

Мне поручено преобразовать клиент из Node в Python для целей автоматизации. Я все сделал до сих пор, но я был в некотором роде заблокирован в связи с последним потоком файла wav в websocket.

Вот пример узла, который мне нужно преобразовать в python:

const startStreaming = () => {
        var fileStream = fs.createReadStream(filePath).pipe(soxTransform).pipe(wavTransform).pipe(slow.slowStream(delay))
        fileStream.on('data', (data) => {
            ws.send(data)
        })
        fileStream.on('end', () => {
            if (endStream) {
                ws.send(Buffer('\0'))
            } else {
                resolve("success")
            }
        })
    }

Я пробовал несколько вещей, моя главная мысль - использовать генератор или сделать что-то вроде этого:

def read_file(path): 
    data = open(path, 'rb')
    while data:
        sent = ws.send(data)
        if not sent:
            # The socket has disconnected if the send fails
            break
        data = data[sent:]
    ws.send(Buffer('\0'))
    ws.close()
ws.connect(host)
path = './audio.wav'
read_file(path)

Любое понимание помогло бы, мне никогда не приходилось иметь дело с потоковой передачей звука в python или узле, и даже когда я успешно отправляю аудио на сервер, когда я воспроизводю его на стороне сервера, это в основном просто случайное аудио.

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