これは、直接的な「これを行う方法」というよりも、概念的な質問です。
HTML5およびnodeJS/binaryJSでオーディオをストリーミングするためのフラッシュのようなソリューションを実装することは一般的に可能ですか(webRTCなどのストリームデータをどこから取得するかに関係なく)。もしそうなら、あなたはこれについてどうしますか?
ここと2010年以降のstackoverflowに関する問い合わせは1つだけです。それ以来、NodeJSとHTML5は成長し、成熟してきました。
人々が通常行うこと:サーバーへのマルチメディアストリーミング(つまり、ビデオまたはオーディオ)を使用する場合、 getUserMedia() が完全に到着するまで、現時点でFlashに勝るものはありません-正直なところ、99まで時間がかかる可能性がありますブラウザユーザーの%はそれをまったく使用するようになります。
サーバーにデータをストリーミングする一般的な方法は、クライアントのFlashまたはFlexアプリケーションを使用して、 RED5、FMS、WowzaなどのRTMPプロトコルを利用したメディアサーバーに接続することです。たとえば、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);
サーバーアプリケーションと一緒に、サーバーにデータを簡単にストリーミングできます。
私がしたいこと:着信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フォローアップとユーザーインタラクションのより詳細な制御
- サーバーフレームワークへのより簡単な実装
更新: 私は、書かれた唯一のnode-rtmpパッケージを担当しているMalcontenti-Wilson氏と話をしましたが、8か月前に書かれていなかったため、彼は障害にぶつかりました。これを使用した、またはコードを確認できた人はいますか?
更新2: Malcontenti-Wilson氏は、私たちがおそらく望んでいるようなことをしているnode-mtrude(一種の奇妙な名前)に 注意を向けるために私にメールを送ってくれました。誰かがこの種のパッケージで作業していますか?