Differences Between --preview, --draft, and Final Rendering Modes in video-use
The --preview, --draft, and final rendering modes in video-use trade encoding speed for visual quality through distinct FFmpeg configurations, with draft mode delivering 720p output at CRF 28 for rapid iteration, preview generating 1080p at CRF 22 for quality checks, and final producing 1080p at CRF 20 for production-ready results.
The browser-use/video-use repository provides a flexible video rendering pipeline through helpers/render.py, which supports three mutually exclusive quality settings designed for different stages of the editing workflow. Understanding the specific differences between these rendering modes allows you to balance processing time against output fidelity, whether you are verifying cut points or preparing final deliverables.
Quality and Resolution Specifications
Resolution Scaling
The rendering modes differ fundamentally in output resolution according to the Quality ladder definition in helpers/render.py (lines 166-170). Final and preview modes scale output to 1920 × 1080 (1080p), while draft mode downscales to 1280 × 720 (720p). This reduction in pixel count significantly decreases processing overhead for draft renders.
FFmpeg Encoding Parameters
Each mode configures FFmpeg with distinct Constant Rate Factor (CRF) values and encoding presets that directly impact visual fidelity and file size:
- Final mode (default): Applies CRF 20 with the
fastpreset, delivering the highest visual fidelity with balanced compression - --preview: Uses CRF 22 with the
mediumpreset, offering faster encoding while maintaining full HD resolution - --draft: Employs CRF 28 with the
ultrafastpreset, prioritizing speed over quality at reduced resolution
Higher CRF values indicate lower quality, making draft mode noticeably noisier than preview or final outputs.
Performance Characteristics
The rendering modes exhibit dramatic performance differences based on their encoding complexity:
-
Draft mode: Approximately 1-2× faster than preview mode due to 720p resolution and the
ultrafastpreset, which skips most compression optimizations. This mode generates minimal CPU load and is ideal for rapid cut-point verification. -
Preview mode: Roughly 2-3× faster than final rendering while maintaining 1080p resolution. The
mediumpreset provides a balance between encoding speed and compression efficiency, making it suitable for quality-control reviews before full production renders. -
Final mode: The most CPU-intensive option, applying thorough bitrate control through the
fastpreset and lower CRF value to achieve production-ready quality for publishing.
How to Use Each Rendering Mode
The command-line flags are defined in the argument parser section of helpers/render.py (lines 80-88). These flags are mutually exclusive, and while argparse will accept the last flag if both are supplied, the script is designed to process only one quality setting at a time.
Generate a production-ready final render:
python helpers/render.py my-edl.json -o final.mp4
Create a 1080p preview for quality checks:
python helpers/render.py my-edl.json -o preview.mp4 --preview
Generate a 720p draft for rapid verification:
python helpers/render.py my-edl.json -o draft.mp4 --draft
Implementation Details in render.py
The core rendering logic resides in helpers/render.py, where the Quality ladder comment (lines 166-170) explicitly maps each mode to its specific resolution, preset, and CRF configuration. The argument parser (lines 80-88) defines the CLI interface for selecting these modes, ensuring that users can target the appropriate quality level for their current workflow phase.
Additional documentation in SKILL.md (line 78) references the --preview shortcut, while README.md provides entry-point guidance for the helper scripts and typical usage patterns.
Summary
- Final mode delivers the highest quality (1080p, CRF 20,
fastpreset) but requires the most processing time - Preview mode offers balanced performance (1080p, CRF 22,
mediumpreset) approximately 2-3× faster than final - Draft mode prioritizes speed (720p, CRF 28,
ultrafastpreset) for rapid iteration and cut-point verification - All three modes are defined in
helpers/render.pyand controlled via mutually exclusive CLI flags
Frequently Asked Questions
What is the main difference between --preview and --draft rendering modes?
The primary difference lies in resolution and quality settings. Preview mode maintains 1080p resolution with CRF 22 and the medium preset, producing full-HD output suitable for quality checks. Draft mode reduces output to 720p with CRF 28 and the ultrafast preset, sacrificing visual fidelity for significantly faster encoding speeds when verifying edit continuity.
Can I use --preview and --draft flags together?
While the argparse implementation in helpers/render.py will technically accept the last flag provided if both are supplied, the rendering modes are designed to be mutually exclusive. You should specify only one quality flag per render command to ensure predictable behavior.
Which rendering mode should I use for production video?
You should use final mode (the default) for production deliverables. This mode applies CRF 20 with the fast preset at 1080p resolution, providing the best visual quality and compression efficiency according to the video-use quality ladder defined in the source code.
How does CRF affect video quality in video-use?
CRF (Constant Rate Factor) is a rate-control parameter where lower values indicate higher quality. In video-use, final mode uses CRF 20 for high fidelity, preview uses CRF 22 for acceptable quality, and draft uses CRF 28 where visual artifacts are acceptable in exchange for speed. Each increment of 6 in CRF roughly doubles the file size, making final mode significantly larger but cleaner than draft mode.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →