Google webrtc native实现是否支持SFU?

Does Google webrtc native implementation have support for SFU?

  1. GoogleWebRTC Native 实现是否支持 SFU?
  2. GoogleWebRTC Native 实现是否支持集成custom/hardwareencoder/decoder?

并非没有改动。

内部 WebRTC 的内部 audio/video 管道直接绑定到 encoder/decoders。

PeerConnectionFactory 允许您提供视频 decoder/encoder 工厂,因此您可以缩短此处的逻辑,并获取编码帧,模拟流,并将它们作为中继直接馈送到其中,创建一个新的 PeerConnection 并将这些流设置到它上面。

音频端比较难。没有编解码器工厂,因此您可能必须通过更改 libwebrtc 来短路那里的逻辑。

最后一个问题是 RTCP 终止,以及如何覆盖 quality/bandwidth 控制机制以不创建“一个出去,他们都出去”。情况。

由于 libwebrtc 将成为 SFU,它将从其远程对等点接收其代理内容的 RTCP 反馈,反之亦然。

对于 1-1 的情况,它需要能够将 RTCP 反馈转发给远程对等方。

对于多点,它需要执行一些逻辑来确定对等点之一是否有问题,并停止向其发送视频、关闭其视频源或尝试切换到较低比特率的视频流。基本上,它需要充当尝试预测 why/how 数据包丢失发生的渠道,并保持尽可能多的 audio/video 提要以尽可能高的质量正常运行。

如何在 libwebrtc 中劫持 RTCP 反馈机制,我认为这可能需要一些 customization/hooks 到 libwebrtc

我认为尝试使用 WebRTC 的 GStreamer 实现会更容易。尽管它仍处于“Bad Plugins”中,但获取或提供编码的音频和视频要容易得多。实际上它是在考虑到这一点的情况下实施的——使 MFU 和 SFU 的实施更容易。