如何通过 SIPJS 向其他呼叫者发送(屏幕共享流)



我正在使用SIPJS使用网络浏览器在2个呼叫者之间进行呼叫。

现在我想添加(屏幕共享(功能,到目前为止,我设法打开了chrome屏幕共享窗口,并获得了流并在视频元素中播放。

但我真正需要的是将此流发送给另一个呼叫者,以便他可以看到我的屏幕共享。

到目前为止我尝试过:

  • 获得(屏幕共享流(后,我将其传递给session.sessionDescriptionHandler.peerConnection,然后使用这些事件捕获流(或跟踪(onTrackAdded , onaddTrack , onaddStream , onstream
    但是没有一个事件得到任何东西。
  • 还尝试在呼叫开始
    之前发送带有video constraint的流
video: {
mandatory: {
chromeMediaSource: 'desktop',
// chromeMediaSourceId: event.data.sourceId,
maxWidth: window.screen.width > 1920 ? window.screen.width : 1920,
maxHeight: window.screen.height > 1080 ? window.screen.height : 1080
},
optional: []
}
  • 甚至试图用video constraint发送流
navigator.mediaDevices.getDisplayMedia(constraints)
.then(function(stream) {
//We've got media stream
console.log("----------then triggered-------------");
var options = {
sessionDescriptionHandlerOptions: {
constraints: {
audio: true,
video: stream
}
}
} 
pub_session = userAgent.invite(reciver_name,options);
})
.catch(function(error) {
console.log("----------catch-------------");
console.log(error);
});

也没用。

这是我的代码

首先获取屏幕共享流并将其发送给其他用户

// Get screen sharing and send it.
navigator.mediaDevices.getDisplayMedia(constraints)
.then(function(stream) {
//We've got media stream
console.log("----------then triggered-------------");
var pc = session.sessionDescriptionHandler.peerConnection;
stream.getTracks().forEach(function(track) {
pc.addTrack(track, stream);
});      
})
.catch(function(error) {
console.log("----------catch-------------");
console.log(error);
});

然后在另一边赶上那条溪流

// Reciving stream or track
userAgent.on('invite', function (session) {
session.on('trackAdded', function() {
console.log('-------------trackAdded triggered--------------');
});
session.on('addTrack', function (track) {
console.log('-------------addTrack triggered--------------');
});
session.on('addStream', function (stream) {
console.log('-------------addStream triggered--------------');
});
session.on('stream', function (stream) {
console.log('-------------stream triggered--------------');
});
});

但仍然没有从上面的代码中得到任何东西

那么,如何在呼叫开始后将该曲目传递给其他呼叫者呢?

非常感谢

我从SIPJS小组中的一些伟大的绅士那里找到了解决方案

希望答案能帮助某人,因为它帮助了我

var option = {video: {mediaSource: 'screen'}, audio: true};
navigator.mediaDevices.getDisplayMedia(option)
.then(function(streams){
var pc = session.sessionDescriptionHandler.peerConnection;
var videoTrack = streams.getVideoTracks()[0];
var sender = pc.getSenders().find(function(s) {   
return s.track.kind == videoTrack.kind;
}); 
console.log('found sender:', sender);
sender.replaceTrack(videoTrack);
}, function(error){
console.log("error ", error);
});

相关内容

  • 没有找到相关文章

最新更新