61

これは、直接的な「これを行う方法」というよりも、概念的な質問です。

HTML5およびnodeJS/binaryJSでオーディオをストリーミングするためのフラッシュのようなソリューションを実装することは一般的に可能ですか(webRTCなどのストリームデータをどこから取得するかに関係なく)。もしそうなら、あなたはこれについてどうしますか?

ここと2010年以降のstackoverflowに関する問い合わせは1つだけです。それ以来、NodeJSとHTML5は成長し、成熟してきました。

人々が通常行うこと:サーバーへのマルチメディアストリーミング(つまり、ビデオまたはオーディオ)を使用する場合、 getUserMedia() が完全に到着するまで、現時点でFlashに勝るものはありません-正直なところ、99まで時間がかかる可能性がありますブラウザユーザーの%はそれをまったく使用するようになります。

サーバーにデータをストリーミングする一般的な方法は、クライアントのFlashまたはFlexアプリケーションを使用して、 RED5FMSWowzaなどの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(おそらくsocketIObinaryJSを実装している)で 実行されているアプリサーバーを用意します。何かのようなもの

//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(一種の奇妙な名前)に 注意を向けるために私にメールを送ってくれました。誰かがこの種のパッケージで作業していますか?

4

4 に答える 4

2

はい、可能ですが、いくつか問題があります。

1) Red5 はひどく文書化されておらず、バグがあります。

2) rtmpe/rtmps

3) パフォーマンス/スケーラビリティ

4) 1 から 3 までは克服できるものですが、メディア配信とそれに関連するすべての問題を非常に詳しく知る必要があります。あなたが完了するまでに、あなたはそれを本当に理解している800人ほどの人々の1人になるでしょう. 予期しない問題を解決するには、長い道のりをたどらなければなりません。

于 2013-04-13T13:31:56.440 に答える
1

現在、ポリゴット開発が可能なvertxというプラットフォームが利用可能です。そのため、red5 jar を既存のコードとともにサーバー側に含めることができ、rtmp ストリーミング サーバーを実行できます。クライアント側では、video.js や JW プレーヤーなどを使用してストリームを再生し、フラッシュ フォールバック ポリシーを設定できます。クライアント側のパブリッシングでは、利用可能な JavaScript ベースの RTMP 実装があるかどうかはわかりません。

于 2013-12-31T12:15:35.617 に答える