转发 WebRTC 视频以进行点对点广播

问题描述 投票:0回答:4

对等点必须能够转发数据,以便在点对点覆盖(例如 Chord)中进行广播。当每个节点(对等点)接收到数据时,它会将数据转发到其路由表中的所有其他节点,然后这些节点将再次转发相同的数据,直到环中的所有节点都收到数据。例如,结构化 p2p WebRTC 广播需要一种转发 WebRTC 视频流的方法。

据我了解,javascript WebRTC API 旨在允许开发人员设置连接,但不能直接处理媒体流。将高级视频对象“插入”到连接对象中以使用视频流,而无需对视频数据进行较低级别的访问。

问题

  1. 有什么方法可以在 WebRTC 客户端中获取原始视频流吗?
  2. WebRTC 中是否存在任何形式的原始消费者对象或转发/中继对象?
html html5-video p2p webrtc chord
4个回答
5
投票

当然可以将传入流从一个 RTCPeerConnection 转发到另一个。这是一个示例:https://github.com/git-matrix/webrtc/tree/master/samples/web/content/peerconnection/multiple-relay 但是,在这种情况下,您无法对帧进行低级访问,并且内容将被解码和重新编码,而不是按原样传递。


2
投票

首先,我想我已经成功地将 A 的视频转发给了 C。 由于我仅使用一台 PC(笔记本电脑)和两台不同的相机进行测试,因此我不能 100% 确定,但我认为我已经做到了,看来 RTCPeerconnection 能够获取远程流。

顺便说一句,我正在使用 easyrtc 库,因为我找不到任何可用的简单代码来测试。

所以基本的想法应该是,

A 抓取活动视频。 B 连接到 A,

B 保存从 A 接收到的远程流引用;

C 连接到 B,

B不传递本地媒体流,而是将远程媒体流交给C;

C 将保存远程媒体流;

当D连接到C时,C将从B接收到的远程媒体流(实际上是从A接收到的)交给D

同样,流继续...即 A 的媒体流像波一样通过 B、C、D、E...

请注意,连接流程应如下所示: A<-->B<-->C<-->D<-->E...每个节点只有两个连接..与前一个节点和下一个节点。

但是,长话短说 - 是的,您可以访问媒体流并将其交给另一个远程连接

我只需要一位专家,他可以给我一个基于 JS 的有效 webrtc 代码,其中 A 与 B 连接,反之亦然。我会尝试编写 C 连接与 B 和 D 连接与 C 代码进行正确的测试。


1
投票
  1. 不,客户端没有。您必须将其发送到服务器,在那里您几乎可以做任何您想做的事情。
  2. 您必须为要转发到的每个对等点打开单独的对等连接。

来源:http://www.youtube.com/watch?v=E8C8ouiXHHk


0
投票

是的,这不仅是可能的,而且实际上非常简单。一旦建立 A 和 B 之间的第一个会话,您就可以获取其中的任何 tracks 并将其传递给 B 和 C 之间新连接的

addTrack
函数

© www.soinside.com 2019 - 2024. All rights reserved.