Я внедряю функцию видеооткрыта, используя два отдельных экземпляра RTCPeerconnection для отправки и получения видео. В настоящее время я реализовал только подключение к RTC отправителя, то есть только приемник может увидеть видео отправителя. правильно. Треки, кажется, получены, но видео не отображается. Журналы отправителя < /p>
webrtc recievr < /p>
webrtc sender < /p>
function VideoFrameReciever() {
const { match, socket } = useAuthStore();
const remoteVideoRef = useRef();
const startCall = async () => {
let candidates= null;
const sendersPC = new RTCPeerConnection({
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }, // Example STUN server (Google)
{ urls: "stun:global.stun.twilio.com:3478" }, // Example STUN server (Twilio)
// Add more STUN servers if needed
],
});
socket.on("receive-offer", async ({ sdp, from }) => {
console.log("offer received");
await sendersPC.setRemoteDescription(sdp);
const answer = await sendersPC.createAnswer();
await sendersPC.setLocalDescription(answer);
socket.emit("send-answer", {
sdp: sendersPC.localDescription,
to: match,
});
console.log("answer sent");
sendersPC.onicecandidate = (e) => {
if (e.candidate) {
socket.emit("send-ice-candidate", {
candidate: e.candidate,
to: match,
});
console.log("ice candidate sent", e.candidate);
}
};
});
socket.on("receive-ice-candidate", async ({ candidate }) => {
console.log("ice candidates recieved--->",candidate)
console.log("senderPc---->",sendersPC);
await sendersPC.addIceCandidate(candidate);
});
sendersPC.ontrack = (event) => {
console.log("track received");
console.log(event);
if (remoteVideoRef.current) {
remoteVideoRef.current.srcObject = event.streams[0]; // Use the streams from the event
console.log("remoteVideoRef is available", event.streams[0]);
} else {
console.error("remoteVideoRef is not available yet.");
}
};
};
startCall();
return (
{/* {myStream && (
My Stream
)} */}
Remote Stream
);
}
function VideoFrameSender() {
const { match, socket, connectSocket } = useAuthStore();
useEffect(() => {
connectSocket();
}, []);
const startCall = async () => {
const sendersPC = new RTCPeerConnection({
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }, // Example STUN server (Google)
{ urls: "stun:global.stun.twilio.com:3478" }, // Example STUN server (Twilio)
// Add more STUN servers if needed
],
});
sendersPC.onnegotiationneeded = async () => {
console.log("negotiation needed");
const offer = await sendersPC.createOffer();
await sendersPC.setLocalDescription(offer);
socket.emit("send-offer", { sdp: sendersPC.localDescription, to: match });
console.log("offer sent");
};
socket.on("receive-answer", async ({ sdp }) => {
console.log("answer received");
await sendersPC.setRemoteDescription(sdp);
});
sendersPC.onicecandidate = (e) => {
if (e.candidate) {
socket.emit("send-ice-candidate", {
candidate: e.candidate,
to: match,
});
console.log("ice candidate sent", e.candidate);
}
};
socket.on("receive-ice-candidate", async ({ candidate }) => {
console.log("ice candidate received--->", candidate);
await sendersPC.addIceCandidate(candidate);
});
const stream = await navigator.mediaDevices.getUserMedia({
video: true,
audio: false,
});
// Correct way to add track with stream:
stream.getTracks().forEach((track) => sendersPC.addTrack(track, stream)); // Add each track with the stream
console.log("Sender tracks:", stream.getTracks()); //
Подробнее здесь: https://stackoverflow.com/questions/794 ... -socket-io
Кандидаты на льду WEBRTC не оседают на стороне приемника (React, Socket.io) ⇐ Javascript
Форум по Javascript
1740135949
Anonymous
Я внедряю функцию видеооткрыта, используя два отдельных экземпляра RTCPeerconnection для отправки и получения видео. В настоящее время я реализовал только подключение к RTC отправителя, то есть только приемник может увидеть видео отправителя. правильно. Треки, кажется, получены, но видео не отображается. Журналы отправителя < /p>
webrtc recievr < /p>
webrtc sender < /p>
function VideoFrameReciever() {
const { match, socket } = useAuthStore();
const remoteVideoRef = useRef();
const startCall = async () => {
let candidates= null;
const sendersPC = new RTCPeerConnection({
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }, // Example STUN server (Google)
{ urls: "stun:global.stun.twilio.com:3478" }, // Example STUN server (Twilio)
// Add more STUN servers if needed
],
});
socket.on("receive-offer", async ({ sdp, from }) => {
console.log("offer received");
await sendersPC.setRemoteDescription(sdp);
const answer = await sendersPC.createAnswer();
await sendersPC.setLocalDescription(answer);
socket.emit("send-answer", {
sdp: sendersPC.localDescription,
to: match,
});
console.log("answer sent");
sendersPC.onicecandidate = (e) => {
if (e.candidate) {
socket.emit("send-ice-candidate", {
candidate: e.candidate,
to: match,
});
console.log("ice candidate sent", e.candidate);
}
};
});
socket.on("receive-ice-candidate", async ({ candidate }) => {
console.log("ice candidates recieved--->",candidate)
console.log("senderPc---->",sendersPC);
await sendersPC.addIceCandidate(candidate);
});
sendersPC.ontrack = (event) => {
console.log("track received");
console.log(event);
if (remoteVideoRef.current) {
remoteVideoRef.current.srcObject = event.streams[0]; // Use the streams from the event
console.log("remoteVideoRef is available", event.streams[0]);
} else {
console.error("remoteVideoRef is not available yet.");
}
};
};
startCall();
return (
{/* {myStream && (
My Stream
)} */}
Remote Stream
);
}
function VideoFrameSender() {
const { match, socket, connectSocket } = useAuthStore();
useEffect(() => {
connectSocket();
}, []);
const startCall = async () => {
const sendersPC = new RTCPeerConnection({
iceServers: [
{ urls: "stun:stun.l.google.com:19302" }, // Example STUN server (Google)
{ urls: "stun:global.stun.twilio.com:3478" }, // Example STUN server (Twilio)
// Add more STUN servers if needed
],
});
sendersPC.onnegotiationneeded = async () => {
console.log("negotiation needed");
const offer = await sendersPC.createOffer();
await sendersPC.setLocalDescription(offer);
socket.emit("send-offer", { sdp: sendersPC.localDescription, to: match });
console.log("offer sent");
};
socket.on("receive-answer", async ({ sdp }) => {
console.log("answer received");
await sendersPC.setRemoteDescription(sdp);
});
sendersPC.onicecandidate = (e) => {
if (e.candidate) {
socket.emit("send-ice-candidate", {
candidate: e.candidate,
to: match,
});
console.log("ice candidate sent", e.candidate);
}
};
socket.on("receive-ice-candidate", async ({ candidate }) => {
console.log("ice candidate received--->", candidate);
await sendersPC.addIceCandidate(candidate);
});
const stream = await navigator.mediaDevices.getUserMedia({
video: true,
audio: false,
});
// Correct way to add track with stream:
stream.getTracks().forEach((track) => sendersPC.addTrack(track, stream)); // Add each track with the stream
console.log("Sender tracks:", stream.getTracks()); //
Подробнее здесь: [url]https://stackoverflow.com/questions/79457105/webrtc-ice-candidates-not-settling-on-receiver-side-react-socket-io[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия