Fork me on GitHub

Demo details

This is basically a clone of the plain Video Room demo, but with a key difference: it forces VP9 on all publishers, and supports the VP9 SVC layer selection (if you don't know what this means, check our blog post). As such, it will allow viewers to select which layer, spatial or temporal, to receive from the publishers, in order to receive more or less data according to what they can/want to get. Notice that this is fundamentally different from the concept of simulcasting, and so must not be confused with the VP8 simulcasting some of the plugins (including the VideoRoom itself) support: with simulcasting, different streams with a different resolution/bitrate are sent at the same time; with SVC, you have a single stream with multiple layers, which makes it more efficient, especially because it consumes much less bandwidth.

Notice that this only works if the publishers joining the room will use a recent Chrome version that has been started with the following flag:

--force-fieldtrials=WebRTC-SupportVP9SVC/EnabledByFlag_2SL3TL/

If you join with a Chrome that doesn't have that option set, or with another browser, you'll be able to select a layer, but all request to set a custom layer on your video will fail, meaning you'll act as a plain VP9 client. If you ask for a layer from a publisher that doesn't support VP9 SVC either, then your request will be ignored as well.

In case some publishers do support the VP9 SVC features, selecting a different layer from them should result in variations of the video quality, and a notable difference in the bandwidth used to receive their video as well.

Press the Start button above to launch the demo.

@

Remote Video #1

Remote Video #2

Remote Video #3

Remote Video #4

Remote Video #5