問題タブ [rtmfp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
flash - ビデオ ストリーム マルチキャストを使用する場合、Flash Player 10.x のプロトコルは Flash Player 11.x と互換性がありません
製品に swc プラグインを組み込んで、ライブ ビデオを受信者のグループにストリーミングしています。
プラグインは NetStream、NetGroup、および NetConnection オブジェクトを使用します。RTMFP セッションの処理に使用するサーバーは Influxis です。
1 つのクライアントがパブリッシャーとしてグループを作成し、ライブ ビデオをストリーミングします。彼のカメラは有効になっており、画面にもビデオが表示されます。他の人は彼のグループに接続し、ビデオを再生します。発行者と受信者の両方に対して、ピア アシスト ネットワークが有効になります。
プラグインは、すべての 10.x バージョン (10.1/10.2/10.3) でうまく機能しました。
ただし、Flash Player 11.x にアップグレードすると、動作しなくなりました。
- 11.x から 11.x が機能しません。
- 11.x で 10.x が動作しません。
10.x から 10.x のみが機能しています。
RTMFP プロトコルの処理に使用しているサーバーは Influxis.com で、同じ質問を送信しました。
最も奇妙な事実は、フラッシュ ビルダー 4.6 と 4.6 SDK を使用していることです。これは、フラッシュ プレーヤー 11.1 を対象としており、10.x フラッシュ プレーヤーでのみ動作します。
adobe - rtmfp (cirrus) グループのオンライン ユーザーのリストを表示するより良い方法
rtmfp (cirrus) グループのオンライン ユーザーのリストを表示するより良い方法は? たとえば、このプロジェクトではhttp://www.flashrealtime.com/simple-chat-p2p-netgroup-rtmfp/ .
初期登録は難しくありませんが(グループに入る時にrtmfp cirrusノード間でメッセージをやり取りするだけで簡単にできます)、登録済みのユーザーをどう監視するかが課題です。おそらく、巻雲群のすべてのピアのリストやその他の技術など、標準的なメカニズムがあるのでしょうか?
apache-flex - RTMFP直接ピアツーピア接続はWindowsXPで機能しますが、Windows7では機能しません
ここのプロジェクトで奇妙な問題が発生しています。NetConnectionをNetGroupと組み合わせて使用してWindowsXP上の2つのローカルAIRアプリケーション間の通信を開始すると、それらは常にNetGroupに正常に接続し、相互にネイバーとして検出します。ただし、Windows 7では、両方のアプリケーションが正常にNetConnectionに接続し、NetGroupはお互いをネイバーとして検出しません。
この問題を再現するために、2つのAIRアプリケーションを次に示します。
RTMFP1:
RTMFP2:
これらのアプリケーションは、Windows XPで問題なく相互に接続し、メッセージを送信できます。ただし、Windows7ではできません。
これがWindows7で機能しない理由と、それを機能させるために実行できる手順を知っている人はいますか?これが機能することは、私たちのプロジェクトにとって重要です。
追伸:アプリケーションがネイバーとしてお互いを検出するのに非常に長い時間(場合によっては最大15秒)かかる場合もあれば、すぐにお互いを検出する場合もあります。誰かがこの遅延を引き起こす可能性があるものを知っていますか?
rtmfp - rtmfp グループ内のすべての peerID を一覧表示します
現在 rtmfp グループに接続しているすべての peerID のリストを取得するにはどうすればよいですか? または、バリアントはグループ ID を取得しますが、サーバーに保存されます。sam groupspec.toString(); を使用してみました。ただし、このコマンドはサーバーとは異なる結果を返します。サーバー積雲。
actionscript-3 - ランダム マッチングに RTMFP のみを使用する (Adobe Cirrus)
シンプルなゲームでランダムなマッチメイキングを行う最良の方法を考え出そうとしています。
Adobe Cirrus を使用して netStreams を試している間、直接接続を簡単にセットアップし、データ、テキスト、ビデオ、サウンドをすべて Cirrus を使用して送信できます。シンプルな P2P 接続を確立するのは非常に簡単で、必要に応じて機能します。
しかし、私は本当に巻雲のみを使用してランダムなマッチメイキング機能を実装したいので、すべてが p2p を介して行われます...
同じグループ内のランダムなピアを取得するにはどうすればよいでしょうか...それはまだ他の誰かと直接接続していませんか?
いくつかのアイデア:
-オブジェクトのレプリケーションを使用できるのではないかと考えていました...そして、誰かがGroupSpecifierに接続すると、ローカルのpeerIDとそのステータスを持つこの共有配列に別のオブジェクトをプッシュできます。次に、ゲーム中に配列を変更するだけです。しかし、その人がウェブウィンドウを閉じただけでエントリが削除されるという保証はないのではないかと心配しています.
-nearID を含むグループに「投稿」することも考えました。他のピアは投稿を取得できます...そして、ゲームに参加していないピアは直接接続しようとします。次に、その側がそれらに接続します。したがって、両者は互いに直接接続されます。しかし、潜在的に何百人もの人々が「利用可能」であると...投稿を取得し...そして、彼ら全員が1人の人に接続しようとすると、問題が発生する可能性があると思います.
-また、sendToNearest を実行することも考えました...しかし、それは人々を一致させるための最良の方法ではないでしょうか...なぜなら、私が思うに、非常に多くの隣人しか持てないからです...グループに 1000 人がいた場合. 実際に隣人と見なされる少数のピアにしか接続できないでしょうか?その後、基本的には、同じ 5 ~ 10 人と一致するか、技術的には隣人と見なされます。
actionscript-3 - Flash SecurityDomain、P2P設定、および乗算swfs
私は2つのswfsを持っています:
- アプリケーションswf
- rtmfpレプリケーションテクノロジーを使用してデータをロードできるp2pクライアントswf(Cirrusサービスを介して)
主なアイデアは、特定のドメインに1つのp2pローダーを配置し、各ドメインの許可を何度も要求することなくp2pネットワークで機能できるようにすることです。たとえば、次のようになります。
- アプリケーション1(http://domain1.com/app.swf)|
- アプリケーション2(http://domain2.com/app.swf)| <-> p2pデータローダー(http://domainp2p.com/p2pcli.swf)
- アプリケーションN(http://domainN.com/app.swf)|
p2pクライアントはリクエストによってバイナリデータをロードします。コンテンツは本当に重要ではないと私は信じています。
したがって、次のクラス(app.swf)を使用してp2pclientswfをロードします
p2pclient自体(p2pcli.swf):
しかし、Flash Playerはセキュリティセッションを無視し、app.swfが属するドメインのポップアップ設定を保存しようとしているようですが、p2pcli.swfドメインのポップアップ設定は保存していません。なぜ?!
私はまったく同じコードを持っていますが、p2pcli.swfはローカル共有オブジェクトにデータを格納するswfに置き換えられ、すべてのdomain1-2-N.comがそれにアクセスできます。
何か案は?
私は知っている、私の英語はがらくたです:(
flash - RTMFP で操作された音声によるライブ ボイス チャット
Cumulusを使用してライブ RTMFP ボイス チャット アプリケーションを構築しています。基本的な音声転送は NetStreams を使用して非常に簡単に機能しますが、大きな問題が 1 つあります。
NetStream が送信するマイク データを操作する方法はないようです。また、リッスンしている NetStream が再生前に受信するデータを操作する方法もないようです。
しかし、これはまさに私たちが必要としているものです。通常のマイクで録音されたオーディオを転送したくはありませんが、最初にピッチングし、次に送信してから再生します。または、最初に送信し、次にピッチしてから再生します。しかし、オーディオ録音、Speex エンコーディング、Speex デコーディング、およびオーディオ再生全体が、NetStream クラス内に完全にカプセル化されているようです。
私たちが望むものを達成する唯一の方法 (そしてそれらすべてが NetStream を完全に削除する方法) のようです:
生のピッチ付きオーディオ データを送信します。それは機能しますが、もちろん送信するデータは大量であり、ローカル LAN テスト以外では十分な速度で動作しない可能性があります。
オーディオ データのピッチング、フラッシュ用の既存のエンコーダーを使用した ogg/mp3 への変換、送信、ogg/mp3 のデコード、および再生。しかし、これは、マイクから受信したすべてのサンプル パケットをエンコードし、ヘッダーを追加することなどを意味します。そのため、生のオーディオ データと比較してそれほど多くの利点は得られない可能性があります。
2.1. フラッシュ用のSpeexエンコーダー/デコーダーがあれば、これは実際には良い方法です。しかし皮肉なことに、明示的に使用できない組み込みのもの (NetStreams でオーディオのエンコード/デコードに使用されるもの) 以外にはありません。ええ、アドビ、提供してくれないことに感謝します...
データを Cumulus サーバーに送信し、そこで提案 (およびおそらく変換) して、受信者に送信します。これは 1. よりもはるかに高速ではない可能性が高く、RTMFP、P2P 通信の正確な利点も捨ててしまいます。
ここにリストしたものよりもうまく機能するこの問題の解決策はありますか? NetStream に渡される前にマイク データを実際に操作する方法はありますか?
actionscript-3 - NetGroup.postToAllNeighborsは何もしません
ボイスチャットを実装するためのRTMFPサーバーとしてCumulusサーバーを使用しています。NetStreamsを使用した音声ストリーミングは、ここではほとんど遅延なく完全に正常に機能しますが、NetGroupの各メンバーのマイクのアクティビティレベルも転送する必要があります。
そこで、NetGroup.post(data)を使用してデータを転送してみました。これはうまく機能しましたが、同じマシンで複数のクライアントを使用してテストした場合でも、最大500ミリ秒の遅延がありました。
明らかに、マイクアクティビティの0.5秒は、なんらかの方法で表示するのにかなりの遅延が発生します。
現在、NetGroup.sendToAllNeighbors(で直接ルーティングを使用しようとしていますが、何も実行されません。すべてのドキュメントを読みました。通常、「NetGroup.SendTo.Notify」を含むNetGroupステータスイベントが受信クライアントでトリガーされます。代わりに、何も起こりません。
各フレームと呼ばれるコードは次のとおりです。
各フレームが少し多いことは知っていますが、今のところ、これは単なるテストケースです。
何が間違っているのですか?私が言ったように、音声通信自体はうまく機能します。Netgroup.post(data)も同様ですが、これは遅すぎてこのユースケースには使用できません。
actionscript-3 - NetStream.send が RTMFP の NetGroup で機能しない
ライブの音声およびテキスト チャットを行うために、Cumulusサーバーを実行しています。
設定は、各クライアントが group.post() を介して同じ NetGroup 内の他の各クライアントにデータを投稿できることです。残念ながら、この関数は非常に遅い (少なくとも 0.5 秒の遅延) ため、NetStream.send を使用して他のクライアントの関数を呼び出し、それを介してデータを渡すことに切り替えました。これはほぼ瞬時に機能します。
ただし、現在、別の NetGroup を使用して別のチャット ルームを構築しようとしています。しかし、そうすると、NetStream.send() が機能しなくなり、他のクライアントで関数が呼び出されなくなり、音声データが転送されなくなります。基本的に、NetStream のパブリッシング全体が機能していないようです。
各クライアントで NetGroup とパブリッシング ストリームを確立するための次のセットアップがあります。
次のコードは、「メディア」ストリームをリッスンするために使用されます。
NetGroup 接続自体は機能し、ネイバーが接続すると、各クライアントで「NetGroup.Neighbor.Connect」が呼び出されます。しかし、_sendStream 自体は機能しません。データは受信されず、関数は呼び出されません。
パブリッシング NetStream が次のように構築されている場合に機能します。
ただし、NetStream が単一の NetGroup に送信することだけが必要であり、Adobe Documentationによると、コンストラクターでgspec.groupspecWithAuthorizations()を使用すると、まさにそれが許可されるはずです。
ここで何か不足していますか?
actionscript-3 - NetGroupメンバーを終了すると、Flashプラグインがクラッシュします
Cumulusサーバーを使用してRTMFPとのボイスチャットを作成しています。ユーザーは、同じNetGroupに参加することで相互に接続します。
サブスクライブされたNetStreamsのボイスチャットおよび通話機能はうまく機能します。
ただし、ユーザーがブラウザウィンドウを閉じると、同じNetGroup内のすべてのユーザーのFlashプラグインがクラッシュする場合があります。
エラーは報告されておらず、IDE(FlashDevelop)からFlashアプリケーションを起動してもクラッシュは発生しないようであるため、何が起こっているのかわかりません。私が知っているのは、ユーザーがFlashアプリケーションを終了する(ブラウザウィンドウ/アプリを閉じる)ときに発生することがあるということだけです。
これは、NetGroupへの接続が確立され、オーディオ公開ストリームが公開される方法です(Cumulusサーバーへの接続が確立された後)。
これは、公開をリッスンする受信NetStreamが作成される方法です(ネイバーが接続するときはいつでも):
何が原因でしょうか?隣人が切断したことが通知されたときに、おそらく何か特別なことをする必要がありますか?クラッシュが何らかの通知の前に発生したのか、その後に発生したのかさえわかりません...