让我们考虑一个带有 WebRTC 的 P2P 视频会议,其中发布者以高清流式传输,1024x768
而观众加入该会话并希望320×240
以节省带宽的方式观看视频。
要给出一个类比,它必须像 youtube 的Quality
选项一样。
在 WebRTC 中可以吗?
每个对等点在接收任何流之前都会有一个协商进度。已经在此频道中的发件人将知道他们必须在此过程中更改其流配置文件。
如果碰巧有人已经在这个通道没有足够的带宽,发送端MediaOptimization模块会通过RTCP接收端知道发送,并调整比特率。
如果是,此功能是否在 (agora | tokbox | vidyo | twilio) 中实现
据我所知,他们在网络上所做的一切都是基于 WebRTC(显然他们很少有选择)。
他们的原生 SDK 在分辨率切换上可能有更好的质量,因为他们可以使用 SVC、多流等技术。
我在 TokBox 工作。
就使用 OpenTok 实现这一点而言,是的,这是可能的。我们支持通过 SFU 的“路由”会话的可扩展视频(联播)。这意味着您可以从发布者那里发送高清分辨率,然后订阅者都可以根据他们的带宽以不同的分辨率订阅。您还可以使用setPreferredResolution API 指定首选分辨率,这将让您强制它使用较低的分辨率,例如。您知道您仅以小尺寸显示订阅者。
在 p2p 模式下更改分辨率的唯一方法是(a)断开对等连接,更改约束以从 cam 请求不同的分辨率,并建立新连接,(b)重新协商或(c ) 更换发送方的轨道。(c) 通常是首选,因为它不会强制进行新的握手,这可能会在更改分辨率时导致可见的故障。
做到这一点的好方法是使用媒体服务器,它接收源流的多个分辨率,并且根据接收器的容量仅中继一个。可以通过两种方式实现:使用像 VP9、AV1、...这样的 SVC 编解码器,或者如果没有可用的 SVC 编解码器,则使用联播,即多次使用具有不同输出分辨率的相同简单编解码器。今天并不是每个浏览器都支持这一点。
如果您在循环中使用他们的媒体服务器,大多数供应商都会提供此选项。它将在他们控制整个堆栈的本机 SDK 中开箱即用地完成,而对 Web 的支持将反过来取决于浏览器支持本身。
agora 并没有真正使用 webrtc。
Vidyo 是 SVC 编解码器专家,但被浏览器实现阻止。我最近没有测试。
亚当告诉你关于 tokbox,他们已经有很长一段时间了。
我不是最新的 twillio 产品。