Добавить / удалить 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 Веселитесь:)

Другие вопросы по тегам