2017-02-18 47 views
2

我們正在嘗試構建一個應用程序來向多個訂戶廣播現場音頻。服務器(寫入)通過塊接受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客戶端來完成與上述客戶端相同的功能。我們可以使用瀏覽器上的getUserMedia API從麥克風獲取音頻,但無法像上面的Python代碼那樣將此音頻發送到服務器。有人可以向正確的方向投射一些光線嗎?

回答

0

現在大概有一年了,所以我相信你已經走過了,但我認爲從瀏覽器使用的方法是通過WebSocket而不是通過HTTP流式傳輸數據。