javascript - 使用分块传输通过 HTTP POST 流式传输麦克风输出

标签 javascript android python http audio

我们正在尝试构建一个应用程序来向多个订阅者广播实时音频。服务器(用 go 编写)通过 block 接受 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 传输数据。

关于javascript - 使用分块传输通过 HTTP POST 流式传输麦克风输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42315846/

相关文章:

python - 在 openshift 上将 json 发布到 Flask 时出现 400 错误请求

javascript - 这种说法 `const types = ({ editor }: { editor: Editor }) => {}` 是什么意思?

javascript - 将鼠标悬停在父列表项上时更改链接颜色时的奇怪行为

php - JavaScript 正则表达式替换 HTML anchor

android - 阿拉伯数字显示不正确

java - Android - 外部存储的可用空间无法正确显示

python - 类型错误 : keys() takes no arguments (1 given)

javascript - $(document).ready 的替代品?

安卓工作室 : “new module -> import existing project” vs. “import module”

Python 柯里化(Currying)任意数量的变量