【发布时间】:2016-10-26 15:22:46
【问题描述】:
我正在为 Android 开发 WebRTC。并成功创建和建立会议。使用单个 MediaStream 和多个 PeerConnection。
现在我想找到一种更好的方法,其中之一就是中继连接。我的问题是,如Chromium Report 所述,装箱中继。我应该做同样的事情,但有几个问题。所以让我们开始吧。
- 建立成功的对等连接。 (A -> B)
- 使用另一个对等连接 (B -> C) 中继远程媒体流。
- 中继的媒体流 (A ->-> C) 应在最终端点播放。
那么对于用户B,我们应该从用户A的PeerConnection中获取远程流,并将流添加到用户C的PeerConnection中。以及它是如何使用Java库的?
// Local Media Stream, just as example for this question
// Local stream of current User B
MediaStream mediaStream = new MediaStream(...);
PeerConnection peerA = new PeerConnection(...);
PeerConnection peerC = new PeerConnection(...);
peerA.addStream(mediaStream);
peerB.addStream(mediaStream);
// Now this User (User B) can here User A and B
// Connection successful establish.
// Here is question, how I can fetch remote
// MediaStream object from PeerConnection A?
如何从 PeerConnection A 获取远程 MediaStream 对象并将它们添加到其他 PeerConnection C?
我也尝试过从 PeerConnection 获取 RTPSender 和 RTPReceiver。之后我可以访问远程站点的 MediaStreamTrack。但是我不能把这个对象放到另一个 PeerConnection 上。
【问题讨论】:
-
为什么同一台机器上有两个对等连接? IIRC,将媒体流添加到会话时会发生回调。
-
见webrtc.github.io/samples/src/content/peerconnection/… - 我不明白问题是什么。您将通常从
pc.onaddstream获取的流获取到视频元素,然后将pc.addStream获取到新的对等连接。 -
@BenjaminTrent 我需要多个会议连接。如何在没有新呼叫者的情况下开始与新呼叫者重新谈判?
-
@jib 它唯一的音频会议,没有视频。所以看起来很简单,但在 Java 级别上,它们缺少很多动作函数。
-
@jib 你是对的。有接口,监听onStreamAdd。我只是浪费时间解决问题,因为不要认为这会如此 ez。万分感谢。请添加答案,我会投票!
标签: android webrtc multipeer-connectivity