2016-04-07 15 views
4

Ich versuche, meinen Bildschirm mit Kurento WebRTC Server bekommen zu teilen. Aber bekommen diesen Fehler:"ScreenCaptureError" in Chrome Kurento Media Server

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

Es gibt keine Fehler in Firefox mit dem gleichen Code. Constraints unter Verwendung von für 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); 
    }); 

Wie kann ich meinen Bildschirm mit Chrom und kurento teilen?

+0

Chrome kann nur Bildschirm durch eine Chrome-Erweiterung teilen. Welchen benutzen Sie? – igracia

+0

Ich verwende Erweiterung von [Muaz Khan] (https://www.webrtc-experiment.com/) –

+0

@igracia, ich kann einfach nicht einen Weg finden, wie Erweiterung verwenden, um mit kurento –

Antwort

7

einen Bildschirm mit Kurento durch WebRTC teilen, ist genau das gleiche wie die Webcam teilen den Strom von dem Client erhalten und den Endpunkt zu verhandeln. Der schwierigste Teil beim Ausführen von ScreenShare ist das Abrufen des Streams. Die kurento-utils-js-Bibliothek wird Ihnen dabei helfen, da Sie im Client das Objekt WebRtcPeer erstellen können, das anzeigt, dass Sie Ihren Bildschirm oder ein Fenster freigeben möchten. Sie müssen nur sicherstellen, dass Sie eine

  • eine Erweiterung installiert haben, um die Bildschirmfreigabe in Chrome zu tun. In FF genügt es, die Domain zur Whitelist hinzuzufügen. Überprüfen Sie this Erweiterung.
  • passieren einen gültigen Wert sendSource (screen oder window) in der Tasche, wenn die Optionen kurentoUtils.WebRtcPeer Objekt erstellen
  • eine getScreenConstraints Methode in dem Fensterobjekt hat, wie es here verwendet wird. getScreenConstraints sollte abhängig vom Browser gültige Beschränkungen zurückgeben. Sie können eine Implementierung dieser Funktion überprüfen here

Ich denke, das sollte genug sein. Wir machen Bildschirm-Sharing mit der Bibliothek, verwenden unsere eigenen getScreenConstrains und Erweiterung, und es funktioniert gut. Sobald Sie das haben, ist die Bildschirmfreigabe mit der kurento-utils-js-Bibliothek ziemlich einfach. Nur müssen die sendSource Wert zu übergeben, wenn wie so

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) 
}); 

Der Wert sendSource ist eine Zeichenfolge, die die Peer-zu schaffen und es hängt davon ab, was Sie teilen möchten

  • 'screen': werden Sie die lassen teilen ganzer Bildschirm. Wenn Sie mehr als eine haben, können Sie wählen, welche
  • 'window' zu teilen: können Sie wählen zwischen allen geöffneten Fenstern
  • [ 'screen', 'window' ]: WARNUNG! Nur von Chrome akzeptiert, kann der Benutzer zwischen Vollbildschirmen oder Fenstern wählen.
  • 'webcam': Dies ist der Standardwert Sie hier nichts angeben. Ratet mal, was passieren wird ;-)
+1

Vielen Dank für Ihre Antwort @igracia Es war hilfreich. Ich habe das Problem mit [diesen Hack] behoben (https://github.com/muaz-khan/getScreenId) –

+0

@Moroz_Grigory Gern geschehen! 'GetScreenId.js' entspricht unserer' getScreenConstraints' Funktion :-) – igracia

+0

ich die erforderlichen Teile des Codes für die Bildschirmfreigabe bekommen schätzen diesen Beitrag hilft mir wirklich .... aber wenn, wann immer ich meinen Bildschirm teilen ...mein geteiltes Fenster ist für mich als lokales Video sichtbar, aber die Person, die dem Raum beigetreten ist, sieht immer noch meinen Webcam-Stream ... eine Idee warum ??? – Karthik