webrtc - kurento 问题中的屏幕共享
问题描述
在 kurento 媒体服务器中面临屏幕共享问题
我正在关注 kurento-java-tutorials (one2many)。这是我在客户端的演示者功能
function presenter() {
if (!webRtcPeer) {
showSpinner(video);
var constraints = {
audio: false,
video: {
width : { max : 320 },
height : { max : 240 },
framerate : { exact : 15 }
}
};
var options = {
// localVideo : video,
videoStream : video,
onicecandidate : onIceCandidate,
mediaConstraints : constraints,
sendSource : 'screen'
}
console.log(options);
if(navigator.getDisplayMedia || navigator.mediaDevices.getDisplayMedia) {
function onGettingSteam(stream) {
video.srcObject = stream;
}
if(navigator.mediaDevices.getDisplayMedia) {
navigator.mediaDevices.getDisplayMedia({video: true}).then(stream1 => {
onGettingSteam(stream1);
options.localVideo=stream1;
}, getDisplayMediaError).catch(getDisplayMediaError);
}
else if(navigator.getDisplayMedia) {
navigator.getDisplayMedia({video: true}).then(stream2 => {
onGettingSteam(stream2);
options.localVideo=stream2;
}, getDisplayMediaError).catch(getDisplayMediaError);
}
}
else {
}
webRtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(options,
function(error) {
if (error) {
return console.error(error);
}
webRtcPeer.generateOffer(onOfferPresenter);
});
enableStopButton();
}
}
我没有在查看器端获得视频流。在观众端的控制台上,它说
由于以下原因未接受呼叫:现在没有活动的发件人。成为发件人或。稍后再试 ...
解决方案
我们可以使用https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia中的 startCapture()
这对我们有用:
startCapture({video: true}).then(stream => {
video.srcObject = stream;
var cstrx = {
audio: false,
video: {
width : { max : 640 },
height : { max : 480 },
framerate : { exact : 15 }
}
};
var options = {
videoStream: stream,
onicecandidate: participant.onIceCandidate.bind(participant),
mediaConstraints : cstrx,
sendSource : 'screen'
}
participant.rtcPeer = new kurentoUtils.WebRtcPeer.WebRtcPeerSendonly(options,
...
这意味着我们必须等待流,否则我们会得到空的。
推荐阅读
- amazon-web-services - 在 dynamo db 中获取和存储项目计数的有效方法
- amazon-web-services - 如何为产品开发构建 AWS CDK
- ruby-on-rails - 无法在 Claudinary + Ruby on Rails 上生成图像
- kotlin - 抽象方法中类类型参数的类型推断
- sql - 使用标签分隔和拆分字符串
- swiftui - 使用按钮和@State / @Binding 时,SwiftUI 视图不会改变
- python - 线性分类器的 3D 决策边界未正确绘制
- java - Hibernate 延迟初始化的解决方法不起作用
- txt - 将大文本文件放入 Mongo DB
- laravel - 将 Laravel 应用程序部署到 Heroku 时出现 guzzel 错误