2015-05-31 77 views
5

我正在爲我的流式應用程序創建中繼服務器。基本上,它應該工作是這樣的:通過插座如何橋接字節數組和音頻流?

  1. 客戶端A流麥克風音頻服務器
  2. Server中獲取流,也許其存儲臨時的地方(不知道)
  3. 客戶端B會從流服務器並播放它。

基本上,我有第1部分完成(發送麥克風音頻服務器):

while(isStreaming) 
{ 
    minBufSize = recorder.read(buffer, 0, buffer.length); 
    mSocket.emit("stream", Arrays.toString(buffer)); 
} 

,做,簡單地播放音頻第三部分:

mediaplayer.reset(); 
mediaplayer.setDataSource("http://192.168.1.2:1337/stream"); 
mediaplayer.prepare(); 
mediaplayer.start(); 

現在我不知道如何橋接傳入的字節數組和流式傳輸。這是我目前的服務器代碼:

var ms = require('mediaserver'); 
// from server to Client B 
exports.letsStream = function(req, res, next) { 
    ms.pipe(req, res, "sample_song_music_file.mp3"); 
}; 

// from Client A to server 
exports.handleSocketConnection = function(socket) 
{ 
    console.log("connected"); 
    socket.on('stream', function(data) 
    { 
     var bytes = JSON.parse(data); 
     console.log("GETTING STREAM:" + bytes); 
    }); 
} 

有什麼建議嗎?我怎樣才能直接流式傳輸字節數組?

+0

嗨,你有沒有找到解決辦法? –

+0

@BackPacker nah,很久以前就停止尋找它。 –

+0

好的,謝謝,我想我必須使用webrtc或類似 –

回答

0

mediaserver模塊僅支持流式傳輸現有音頻,而不是「現場」流。這不起作用。

一種方法來實現三個任務是:

  1. https://www.npmjs.com/package/microphone閱讀麥克風音頻作爲字節流。
  2. http://binaryjs.com/處理通過websockets傳輸字節流到服務器,然後發送到客戶端。如果您設置了兩個單獨的路徑,一個用於發送數據,一個用於接收。將數據從一個流發送到另一個流。
  3. 使用https://github.com/TooTallNate/node-speaker發揮在客戶端B中的進入PCM數據流
+0

但我已經有閱讀麥克風輸入部分完成。而且我不必使用'mediaserver'模塊。我希望有一個專門爲此而設的模塊。另外,第1部分和第2部分是android,而不是nodejs。 –