我在研究WebRTC,但感觉没有完全理解整个情况。特别是我在研究这个演示项目:https://github.com/oney/RCTWebRTCDemo/blob/master/main.js
我不明白如何匹配两个客户端,以便客户端A可以看到客户端B的视频流,反之亦然。
演示中包含以下内容:
function getLocalStream(isFront, callback) {
MediaStreamTrack.getSources(sourceInfos => {
console.log(sourceInfos);
let videoSourceId;
for (const i = 0; i < sourceInfos.length; i++) {
const sourceInfo = sourceInfos[i];
if(sourceInfo.kind == "video" && sourceInfo.facing == (isFront ? "front" : "back")) {
videoSourceId = sourceInfo.id;
}
}
getUserMedia({
audio: true,
video: {
mandatory: {
minWidth: 500, // Provide your own width, height and frame rate here
minHeight: 300,
minFrameRate: 30
},
facingMode: (isFront ? "user" : "environment"),
optional: [{ sourceId: sourceInfos.id }]
}
}, function (stream) {
console.log('dddd', stream);
callback(stream);
}, logError);
});
}
然后按以下方式使用:
socket.on('connect', function(data) {
console.log('connect');
getLocalStream(true, function(stream) {
localStream = stream;
container.setState({selfViewSrc: stream.toURL()});
container.setState({status: 'ready', info: 'Please enter or create room ID'});
});
});
问题:
MediaStreamTrack.getSources
到底是做什么的?这是因为设备可以有多个视频源(例如3个网络摄像头)吗?getUserMedia
不就是打开客户端的相机吗?在上面的代码中,客户端只是在查看自己的视频吗?
我想知道如何将客户端A的某种URL传递给客户端B,以便客户端B从客户端A接收视频流。我该怎么做?我想象一下:
- 客户端A进入并加入房间“abc123”。等待另一个客户端加入
- 客户端B进入,并且也加入了房间“abc123”。
- 客户端A被通知客户端B已经进入房间,所以他与客户端B建立连接
- 客户端A和客户端B开始从他们的网络摄像头进行流式传输。客户端A可以看到客户端B,而客户端B可以看到客户端A。
使用WebRTC库,我应该如何实现它(您可以假设用于房间匹配的后端服务器已创建)