Нижняя задержка WEBRTC как можно больше [закрыто]Html

Программисты Html
Ответить
Anonymous
 Нижняя задержка WEBRTC как можно больше [закрыто]

Сообщение Anonymous »

Ниже находится мой сервер Node-JS webrtc, и мне интересно, как я могу получить наименьшее количество задержек паря между клиентами. При просмотре трансляции из разных сетей существует около 0,7 -секундной задержки. Вещи, которые я сделал до сих пор, в виртуальной камере OBS понижает мое разрешение как можно больше и снижает кадров до 30. Я также добавил сервер поворота для надежности. < /P>
server.js
const express = require("express");
const http = require("http");
const socketIo = require("socket.io");

const app = express();
const server = http.createServer(app);
const io = socketIo(server);

let broadcaster;
const port = 4000;

io.sockets.on("error", (e) => console.log(e));
io.sockets.on("connection", (socket) => {
console.log("A user connected:", socket.id, socket.handshake.address);

socket.on("broadcaster", () => {
broadcaster = socket.id;
socket.broadcast.emit("broadcaster");
console.log(socket.id, "is broadcasting");
});

socket.on("watcher", () => {
console.log(socket.id, "is watching");
socket.to(broadcaster).emit("watcher", socket.id);
});

socket.on("offer", (id, message) => {
socket.to(id).emit("offer", socket.id, message);
console.log(socket.id, "sent an offer to", id);
});

socket.on("answer", (id, message) => {
socket.to(id).emit("answer", socket.id, message);
console.log(socket.id, "sent an answer to", id);
});

socket.on("candidate", (id, message) => {
socket.to(id).emit("candidate", socket.id, message);
console.log(socket.id, "sent a candidate to", id);
});

socket.on("disconnect", () => {
console.log("A user disconnected:", socket.id);
socket.to(broadcaster).emit("disconnectPeer", socket.id);
});
});

server.listen(port, "0.0.0.0", () =>
console.log(`Server is running on http://0.0.0.0:${port}`)
);
< /code>
broadcast.html



Broadcaster






const peerConnections = {};
const config = {
iceServers: [

],
};

const socket = io.connect('http://:4000');

socket.on("answer", (id, description) => {
peerConnections[id].setRemoteDescription(description);
});

socket.on("watcher", id => {
const peerConnection = new RTCPeerConnection(config);
peerConnections[id] = peerConnection;

let stream = videoElement.srcObject;
stream.getTracks().forEach(track => peerConnection.addTrack(track, stream));

peerConnection.onicecandidate = event => {
if (event.candidate) {
socket.emit("candidate", id, event.candidate);
}
};

peerConnection
.createOffer()
.then(sdp => peerConnection.setLocalDescription(sdp))
.then(() => {
socket.emit("offer", id, peerConnection.localDescription);
});
});

socket.on("candidate", (id, candidate) => {
peerConnections[id].addIceCandidate(new RTCIceCandidate(candidate));
});

socket.on("disconnectPeer", id => {
peerConnections[id].close();
delete peerConnections[id];
});

window.onunload = window.onbeforeunload = () => {
socket.close();
};

// Get camera stream
const videoElement = document.querySelector("video");
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
videoElement.srcObject = stream;
socket.emit("broadcaster");
})
.catch(error => console.error("Error: ", error));



< /code>
watch.html



Broadcaster






const peerConnections = {};
const config = {
iceServers: [
,
],
};

const socket = io.connect('http://:4000');

socket.on("answer", (id, description) => {
peerConnections[id].setRemoteDescription(description);
});

socket.on("watcher", id => {
const peerConnection = new RTCPeerConnection(config);
peerConnections[id] = peerConnection;

let stream = videoElement.srcObject;
stream.getTracks().forEach(track => peerConnection.addTrack(track, stream));

peerConnection.onicecandidate = event => {
if (event.candidate) {
socket.emit("candidate", id, event.candidate);
}
};

peerConnection
.createOffer()
.then(sdp => peerConnection.setLocalDescription(sdp))
.then(() => {
socket.emit("offer", id, peerConnection.localDescription);
});
});

socket.on("candidate", (id, candidate) => {
peerConnections[id].addIceCandidate(new RTCIceCandidate(candidate));
});

socket.on("disconnectPeer", id => {
peerConnections[id].close();
delete peerConnections[id];
});

window.onunload = window.onbeforeunload = () => {
socket.close();
};

// Get camera stream
const videoElement = document.querySelector("video");
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
videoElement.srcObject = stream;
socket.emit("broadcaster");
})
.catch(error => console.error("Error: ", error));





Подробнее здесь: https://stackoverflow.com/questions/794 ... s-possible
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Html»