SIP.JS Audio потерян после изменения сети и воспроизведения - работает в JSSIPJavascript

Форум по Javascript
Ответить
Anonymous
 SIP.JS Audio потерян после изменения сети и воспроизведения - работает в JSSIP

Сообщение 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>
>

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

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

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

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

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

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