Firefox 屏幕共享 MediaStreamTrack 到 Twilio
Firefox screen share MediaStreamTrack to Twilio
我使用 Firefox v55.0.2
在文档 (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia) 中,通常在 successCallback 中 NavigatorUserMedia.getUserMedia() 之后,我有一个 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);
});
};
我使用 Firefox v55.0.2
在文档 (https://developer.mozilla.org/en-US/docs/Web/API/Navigator/getUserMedia) 中,通常在 successCallback 中 NavigatorUserMedia.getUserMedia() 之后,我有一个 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);
});
};