問題タブ [rtcdatachannel]
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.
javascript - RTCDataChannel send() は同期/ブロッキング呼び出しですか?
RTCDataChannel.send()
WebRTC 経由でファイルをチャンクで送信しようとしていますが、ファイルの各チャンクの送信が終了した後に呼び出されるコールバック関数を作成できるかどうか疑問に思っています。
RTCDataChannel.send()
同期/ブロッキング呼び出しですか? もしそうなら、私のコールバックは の後の行で実行できます.send()
。
.send()
非同期/ノンブロッキングの場合、.send()
コールバック関数を受け入れないように見えるため、これは難しくなります。バッファとタイムアウトの使用は避けたいと思います。
javascript - Firefox RTCDataChannels が接続しない
Chrome と Firefox の間に RTCDataChannel 接続を作成しようとしています。
Mozilla が提供するサンプルを参照しました。
http://mozilla.github.io/webrtc-landing/data_test.html
DataChannel は createOffer メソッドの前に作成されましたが、Firefox では機能しませんが、Chrome では正常に機能します。
- 別の Chrome (アンサー) ブラウザーを使用した Chrome (オファーラー) DataChannel の確立は機能します。
- Chrome (offerer) Firefox (answerer) との DataChannel の確立が機能しません。
- 別の Firefox (アンサー) ブラウザーを使用した Firefox (オファーラー) DataChannel の確立が機能しません。
- Firefox (提供者) Chrome (回答者) とのデータ チャネルの確立が機能します。
Firefox DataChannel が Firefox で動作するための要件はありますか?
GetUserMedia は、DataChannel を作成する前に呼び出されます。
PS: よく調べた結果、SDP には m=application ポートまたはチャネルが開いていないことがわかりました。何が問題なのですか?
行がありません:
javascript - Firefox の WebRTC ICE 候補
現在、WebRTCで遊んでいます。私の目標は、2 つのブラウザー間でデータチャネルをセットアップすることです。Chrome-Chrome はうまく機能しています。今、私は Firefox-Firefox で遊んでいます。ここに私の現在のコードからの MEW があります:
が呼び出されるとすぐsetLocalDescription
に、関数onicecandidate
が呼び出されます (予想どおり)。Chrome 36 では、次のevent.icecandidate
ようなものです。
Firefoxevent.icecandidate
ではnull
. しかし、接続を確立するには、シグナリング チャネルを介してその ICE 候補を送信する必要があります。
javascript - WebRTC: 確立されたピア接続にアイス候補エラーを追加
私はwebRTCに取り組んでいます。ピア 1 とピア 2 の間にピア接続を作成し、その上にデータ チャネルを作成します。すべてがうまくいきます。
次に、この PeerConnection にビデオ ストリーム ベースを追加したいと考えています。この質問に従って、データチャネルでオファーと回答を送信します。しかし、氷の候補を送信すると、次のエラーが発生しました。
Failed to execute 'addIceCandidate' on 'RTCPeerConnection': The ICE candidate could not be added.
タスク シーケンスは次のとおりです。
- peer1 は peerconneciton を作成し、その上にデータチャネルを作成します
- peer1 オファーを作成し、ローカル セッションの説明を設定する
- peer1 は websocket 経由で peer2 にオファーを送信します
- peer2 は offer を受け取り、peerconnection を作成し、その上にデータチャネルを作成し、リモート セッションの説明を設定します
- peer2 は回答を作成し、ローカル セッションの説明を設定します
- peer2 は websocket 経由で peer1 に応答を送信します
- peer1 は回答を受け取り、リモート セッションの説明を設定します
次に、次のようにストリームを追加します。
- peer1 はローカル ユーザー メディアを取得し、それを peerconnection に追加します
- peer1 オファーを作成し、ローカル セッションの説明を設定する
- peer1 はデータチャネル経由で peer2 にオファーを送信します
- peer2 は、オファーを受け取り、リモート セッションの説明を設定し、ローカル ユーザー メディアを取得して、それをピア接続に追加します。
- peer2 は回答を作成し、ローカル セッションの説明を設定します
- peer2 は、データチャネル経由で peer1 に応答を送信します
- peer1 は回答を受け取り、リモート セッションの説明を設定します
ここで何か間違っていますか?このエラーはいつ発生しますか?
コメントありがとうございます!
ps: 私の下手な英語を許してください
ios - webRtc ハイブリッド アプリは IOS で実行されますか
rtc.io のような sdk を使用して IOS アプリケーションを開発したいです。 javascript ベースのハイブリッド アプリケーションが IOS で動作するかどうかを知りたいですか? IOS ネイティブ webRTC データ チャネル アプリ開発用の無料の SDK はありますか?
javascript - webRTC を使用した 2 つのピア間のデータ チャネルの作成と使用
WebRTC を使用してピア ツー ピア ファイル共有システムをセットアップしようとしています。両側でデータ チャネルを開くことはできますが、あるユーザーから別のユーザーにメッセージを送信することはできません。さらに、一方のピアがチャネルを閉じ、もう一方のピアがチャネルを閉じた場合、onclose イベントはこのユーザーに対してのみトリガーされます。
webRTC でデータ チャネルをセットアップして使用する適切な方法は何ですか?
私のコードで何が間違っているか、または欠けているか教えていただけますか?
アップデート:
そこで解決策を見つけました:http://www.html5rocks.com/en/tutorials/webrtc/basics/
javascript - webrtc でカスタム メディアストリームを作成して送信する
webrtc通信のビデオ部分のメディアストリームソースとしてキャンバス要素を使用したいのですが、このトピックについて議論しているリソースがあまり見つかりませんでした。
* 長いバックグラウンド ストーリー *
問題は、カメラからビデオを直接送信できないことです。これは、表示する前にビデオを処理する要件の一部です (一部の画像処理は、この問題の範囲外です)。
以前は、他のピアのブラウザーで、タグを使用してビデオを直接表示する代わりに<video>
、非表示のキャンバス要素で何らかの処理を行い、詳細を別のキャンバスにコピーしました (描画を続けるために settimeout を使用し、illusion of live video
.
現在、クライアントは video の送信前に処理を行う必要があるため、webrtc を使用してオーディオ ストリームを直接渡しました (以前は、オーディオとビデオの両方が webrtc 経由で送信されていました)。ビデオ ストリームについては、次の 2 つの解決策がありました。
手順:
ローカル ピアでビデオを処理し、非表示のキャンバスに描画します。簡単な部分。
タイムアウトを使用して、画像データを繰り返しキャプチャして送信
しwebsockets( yes, goes through server)
ます。
b) を使用するRTCDataChannel
と、パフォーマンスが大幅に向上しますが、理由もなく失敗する場合があります。他にもいくつかの問題がありました (たとえば、webp の代わりに jpeg を送信したため、余分な帯域幅が使用されました)。
別の大きな問題は、タイムアウトを使用しているためです。タブを切り替えると、反対側でフレームレートが低下します。
それで、手動で行う代わりに、非表示のキャンバスをメディアストリームソースとして使用する方法はありますか?
javascript - RTC データチャネルの異常な動作
RTC データチャネルを使用して、2 つのピア (両方のクロム ブラウザ、1 つの Windows PC と他の Mac) の間で (タイムアウトを使用して) データを (約200kb
) ごとに転送しています。100ms
なんらかの理由で突然、一般的に約 5 分後にピアの 1 つがデータの受信を停止し、しばらくするともう 1 つのピアもデータの受信を停止します。
多くのデバッグの後、両方のピアがまだデータを送信していることがわかりました。ネットワーク トラフィック分析から、他のマシンがデータを受信していることは明らかでしたが、ブラウザはchannel.onmessage
.
私のコードの一部:
これを引き起こしている既知のバグがありますか、それとも同じチャネルの両方のピアから同時に大量のデータを転送しているためですか?
編集
どうやら、シングルチャネルに変更したとき、2 つのデータチャネル (各方向の送信用に 1 つ) を使用していたようです。それははるかに早く機能しなくなりました。
これはばかげているように聞こえますが、(chrome
ブラウザーで) コンソールをクリアすると、そのブラウザーでのデータの受信はほとんどすぐに停止します (ただし、マシンはまだデータを受信しています)。
webrtc - RTP の代わりに SCTP を介してデータを送信する DataChannel の作成
WebRTCを使ってファイル共有サイトを作ろうとしています。
私のテスト環境:
Chrome カナリア 42.0.2275.0 Mac 10.10 (14A389)
コード:
データをチャンク化し、指定した遅延でメッセージごとに任意のサイズで送信しています。これは、 がありvar optionalRtpDataChannels = {optional: [{'RtpDataChannels': true}]};
、そのオブジェクトを に渡すときに機能しますnew RTCPeerConnection(servers, optionalRtpDataChannels);
。ただし、これはファイル共有 Web アプリには遅すぎるため、WebRTC DataChannels を使用してこれを行いたいと考えています。
このSOの回答で提案されたことを試してみましたが、RTCデータチャネルを介して画像データを運がありませんでした。オプションを省略したRtpDataChannels: true
場合、data.send() が 3KB/s (私のテストで確認済み) ではなく 64KB/s に抑制されることを示唆しています。これは RTP が抑制されるものです。
DataChannel を介して 3KB/s よりも高速に大きなファイルを送信する方法についてのアイデアはありますか?