【发布时间】:2017-11-04 01:11:12
【问题描述】:
我想通过 Flask 将麦克风的音频(通过 pyaudio 录制)流式传输到任何连接的客户端。
这是音频的来源:
def getSound(self):
# Current chunk of audio data
data = self.stream.read(self.CHUNK)
self.frames.append(data)
wave = self.save(list(self.frames))
return data
这是我的烧瓶代码:
@app.route('/audiofeed')
def audiofeed():
def gen(microphone):
while True:
sound = microphone.getSound()
#with open('tmp.wav', 'rb') as myfile:
# yield myfile.read()
yield sound
return Response(stream_with_context(gen(Microphone())))
这是客户端:
<audio controls>
<source src="{{ url_for('audiofeed') }}" type="audio/x-wav;codec=pcm">
Your browser does not support the audio element.
</audio>
它有时确实有效,但大多数时候我得到“[Errno 32] Broken pipe”
当使用 open("tmp.wav")-part 取消注释时(self.save() 可以选择获取所有先前的帧并将它们保存在 tmp.wav 中),我有点得到一个流,但是所有的出来扬声器的声音是“咔哒”声。
我愿意接受任何建议。如何将麦克风的输入实时流式传输(没有预先录制!)到网络浏览器?
谢谢!
【问题讨论】:
标签: python html audio flask pyaudio