Я смотрю WebRTC, но чувствую, что не понимаю полную картину. Я рассматриваю этот демонстрационный проект, в частности: https://github.com/oney/RCTWebRTCDemo/blob/master/main.jsWebRTC: как я могу передать клиенту A клиента клиенту B?
У меня возникли проблемы с пониманием того, как я могу сопоставить 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
просто включите камеру клиента? В приведенном выше коде не клиент просто просматривает видео о себе?
Я хотел бы знать, как я могу передать URL клиента А в каком-то для клиента B так, что клиент B потоков видео от клиента приходит А. Как мне это сделать? Я представляю что-то вроде этого:
- Клиент А входит в комнату «abc123». Ожидает присоединения другого клиента
- Клиент B входит, также присоединяется к комнате «abc123».
- Клиент A сигнализирует о том, что Клиент B вошел в комнату, поэтому он устанавливает соединение с клиентом B
- Клиент A и Клиент B начинают потоковое вещание со своей веб-камеры. Клиент А может видеть клиента B, и клиент B может видеть клиента A.
Как бы я сделать это с помощью библиотеки WebRTC (вы можете просто предположить, что сервер бэкенд для согласования номера создается)
Большое спасибо за подробное объяснение! – Edmund
Добро пожаловать! :) –