這更多的是一個概念性問題,而不是直接的「如何做到這一點」。通過RTMP的NodeJS和RED 5媒體服務器
在HTML5和nodeJS/binaryJS中,通常可以實現類似Flash的解決方案來流式傳輸音頻(獨立於從哪裏獲取流數據,例如webRTC或其他)。如果是這樣,你會怎麼做呢?
對於stackoverflow found here及其2010年以來只有一個查詢。此後,NodeJS和HTML5一直在發展和成熟。
人們通常做: 使用多媒體流(即視頻或音頻)到服務器,肯定是有什麼,在當前點節拍閃光的時間,直到的getUserMedia()的全面到來 - 這坦白地說可能take a while直到99%的瀏覽器用戶都可以使用它。
一般的做法是流數據到該服務器是通過使用客戶端的Flash或Flex應用程序,然後將其連接到一個RTMP協議供電媒體服務器等RED5,FMS或Wowza。例如,客戶端應用程序發送通過RTMP麥克風輸入可能看起來像(簡化版本)
import flash.net.NetStream;
private var myMic:Microphone;
private var nc:NetConnection;
private var ns:NetStream
nc = new NetConnection();
ns = new NetStream(nc);
nc.connect(rtmp://localhost/serverApp);
myMic = Microphone.getMicrophone();
ns.attachAudio(myMic);
連同一個服務器應用程序之一是easibly能夠數據流給服務器。
我想這樣做: 有一個應用程序服務器上,捕捉進入RTMP流nodeJS(可能實現socketIO和binaryJS)運行。類似於
//require
var rtmp = require('node-rtmp'),
var fs = require('fs');
//rtmp server address
var rtmpServer = 'rtmp://localhost';
//create a binary server listening that receives stream data
var RTMPServer = rtmp.RTMPServer();
var server = RTMPServer ({port: 1935});
server.on('connection', function(client){
//check if user is allowed to do so
rtmp.newStream(client.stream);
});
可能使用socketIO來區分用戶通過eventEmitters進行交互可能會更好。
可能有哪些優勢:一般來說,製作這種方法似乎有點花費,但對我來說可能有優勢,我也希望你對此發表評論。
- 通過運行例如用戶交互的簡單驗證。 express和socketIO
- 混合實現(經由RTMP)和getUserMedia()(通過加入binaryJS和Mozilla AudioAPI二進制傳輸機制)
- 如果getUserMedia()得到完全支持,閃存實現可以容易地丟棄 閃存的
- 超過一般
- 更容易實現到服務器的RTMP隨訪和用戶交互更控制框架
UPDATE: 我有好好的談d給Malcontenti-Wilson先生,他負責編寫的only node-rtmp package,但在8個月前停刊,因爲寫得不好,而且他遇到了障礙。任何使用過這個或能夠檢查代碼的人?
更新2: Malcontenti威爾遜先生只是給我發郵件,讓我注意node-mtrude(一種奇怪的名字),這是做什麼樣的,我們可能會想。有沒有人使用這種包裝?
非常好的問題。對的,這是可能的。在那裏有幾個RTMP Node.js項目。我沒有親自使用過,所以我不能提供一個好的建議。 – Brad
我建議您爲rtmpDump(http://rtmpdump.mplayerhq.hu)庫編寫C擴展綁定,如此處所述https://www.cloudkick.com/blog/2010/aug/23/writing- nodejs-native-extensions/ –
我真的不知道關於node.js的任何信息,但[bigbluebutton](https://code.google.com/p/bigbluebutton/)在flash中實現了這樣的功能,並且它們正在工作在html 5解決方案上。檢查代碼可能是值得的。 – ldrumm