Random Video Generator

Generates a random set of shapes (circles, rectangles, triangles) with independent positions, velocities, sizes, and colors, animates them bouncing around a canvas for a few seconds, and records that animation with canvas.captureStream() and MediaRecorder into a downloadable WebM video file. A free online tool from Staaarter, right in your browser.

Runs locallyUpdated 2026-07-26

Overview

Introduction

This tool animates a handful of randomly colored, randomly moving shapes on a canvas, then records that live animation into a real, downloadable video file.

It's a hands-on demonstration of turning canvas drawing into video: the same technique used by in-browser screen recorders and canvas-based video export features.

What Is Random Video Generator?

A generator that picks a random scene, a set of circles, rectangles, and triangles with independent positions, velocities, sizes, and colors, then animates and records it.

The animation itself is simple: each shape moves in a straight line at its assigned velocity and bounces off the canvas edges, for as long as the chosen duration.

How Random Video Generator Works

A pure function first picks the random scene: for each shape, a type, starting position, velocity, size, and color, entirely independent of the canvas rendering itself.

The client component then runs a requestAnimationFrame loop that redraws every shape's new position each frame based on elapsed time, bouncing velocity off the canvas edges.

While that loop runs, canvas.captureStream() exposes the canvas as a live MediaStream, and a MediaRecorder captures that stream into WebM video chunks, which are combined into a downloadable Blob once recording stops.

When To Use Random Video Generator

Use it to see a working example of canvas-to-video capture, or to quickly generate a short, random animated clip for a demo or placeholder asset.

It's a good fit for prototyping or testing any feature built around recording canvas animations, rather than for producing polished final video content.

Features

Advantages

  • Demonstrates a complete canvas-to-video pipeline entirely client-side, no server-side video encoding involved.
  • Shape count, duration, and canvas size are all adjustable.
  • Every regeneration produces a genuinely different set of shapes and motion.

Limitations

  • Browser support for canvas.captureStream() and MediaRecorder's WebM output varies significantly; this feature is primarily reliable in Chromium-based browsers (Chrome, Edge) and may not work at all in some other browsers.
  • Motion is simple straight-line movement with edge bouncing, there's no physics, collision between shapes, or easing.
  • Duration is capped at 8 seconds to keep recording and file size manageable in the browser.

Examples

10 shapes for 4 seconds

Input

(no input; generated from settings)

Output

A ~4-second WebM video of 10 randomly colored circles, rectangles, and triangles bouncing around a 480x360 canvas

Each shape's motion and appearance is chosen independently at random.

3 large shapes for 2 seconds

Input

(no input; generated from settings)

Output

A short, minimal 2-second WebM clip with just 3 shapes

A lower shape count produces a sparser, calmer animation.

Best Practices & Notes

Best Practices

  • Test in a Chromium-based browser first if the recording doesn't seem to start, since MediaRecorder support is the main compatibility risk here.
  • Keep shape count and duration modest for faster recording and smaller file sizes.

Developer Notes

The shape parameters (position, velocity, size, color, type) are generated by a pure, DOM-free function so that part is directly unit-testable; the canvas animation loop and MediaRecorder capture necessarily live in the client component since neither requestAnimationFrame-driven canvas painting nor MediaRecorder exist outside a real browser.

Random Video Generator Use Cases

  • Demonstrating canvas.captureStream() + MediaRecorder video capture
  • Generating a quick random animated placeholder video clip
  • Testing a video upload or playback feature with freshly generated WebM content

Common Mistakes

  • Assuming this will work identically in every browser — MediaRecorder codec/container support genuinely differs, check content.limitations before relying on it.
  • Expecting smooth physics or collisions between shapes; motion here is simple constant-velocity movement with edge bouncing only.

Tips

  • If recording fails silently, check your browser's MediaRecorder support for WebM before assuming the tool is broken.
  • Lower the shape count if the animation looks too cluttered at your chosen canvas size.

References

Frequently Asked Questions