10

Chrome 21 で webrtc コードを実行しています。

同じクロムで 2 つのタブを開き、webrtc コードを含むページを開くとします。1 つのタブはビデオ ストリームを送信するためのものです。1 つのタブはビデオ ストリームを受信するためのものです。正常に動作します。

ただし、2 つのシークレット モードまたは 2 つの異なる Chrome ブラウザーでページを開くと、sdp候補者の情報を正しく取得できます。ビデオは情報を解読できるようです。

リモートビデオでは、私だけを見ることができますここに画像の説明を入力

その上、それはクラッシュするようです。「クロムを閉じる」をクリックしようとしましたが、役に立ちません。

誰かが同様の問題を抱えていますか?

4

2 に答える 2

14

WebRTCをテストしているときpeerConnection.addStream(…)に、間違った場所に電話をかけると、このような状態が発生することがわかりました----

WebRTCでは順序付けが非常に重要であることを覚えておく必要があります。


更新日:午後6時36分-2014年7月17日木曜日(UTC)

空白のビデオは、次の場合に発生します。

  1. SSL証明書の有効期限が切れているか、無効なエントリがあるときにSTUNを使用しています。
  2. STUNを使用していますが、外部IPアドレスまたは一部のポートをブロックまたは非表示にしているのは、企業ファイアウォール、病院ネットワーク、またはプライベートネットワークです。
  3. 両方のピアに無効なsendrecv/sendonly/recvonlyペアがあります
  4. 提供者がストリームを添付しなかったか、ユーザーがオーディオストリームのみを添付した場合に失敗するのは、Firefoxです。OfferToReceiveVideo:true
  5. これらのプロパティに関する既知の問題があるのはAndroidであるHTMLMediaElement.HAVE_CURRENT_DATAか、mediaElement.pausedまたはその間です。mediaElement.currentTime

ソリューション?

  1. XirSysからTURNを使用するか、独自のをインストールします
  2. 有効なSSL証明書を使用しているか、代わりにHTTPを使用していることを確認してください。
  3. 提供者がストリームを添付していることを確認してください。OfferToReceiveAudioまた、 /OfferToReceiveVideoが接続されているストリームに従って使用されていることを確認してください。
  4. SDPを変更していないことを確認してください。また、両方のピア間でSDPを比較し、不一致を見つけてください。

コードの順序付けは、今日ではまれな問題の一種です。これは、addStreamオファーまたはアンサーを作成する前にコードを呼び出す必要があることを私たち全員が知っているためです。再交渉されたセッションでも。

chrome://webrtc-internalsFirefoxを使用して、about:configこれらのブラウザ内で何が起こっているかを確認してください。また、イベントには常にコンソールログを使用します。これは、ICE-ConnectivityチェックプロセスでonIceConnectionStateChangeICE-Agentをチェックするのに役立ちます。failed

提供者のsetting-remote-sdpが早すぎると、例外が発生することがあります。常に/と/onSdpErrorの両方に使用します。createOffercreateAnswersetLocalDescriptionsetRemoteDescription

peer.setRemoteDescription(remoteSDP, onSdpSuccess, onSdpFailure);


いくつかのデモリソース:

  1. https://github.com/muaz-khan/WebRTC-実験/デモ
  2. https://github.com/mozilla/webrtc-landing

およびhttps://www.webrtc-experiment.com/docs/TURN-server-installation-guide.html

于 2012-09-02T01:45:54.203 に答える
4

同じ問題があり、ストリームを VideoElement.src としてアタッチした直後に VideoElement.play() を呼び出すことで解決しました

document.querySelector( "#video" ).src = window.URL.createObjectURL( remoteStream );
document.querySelector( "#video" ).play();

トリガーされていないように見えるが、WebRTC ストリームであるため、loadedmetadata イベントを待たないでください。

于 2015-08-07T16:05:10.267 に答える