Добавить / удалить MediaStream в соединении WebRTC Peer в Android
Я использую библиотеку libjingle:11139@aar для создания приложения чата на платформе Android.
Проблема добавления / удаления промежуточного потока динамически из RTCPeerConnection объясняется во многих потоках stackru, но все они, похоже, связаны с JavaScript. Я не смог найти ни одного потока, который подробно объясняет об использовании / последовательности выполнения в приложении Java / Android.
Во многих местах я читал, что после добавления медиастрима, необходимо добавить новый sdp к пиру о добавлении потока. Но когда создается новое предложение sdp, текущее одноранговое соединение теряется. Я получаю onIceConnectionChange(ЗАКРЫТО) в одноранговом узле, который инициирует предложение sdp (после добавления промежуточного потока). Это ожидаемое поведение?
Другое наблюдение заключается в том, что после добавления медиапотока к одноранговому соединению в одноранговом узле, который только что добавил поток, получено уведомление RenogotiationNeeded(). В этом уведомлении, если createOffer() отправлено, peerConnection теряется.
Любая помощь высоко ценится.
1 ответ
Наконец, когда я вернулся в WebRTC, я нашел решение, здесь вы можете отключить локальное видео только для потоковой передачи по одной стороне: в классе PeerConnectionClient (я говорю о проекте Java-Android) напишите ниже функцию и вызовите ее, когда видео звонит:
//Hieu: disabled receive peer video for aircraft streaming only
public void setMyVideoEnabled(final boolean enable) {
executor.execute(() -> {
renderVideo = enable;
if (remoteVideoTrack != null) {
remoteVideoTrack.setEnabled(renderVideo);
}
});
}
Я не пробовал с аудио, но я думаю, что мы можем сделать это так же, как эта функция. Например, я вызываю эту функцию на кнопке переключения камеры на примере кода WebRTC: CallActivity.java
@Override
public void onCameraSwitch() {
if (peerConnectionClient != null) {
//peerConnectionClient.switchCamera();
peerConnectionClient.setMyVideoEnabled(false);
}
}
Ссылка примера Google: https://webrtc.org/native-code/android/ Путь: src/examples/androidapp Веселитесь:)