I am using WebRTC for developing one of my applications. There is no clarity on whether WebRTC natively supports adaptive bitrate streaming of video packets? Does VP8 / VP9 have adaptive bitrate encoding support? Is bitrate_controller WebRTC's implementation of ABR?
Can anyone please throw more light on this? I find no conclusive evidence that WebRTC natively supports Adaptive streaming for Video.
WebRTC's Built-in ABR Support Those familiar with WebRTC might know that WebRTC already supports ABR. So, why did we add all these extra adjustments? The WebRTC protocol was designed for peer-to-peer browser connections. As such, in a server-to-browser model, it has built-in ABR on the subscriber side only.
Adaptive bitrate streaming adjusts video quality based on network conditions to improve video streaming over HTTP networks. This process makes playback as smooth as possible for viewers regardless of their device, location, or Internet speed.
Video hosting services like YouTube, Vimeo, and Wistia use what's known as adaptive streaming to deliver videos more efficiently.
The primary benefit of adaptive bitrate streaming is an improved Quality of Experience. Broadcasters can offer the highest quality video possible for their viewers without risking buffering or other interruptions to the experience. Along with smoother streams, ABR offers a faster startup.
Based on the WebRTC documentation found on this website: https://hpbn.co/webrtc/#audio-opus-and-video-vp8-bitrates I found this:
When requesting audio and video from the browser, pay careful attention to the size and quality of the streams. While the hardware may be capable of capturing HD quality streams, the CPU and bandwidth must be able to keep up! Current WebRTC implementations use Opus and VP8 codecs:
- The Opus codec is used for audio and supports constant and variable bitrate encoding and requires 6–510 Kbit/s of bandwidth. The good
news is that the codec can switch seamlessly and adapt to variable
bandwidth.- The VP8 codec used for video encoding also requires 100–2,000+ Kbit/s of bandwidth, and the bitrate depends on the quality of the streams: 720p at 30 FPS: 1.0~2.0 Mbps 360p at 30 FPS: 0.5~1.0 Mbps 180p at 30 FPS: 0.1~0.5 Mbps
As a result, a single-party HD call can require up to 2.5+ Mbps of network bandwidth. Add a few more peers, and the quality must drop to account for the extra bandwidth and CPU, GPU, and memory processing requirements.
So as far as I understand it, both codec will adapt the audio and video stream to the available bandwidth. Hope this helps.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With