Skip to main content

Overview

Lawn provides a seamless video upload experience with automatic processing and transcoding powered by Mux. Videos are uploaded to S3 storage and then processed through Mux for optimized streaming delivery.

Upload Process

When you upload a video to Lawn, it goes through several stages:
1

Upload Initiation

The video is created with an initial uploading status and assigned a unique public ID for sharing.
2

File Storage

The video file is uploaded to S3 storage with metadata including file size and content type.
3

Mux Processing

The video is sent to Mux for transcoding with:
  • Adaptive streaming support (max 1080p resolution)
  • 720p playback profile for consistent delivery
  • Public playback policies
  • Automatic thumbnail generation at time 0
4

Ready for Review

Once processing completes, the video status changes to ready and becomes available for playback and review.

Video States

Videos progress through the following states:

Uploading

Initial state when the file is being uploaded to storage

Processing

Mux is transcoding the video for streaming delivery

Ready

Video is fully processed and available for playback

Failed

Upload or processing encountered an error

Supported Features

File Metadata

Each uploaded video tracks:
  • File size and content type
  • Original uploader information
  • Upload timestamp
  • Video duration (after processing)
  • Thumbnail URL (generated by Mux)

Storage Limits

Video uploads are subject to team storage quotas:
  • File size is validated before upload begins
  • Actual uploaded size is reconciled after upload completes
  • Teams must have an active subscription to upload to projects
Storage quota checks happen both at upload initiation and after the file is fully uploaded to ensure accurate billing.

Mux Integration

Lawn uses Mux for professional-grade video infrastructure:

Adaptive Streaming

Videos are transcoded to HLS format for adaptive bitrate streaming

Optimized Delivery

720p playback profile ensures fast loading and smooth playback

Automatic Thumbnails

Video thumbnails are generated automatically from the first frame

Public Playback

Videos can be played back using public or signed playback IDs

Visibility Settings

Videos can be set to different visibility modes:
Public videos can be accessed by anyone with the public link, even without logging in. Comments can be added by authenticated users.
All videos default to public visibility for convenience, following Lawn’s philosophy of good defaults and minimal friction.

Error Handling

If a video upload or processing fails:
  • The video status is set to failed
  • An error message is stored with the video record
  • The Mux asset status is marked as errored
  • Users can retry by uploading the video again

Technical Details

Mux Configuration

Videos are processed with these Mux settings:
  • Playback policies: Public (can be upgraded to signed)
  • Video quality: Basic tier
  • Max resolution: 1080p adaptive streaming
  • Delivery profile: Locked to 720p for consistency
  • MP4 support: Disabled (streaming only)

Performance Optimizations

Lawn follows a performance-first philosophy:
  • Upload metadata is collected upfront to enable optimistic UI updates
  • Video processing happens asynchronously via Mux webhooks
  • Status updates are tracked in real-time
  • Playback URLs are pre-generated for instant playback
Videos are ready for review as soon as Mux completes processing, typically within minutes of upload.

Build docs developers (and LLMs) love