Custom video codec for broadcasts

Viewer-Side Option! (&view, &scene, &room)

V22: Sender-Side Option! (&push)


  • &images


Example: &webp=jpeg


(no value given)

webp image format


jpeg image format


Changes on Version 22 of VDO.Ninja

The &webp mode has been modified a bit. Main change is that you now enable it by add &webp to the sender's URL, and &codec=webp to the viewer's URL (otherwise, it falls back to normal video mode). No need for &broadcast anymore. (as a reminder, this mode sends the video as a series of low-quality images, rather than a more efficient video stream).

I've removed the toggle in the director's room for this &webp feature, as &chunked mode is replacing its purpose there, but you might still want to use this mode when the viewer-side does not support video playback or hardware acceleration. Specifically, this option lets you bring motion images (aka, crude video) into the streamlabs mobile app, as a browser source, where other forms of video decoding is not supported.

Version 21 and backwards

In Version 21 and backwards it must be used with &broadcast on the viewer side but the director doesn't need to be the designated broadcaster.

The Electron Capture app should work to allow for webp-based broadcasting even if the tab is not visible, as tab throttling is disabled with that application. This is essentially a stream of webp-based images sent over the webRTC data-channels. The quality by default is limited in both frame rate and resolution, as this custom video codec is very inefficient at higher resolutions and frame-rates.

Based on my testing, the webp mode is only efficient if you are keeping the bitrates under like 2 mbps, so the higher qualities make little sense IMO outside of some niche use cases as they use up a lot of bandwidth.

If you have issues with Webp-mode, or find the quality or CPU savings not sufficient, you can check out the &meshcast integration instead. It's a relatively new supported addition to VDO.Ninja.


Default quality is 270p @ 10-fps webp. You can change this with &webpquality to increase resolution and max frame rate.

The default frame rate is a target, but if the connection cannot keep up, a lower frame rate will be used. This ensures the lowest latency possible.

Compression quality is set to 66% in all cases. This seems the best bang for buck.

This mode can work with audio, which uses the normal audio mode for transport. Audio and these motion images stay roughly in sync.

How to embed VDO.Ninja into a site with iFrames

Last updated