2016-04-07 12 views
4

私はKurento WebRtcサーバーと画面を共有しようとしています。しかし、このエラーが発生する:Kurento Media Serverを使用してChromeで「ScreenCaptureError」を取得する

NavigatorUserMediaError {name: "ScreenCaptureError", message: "", constraintName: ""} 

同じコードでFirefoxにエラーはありません。 WebRTCのために使用して 制約:

var constraints = { 
     audio: true, 
     video: { 
      mandatory : { 
       chromeMediaSource: 'screen', 
       maxWidth: 1920, 
       maxHeight: 1080, 
       maxFrameRate: 30, 
       minFrameRate: 15, 
       minAspectRatio: 1.6 
      }, 
      optional: [] 
     } 
    } 

    var options = { 
      localVideo : video, 
      onicecandidate : onIceCandidate, 
      mediaConstraints : constraints 
    } 
    webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(options,function(error) { 
     if (error) { 
      return console.error(error); 
     } 
     webRtcPeer.generateOffer(onOfferPresenter); 
    }); 

は、どのように私はクロームとkurentoを使用して、私の画面を共有していますか?

+0

ChromeはChrome拡張機能を使用して画面を共有できます。あなたはどちらを使っていますか? – igracia

+0

私は[Muaz Khan](https://www.webrtc-experiment.com/)の拡張子を使用しています –

+0

@igracia、私はちょうどkurentoと拡張子を使用する方法を見つけることができません –

答えて

7

WebRTCを通じてKurentoで画面を共有することは、ウェブカメラを共有することとまったく同じです。クライアントからストリームを取得し、エンドポイントをネゴシエートします。スクリーンシェアを行うときのトリッキーな部分はストリームを取得することです。 kurento-utils-jsライブラリは、クライアントに画面またはウィンドウを共有することを示すWebRtcPeerオブジェクトを作成できるので、少し助けてくれます。あなただけ

  • は、拡張子がChromeで画面共有を行うためにインストールされていることを確認する必要があります。 FFでは、ドメインをホワイトリストに追加するだけで十分です。拡張子thisを確認してください。
  • kurentoUtils.WebRtcPeerオブジェクト
  • を作成する際のオプション袋に有効なsendSource値(screenまたはwindow)を渡すことがhereを使用するように、あなたのwindowオブジェクトにgetScreenConstraints方法を持っています。 getScreenConstraintsは、ブラウザに応じて有効な制約のセットを返す必要があります。あなたはその機能の実装をチェックすることができますhere

私は十分であるべきだと思います。私たちは自分自身のgetScreenConstrainsと拡張子を使って、図書館とのスクリーン共有を行っています。一度それを持っていれば、kurento-utils-jsライブラリとの画面共有はとても簡単です。あなたが共有できるようになる:ちょうど

  • 'screen'ので

    var constraints = { 
        audio: false, 
        video: true 
    } 
    
    var options = { 
        localVideo: videoInput, //if you want to see what you are sharing 
        onicecandidate: onIceCandidate, 
        mediaConstraints: constraints, 
        sendSource: 'screen' 
    } 
    
    webRtcPeerScreencast = kurentoUtils.WebRtcPeer.WebRtcPeerSendrecv(options, function(error) { 
        if (error) return onError(error) //You'll need to use whatever you use for handling errors 
    
        this.generateOffer(onOffer) 
    }); 
    

    sendSourceの値が文字列であるようなピアを作成sendSource値を渡す必要があり、それはあなたが共有したいものに依存画面全体。あなたが1以上のものを持っている場合は、

  • 'window'を共有するかを選択できます。警告:あなたはすべての開いているウィンドウ
  • [ 'screen', 'window' ]の間で選択することができます! Chromeによってのみ受け入れられます。これにより、ユーザーはフルスクリーンまたはウィンドウのいずれかを選択できます。
  • 'webcam':これはデフォルト値で、ここでは何も指定しません。何が起こるか推測します;-)
+1

あなたの答えのための@igraciaそれは役に立ちました。 [このハック](https://github.com/muaz-khan/getScreenId)を使用して問題を解決しました –

+0

@Moroz_Grigoryようこそ! 'getScreenId.js'は、私たちの' getScreenConstraints'関数に相当します:-) – igracia

+0

私はスクリーン共有のために必要なコードを手に入れてくれたこのポストを本当に感謝しています。私の共有ウィンドウはローカルビデオとして私には見えますが、部屋に参加した人はまだ私のウェブカメラストリームを見ています... 何らかのアイデアなぜ??? – Karthik

関連する問題