首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过SIPJS向另一个调用方发送(屏幕共享流)

如何通过SIPJS向另一个调用方发送(屏幕共享流)
EN

Stack Overflow用户
提问于 2019-10-03 14:20:44
回答 1查看 659关注 0票数 0

我使用SIPJS在两个调用者之间使用web浏览器进行调用。

现在我想添加(屏幕共享)功能,到目前为止,我成功地打开了铬屏幕共享窗口,我得到了流,并在视频元素中播放它。

但是我真正需要的是将这个流发送给另一个调用者,这样他就可以看到我的屏幕共享。

到目前为止我尝试过的是:

在获得(屏幕共享流)后,我将其传递给session.sessionDescriptionHandler.peerConnection,然后使用这些事件onTrackAdded , onaddTrack , onaddStream , onstream捕获流(或跟踪)。

但是,所有这些事件都不会在调用启动anything.

  • Also 之前尝试用video constraint发送流。

代码语言:javascript
复制
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: []
}

  • 甚至尝试用发送流。

代码语言:javascript
复制
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);
    });

也不管用。

这是我的密码

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

代码语言:javascript
复制
// 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);
    });

然后在另一边抓住那条小溪

代码语言:javascript
复制
// 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--------------');
      });
});

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

那么,在调用启动后,如何将流、跟踪传递给其他调用方呢?

非常感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-14 06:21:46

我从SIPJS集团的一些伟大的绅士那里找到了解决方案

希望这个答案能像帮助我一样帮助别人

代码语言:javascript
复制
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);
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58221146

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档