【发布时间】:2016-11-23 04:25:42
【问题描述】:
我正在研究 WebRTC,但我觉得我不了解全貌。我特别看这个演示项目:https://github.com/oney/RCTWebRTCDemo/blob/master/main.js
我无法理解如何匹配 2 个客户端,以便客户端 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 库(您可以假设已创建用于房间匹配的后端服务器)
【问题讨论】:
标签: webrtc