Мы пытаемся создать приложение для трансляции живого аудио для нескольких подписчиков. Сервер (написанный в режиме go) принимает данные pcm через куски, а клиент, использующий pyaudio, может подключиться к микрофону и отправить эти данные, используя приведенный ниже код. Мы протестировали это, и оно работает. Звук воспроизводится из любого браузера с URL-адресом абонента.Потоковая передача микрофона через HTTP POST с использованием передачи с чередованием
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, чтобы сделать то же самое, что и выше. Мы можем извлекать звук из микрофона с помощью API getUserMedia в браузере, но не можем отправлять этот звук на сервер, как это делает выше код python. Может кто-то пролить свет в правильном направлении?