我正在尝试与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
对象,指示您要共享屏幕或窗口。您只需要确保自己
sendSource
对象screen
值(window
或kurentoUtils.WebRtcPeer
)getScreenConstraints
方法,因为它将用于here。 getScreenConstraints
应该返回一组有效的约束,具体取决于浏览器。您可以检查该功能的实现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/