Javascript Firefox屏幕共享MediaStreamTrack至Twilio

Javascript Firefox屏幕共享MediaStreamTrack至Twilio,javascript,firefox,twilio,screensharing,Javascript,Firefox,Twilio,Screensharing,我使用FirefoxV55.0.2 在文档()中,在NavigatorUserMedia.getUserMedia()之后,通常在successCallback中,我有一个MediaStream,但在我的例子中,我有LocalMediaStream 我需要MediaStreamTrack在twilio发布 这是我的代码: $scope.testShareFirefox = function () { var p = navigator.mediaDevices.getUserMedia({

我使用FirefoxV55.0.2

在文档()中,在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);
  });
};
谢谢。

我找到了解决办法

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);
  });
};