我正在尝试与Kurento WebRtc服务器共享屏幕。但是得到这个错误:

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

如何使用chrome和kurento共享屏幕?

最佳答案

通过WebRTC与Kurento共享屏幕与共享网络摄像头完全相同:从客户端获取流并协商端点。进行屏幕共享时,棘手的部分是获取视频流。 kurento-utils-js库将为您提供一些帮助,因为您可以在客户端中创建WebRtcPeer对象,指示您要共享屏幕或窗口。您只需要确保自己

  • 已安装扩展程序,可以在Chrome中进行屏幕共享。在FF中,将域添加到白名单就足够了。检查this扩展名。
  • 在创建sendSource对象
  • 时在选项包中传递有效的screen值(windowkurentoUtils.WebRtcPeer)
  • 在您的窗口对象中具有getScreenConstraints方法,因为它将用于heregetScreenConstraints应该返回一组有效的约束,具体取决于浏览器。您可以检查该功能的实现here

  • 我认为就足够了。我们正在使用我们自己的getScreenConstrains和扩展名与库进行屏幕共享,并且工作正常。一旦拥有了,使用kurento-utils-js库进行屏幕共享就非常容易了。像这样创建对等方时只需要传递sendSource
     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的值是一个字符串,取决于您要共享的内容
  • 'screen':让您共享整个屏幕。如果您有多个,则可以选择共享
  • 'window':让您在所有打开的窗口中选择
  • [ 'screen', 'window' ]:警告!仅由Chrome接受,这将使用户可以在全屏或全屏之间进行选择。
  • 'webcam':这是默认值,您在此处未指定任何内容。猜猜会发生什么;-)
  • 关于javascript - 使用Kurento Media Server在Chrome中获取 "ScreenCaptureError",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36485558/

    10-10 06:12