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