Я строю приложение SIP/WEBRTC с SIP.JS, и я внедрил поток переподключения и пересмотра для того, когда пользователь меняет сети в середине вызова (например, Wi-Fi → Mobile Data). Тем не менее, я сталкиваюсь с критической проблемой: < /p>
проблема < /strong> < /p>
[*] После изменения сети: < /p>
< /li>
< /li>
Принят. < /p>
< /li>
Сеанс остается активным (без ошибок). < /p>
< /li>
Но ни одна из сторон не слышна. безупречно. Аудио возобновляется правильно после перезапуска льда. const renegotiate = (session: JsSIP.RTCSession): Promise => {
return new Promise((resolve, reject) => {
if (!session) return reject("No session to renegotiate");
console.info("Starting renegotiation with ICE restart...");
session.renegotiate(
{
rtcOfferConstraints: {
offerToReceiveAudio: 1,
offerToReceiveVideo: 0,
iceRestart: true,
},
},
() => resolve(),
(err) => reject(err)
);
});
};
< /code>
in peerconnection.OniceConnectionStateChange я называю renegotiate (), если подключение к льду «отключено» или «не удалось». После этого звук возобновляется на обоих концах. const localStream = sdh.localMediaStream;
if (localStream) {
const audioTrack = localStream.getAudioTracks()[0];
if (audioTrack) {
pc.getSenders().forEach(sender => {
if (sender.track?.kind === 'audio') {
sender.replaceTrack(audioTrack);
}
});
}
}
< /code>
< /li>
Перезагрузить лед с повторным инвитом: < /p>
const offer = await pc.createOffer({ iceRestart: true });
await pc.setLocalDescription(offer);
await session.invite({
requestDelegate: {
onAccept: response => {
console.log('Re-INVITE accepted');
setupRemoteMedia(session, false);
},
onReject: () => {
console.warn('Re-INVITE rejected');
}
},
sessionDescriptionHandlerOptions: {
constraints: { audio: true, video: false }
}
});
< /code>
< /li>
< /ol>
re-invite принимается, сигнализация и состояние льда в порядке, но звук не получен или отправлено. "Connected". Stun: stun.l.google.com: 19302. < /p>
< /li>
предоставляются разрешения; Устройства для медиа действительно. ^0.21.2
[*]JsSIP: 3.10.0
[*]Browsers: Chrome (latest), Edge
[*]App: Next.js + WebRTC
< /ul>
что я хочу знать < /strong> < /p>
Любые известные обходные пути или лучшие практики для обработки сети изменение + восстановление звука в sip.js? />
библиотека < /th>
reconnect < /th>
oudio восстановлен < /th>
< /tr>
< /thead>
jssip < /td> /> Да < /td>
Да < /td>
< /tr>
td>sip.js
Да < /td>
нет < /td>
< /tr>
< /td>
< /td>
< /tr>
< /td>
< /tr>
>
Подробнее здесь: https://stackoverflow.com/questions/797 ... s-in-jssip
SIP.JS Audio потерян после изменения сети и воспроизведения - работает в JSSIP ⇐ Javascript
Форум по Javascript
1752739165
Anonymous
Я строю приложение SIP/WEBRTC с SIP.JS, и я внедрил поток переподключения и пересмотра для того, когда пользователь меняет сети в середине вызова (например, Wi-Fi → Mobile Data). Тем не менее, я сталкиваюсь с критической проблемой: < /p>
проблема < /strong> < /p>
[*] После изменения сети: < /p>
< /li>
< /li>
Принят. < /p>
< /li>
Сеанс остается активным (без ошибок). < /p>
< /li>
Но ни одна из сторон не слышна. безупречно. Аудио возобновляется правильно после перезапуска льда. const renegotiate = (session: JsSIP.RTCSession): Promise => {
return new Promise((resolve, reject) => {
if (!session) return reject("No session to renegotiate");
console.info("Starting renegotiation with ICE restart...");
session.renegotiate(
{
rtcOfferConstraints: {
offerToReceiveAudio: 1,
offerToReceiveVideo: 0,
iceRestart: true,
},
},
() => resolve(),
(err) => reject(err)
);
});
};
< /code>
in peerconnection.OniceConnectionStateChange я называю renegotiate (), если подключение к льду «отключено» или «не удалось». После этого звук возобновляется на обоих концах. const localStream = sdh.localMediaStream;
if (localStream) {
const audioTrack = localStream.getAudioTracks()[0];
if (audioTrack) {
pc.getSenders().forEach(sender => {
if (sender.track?.kind === 'audio') {
sender.replaceTrack(audioTrack);
}
});
}
}
< /code>
< /li>
Перезагрузить лед с повторным инвитом: < /p>
const offer = await pc.createOffer({ iceRestart: true });
await pc.setLocalDescription(offer);
await session.invite({
requestDelegate: {
onAccept: response => {
console.log('Re-INVITE accepted');
setupRemoteMedia(session, false);
},
onReject: () => {
console.warn('Re-INVITE rejected');
}
},
sessionDescriptionHandlerOptions: {
constraints: { audio: true, video: false }
}
});
< /code>
< /li>
< /ol>
re-invite принимается, сигнализация и состояние льда в порядке, но звук не получен или отправлено. "Connected". Stun: stun.l.google.com: 19302. < /p>
< /li>
предоставляются разрешения; Устройства для медиа действительно. ^0.21.2
[*]JsSIP: 3.10.0
[*]Browsers: Chrome (latest), Edge
[*]App: Next.js + WebRTC
< /ul>
что я хочу знать < /strong> < /p>
Любые известные обходные пути или лучшие практики для обработки сети изменение + восстановление звука в sip.js? />
библиотека < /th>
reconnect < /th>
oudio восстановлен < /th>
< /tr>
< /thead>
jssip < /td> /> Да < /td>
Да < /td>
< /tr>
td>sip.js
Да < /td>
нет < /td>
< /tr>
< /td>
< /td>
< /tr>
< /td>
< /tr>
>
Подробнее здесь: [url]https://stackoverflow.com/questions/79704474/sip-js-audio-lost-after-network-change-reconnect-works-in-jssip[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия