2017-02-18 17 views
2

Мы пытаемся создать приложение для трансляции живого аудио для нескольких подписчиков. Сервер (написанный в режиме 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. Может кто-то пролить свет в правильном направлении?

ответ

0

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