Firefox屏幕共享MediaStreamTrack到Twilio

时间:2017-09-21 16:28:45

标签: javascript firefox twilio screensharing

我使用的是Firefox v55.0.2

在文档(https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia)中,在NavigatorUserMedia.getUserMedia()通常在successCallback之后,我有一个MediaStream但在我的情况下我有LocalMediaStream。

我需要让MediaStreamTrack在twilio上提供它。

这是我的代码:

$scope.testShareFirefox = function () {
  var p = navigator.mediaDevices.getUserMedia({
    video: {
      mediaSource: 'screen',
      width: 640,
      height: 480
    },
  })
  .then(function(stream) {
    const screenLocalTrack = new twilio.Video.LocalVideoTrack(stream);
    $scope.videoConf.room.localParticipant.addTrack(screenLocalTrack);

    var video = document.createElement('video');
    $('#test-share-screen').append(video);

    video.srcObject = stream;
    video.play();
  })
  .catch(function (err) {
    console.log(err);
  });
};

谢谢。

1 个答案:

答案 0 :(得分:1)

我找到了解决方案。

LocalMediaStream是MediaStream的继承,因此我们可以使用" .getTracks()"

这是工作解决方案:

$scope.testShareFirefox = function () {
  navigator.mediaDevices.getUserMedia({
    video: {
      mediaSource: 'screen',
      width: 640,
      height: 480
    },
  })
  .then(function(stream) {
    stream.getTracks().forEach(function(track) {
      $scope.videoConf.room.localParticipant.addTrack(track);
    });

    var video = document.createElement('video');
    $('#test-share-screen').append(video);

    video.srcObject = stream;
    video.play();
    var trackElements = document.querySelectorAll("track");
  })
  .catch(function (err) {
    console.log(err);
  });
};