1

我使用 libjingle:11139@aar 库在 Android 平台上构建聊天应用程序。

在许多 stackoverflow 线程中解释了从 RTCPeerConnection 动态添加/删除媒体流的问题,但它们似乎都与 JavaScript 有关。我找不到任何详细解释 Java/android 应用程序中的使用/执行顺序的线程。

我在很多地方读到,在添加媒体流之后,必须向对等方提出一个关于添加流的新 sdp。但是当一个新的 sdp 提议被创建时,当前的对等连接就丢失了。我在发起 sdp 提议的对等方中获得了 onIceConnectionChange(CLOSED)(在添加媒体流之后)。这是预期的行为吗?

另一个观察结果是,在将媒体流添加到对等连接之后,刚添加流的对等端会收到 RenogotiationNeeded() 通知。在此通知中,如果发送了 createOffer(),则 peerConnection 丢失。

非常感谢任何帮助。

4

1 回答 1

0

最后,当我回到 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 玩得开心 :)

于 2018-07-16T17:30:03.910 回答