#javascript #webrtc #video-streaming
Вопрос:
Я хотел бы получить помощь в добавлении групповой потоковой передачи видео в приведенный ниже код, я хотел бы реализовать групповую потоковую передачу, которая будет работать со ссылкой, такой как
domain.net/video.html?id=123amp;host=1 domain.net/video.html?id=456amp;host=1 чтобы разрешить друзьям присоединиться с помощью идентификатора param.
'use strict';
// Put variables in global scope to make them available to the browser console.
const constraints = window.constraints = {
audio: true,
video: true
};
function handleSuccess(stream) {
const video = document.querySelector('video');
const videoTracks = stream.getVideoTracks();
window.stream = stream;
video.srcObject = stream;
}
function handleError(error) {
if (error.name === 'ConstraintNotSatisfiedError') {
const v = constraints.video;
console.log("The resolution not supported");
} else if (error.name === 'PermissionDeniedError') {
console.log('Permissions have not been granted');
}
console.log(`getUserMedia error: ${error.name}`, error);
}
async function init(e) {
try {
const stream = await navigator.mediaDevices.getUserMedia(constraints);
handleSuccess(stream);
e.target.disabled = true;
} catch (e) {
handleError(e);
}
}
document.querySelector('#showVideo').addEventListener('click', e => init(e));
Am in my learning stages to JavaScript please help, thanks.
Комментарии:
1. Что именно вы ищете?
2. @lnogueir Я хотел транслировать видео между двумя пользователями. где param host=1 — это хост видео, а идентификатор параметра-URL-адрес видео, к которому нужно присоединиться.
3. Я знаю, что вы имеете в виду, но вы ищете код для этого или предложения о том, как бы вы это сделали?
4. Мне нужна была недостающая часть кода, где это возможно. пожалуйста.
5. В вашем сценарии многого не хватает, поэтому я не думаю, что смогу добавить туда все, чего там не хватает. Что я могу сделать, так это предоставить вам пример кода, на который вы можете ссылаться, и некоторые идеи о том, как сделать его масштабируемым, это поможет?
Ответ №1:
Предоставленный вами сценарий в настоящее время получает пользовательскую камеру и аудио. Вам нужно будет передать это в RTCPeerConnection и установить сеанс WebRTC с другими одноранговыми узлами, обмениваясь сообщениями SDP и кандидатами ICE через сигнальный сервер. Прочитайте это, чтобы более подробно понять, как работает подключение WebRTC.
Поскольку вы хотите транслировать потоковую передачу группе людей, один из подходов состоит в том, чтобы создавать новую RTCPeerConnection
для каждого нового однорангового пользователя в вашей комнате. Посмотрите на этот пример, он делает именно это.
Однако, поскольку WebRTC предназначен для одноранговой связи, это решение не очень масштабируемо, поскольку вы будете создавать новые одноранговые соединения экспоненциально, что довольно сложно для браузера и потребляет много пропускной способности. С 6 людьми качество вашего звонка уже будет ужасным, но я думаю, что до 4 человек это должно быть выполнимо.
Если вы намерены иметь конференц-зал, вам действительно следует подумать об использовании медиасервера с функцией выборочной пересылки (SFU). При таком подходе сервер выполнит маршрутизацию потока и применит некоторые приемы, такие как одновременная передача, чтобы сделать ваш поток более масштабируемым и адаптивным, обеспечивая лучший опыт.
Проверьте плагин Janus VideoRoom для реализации SFU с открытым исходным кодом.
Комментарии:
1. Git не работает, и другие коды находятся на python .py, я просматриваю developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnection
2. Спасибо за информацию, я прошел через это и попрактиковался, но мне не повезло, что я все сделал правильно.