facecast

Live face filters, computed on your device by a small C engine compiled to WebAssembly, and sent as a normal WebRTC video track.

You send · the filtered camera track (preview mirrored)
They receive · decoded from a WebRTC peer connection
Live stats
StatusPress “Start camera”
How it works
  • Each camera frame is copied in its native I420/NV12 layout straight into WebAssembly memory. No RGB conversion is needed.
  • The C engine finds your face with pico on a downscaled luma plane and follows head tilt with rotated cascades. A One-Euro filter smooths the tracking before the effect is applied.
  • The result becomes a new video frame on an ordinary video track, which WebRTC encodes like any camera.
  • The right-hand panel is a real peer connection back to this page, so it shows exactly what a remote viewer would see. Your camera does not leave this device.
  • The DataChannel option sends 44-byte face packets instead of pixels, so a receiver can draw effects itself.