繁体   English   中英

使用分块传输通过HTTP POST流化麦克风输出

[英]Streaming the Microphone output via HTTP POST using chunked transfer

我们正在尝试构建一个向多个订户广播实时音频的应用程序。 服务器(用go编写)通过块接受pcm数据,并且使用pyaudio的客户端能够使用麦克风并使用以下代码发送此数据。 我们已经对此进行了测试,并且可以正常工作。 音频可以从任何具有订户URL的浏览器中播放。

import pyaudio
import requests
import time


p = pyaudio.PyAudio()
# frames per buffer ?
CHUNK = 1024
# 16 bits per sample ?
FORMAT = pyaudio.paInt16
# 44.1k sampling rate ?
RATE = 44100
# number of channels
CHANNELS = 1

STREAM = p.open(
    format=FORMAT,
    channels=CHANNELS,
    rate=RATE,
    input=True,
    frames_per_buffer=CHUNK
)
print "initialized stream"


def get_chunks(stream):
    while True:
        try:
            chunk = stream.read(CHUNK,exception_on_overflow=False)
            yield chunk
        except IOError as ioe:
            print "error %s" % ioe

url = "https://<server-host>/stream/publish/<uuid>/"

s = requests.session()
s.headers.update({'Content-Type': "audio/x-wav;codec=pcm"})
resp = s.post(url, data=get_chunks(STREAM))

但是我们需要一个浏览器,iOS和Android客户端来执行与上述客户端相同的操作。 我们能够使用浏览器上的getUserMedia API从麦克风获取音频,但是无法像上面的python代码一样将音频发送到服务器。 有人可以朝正确的方向发光吗?

现在已经大约一岁了,所以我确定您已经继续前进,但是我认为从浏览器使用的方法是通过WebSocket而不是通过HTTP流数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM