Disclaimer: This is an independent resource site. Not affiliated with the Voron project or its development team.

Voron Timelapse Guide — Moonraker Camera and Video Setup

Klipper Guide Mod

There's nothing quite like watching a timelapse of your Voron building a complex part layer by layer. This guide covers everything you need: camera hardware selection, mounting options for each Voron model, Moonraker webcam configuration, the timelapse plugin setup, G-code integration for automatic photo capture, and storage management. Last updated: May 2025.

Camera Hardware

Raspberry Pi Camera Module (v2 / v3)

USB Webcam (Logitech C270 / C920)

Arducam (Adjustable Focus)

Camera Mounting by Voron Model

V2.4 — Top Panel Mount

The V2.4's enclosed design makes top-down mounting the standard. Print a camera mount that attaches to the top panel extrusions or the top acrylic panel. The camera looks down at the bed from above. This gives a clear view of the entire build plate and is ideal for timelapses. Use a wide-angle lens (90-120 degrees FOV) to capture the full 250/300/350mm bed. The Pi Camera Module v2's 62-degree FOV is too narrow for a 350mm V2.4 — use Arducam's wide-angle version or a USB webcam with wider FOV.

V0.2 — Mini Tripod Mount

The V0.2's compact size makes it easy to position a camera externally. A small desk tripod or 3D-printed arm mounts a camera outside the enclosure, looking through a front or side panel. Alternatively, print a mount that clips onto the top extrusion. The smaller 120mm bed is easy to capture with even a 60-degree FOV camera.

Trident — Z-Chain Mount

The Trident's fixed bed and moving gantry allow for creative camera mounting. A popular approach is attaching the camera to the Z-chain mount on the rear, angled slightly downward toward the bed. This gives a perspective view that shows both the bed and the moving toolhead. Another option is a corner bracket mount on the front left or right extrusion.

Moonraker Webcam Configuration

Moonraker handles webcam streaming through its [webcam] section in moonraker.conf. Here's a complete configuration:

[webcam my_camera]
# Video device
device: /dev/video0

# Camera name shown in frontend
name: Voron Print Cam

# Stream settings
stream_type: h264
resolution: 1920x1080
max_fps: 30

# Image rotation/flip
# rotation: 0, 90, 180, 270
rotation: 0
# horizontal_flip: false
# vertical_flip: false

# Snapshot endpoint
snapshot_url: http://127.0.0.1:8080/?action=snapshot
stream_url: http://127.0.0.1:8080/?action=stream

# Target fps for timelapse captures
target_fps: 15

Key settings:

Moonraker Timelapse Plugin

Moonraker includes a built-in timelapse plugin. It captures a still image at specific G-code events (typically after each layer) and compiles them into a video after the print finishes.

Method 1: Moonraker Built-in Timelapse

Enable the timelapse plugin in moonraker.conf:

[timelapse]
# Enable the plugin
enabled: True

# Camera to use for snapshots
camera: my_camera

# Image format (png or jpg)
image_format: jpg

# Image quality (0-100, only for jpg)
image_quality: 90

# Output video format
output: mp4

# Frame rate of the final timelapse video
framerate: 30

# Whether to delete source images after video is created
clean_images: True

# Add timestamp overlay
# Example: {year}-{month}-{day} {hour}:{minute}:{second}
# timestamp: "%Y-%m-%d %H:%M:%S"

Then add G-code hooks in your print_start and print_end macros, or use OrcaSlicer's built-in timelapse G-code:

; In start G-code:
TIMELAPSE_TAKE_FRAME

; In end G-code:
TIMELAPSE_RENDER

The plugin hooks into LAYER_CHANGE events. On each layer change, it takes a photo. After the print finishes, it renders all photos into an MP4 video.

Method 2: External Timelapse with ffmpeg

For greater control (and better performance), use a gcode_shell_command that calls ffmpeg directly:

[gcode_shell_command timelapse_capture]
command: ffmpeg -y -i /dev/video0 -vframes 1 /home/pi/timelapse/$(date +%Y%m%d_%H%M%S).jpg
timeout: 5.
verbose: False
[gcode_shell_command timelapse_render]
command: ffmpeg -r 30 -pattern_type glob -i '/home/pi/timelapse/*.jpg' -c:v libx264 -pix_fmt yuv420p /home/pi/timelapse/$(date +%Y%m%d_%H%M%S).mp4
timeout: 120.
verbose: True

Call these from your printer.cfg macros:

[gcode_macro TIMELAPSE_CAPTURE]
gcode:
  RUN_SHELL_COMMAND CMD=timelapse_capture

[gcode_macro TIMELAPSE_RENDER]
gcode:
  RUN_SHELL_COMMAND CMD=timelapse_render

G-Code for Timelapse: HYPERLAPSE vs TIMELAPSE

Hyperlapse and Timelapse differ in how the camera captures images:

ModeCapture MethodBest For
Timelapse Takes photo at each layer change. Toolhead parks at a defined position. Layer-by-layer capture shows smooth print growth. Detailed prints where you want to see each layer being added
Hyperlapse Takes photos at time intervals (e.g., every 30 seconds) regardless of layer changes. Toolhead may be in motion during capture. Long prints where you want to compress hours into minutes, less detail per layer

For Voron builds, timelapse mode is preferred. The toolhead parks at a defined position (e.g., the front-left corner) before each photo, ensuring the bed is visible without obstruction. Add this to your PRINT_START macro:

; Park position for timelapse photos
[gcode_macro _TOOLHEAD_PARK]
gcode:
  SAVE_GCODE_STATE NAME=PARK_STATE
  G90
  G1 X10 Y10 F9000  ; Park at front-left corner
  G1 Z20 F600       ; Raise Z slightly
  RESTORE_GCODE_STATE NAME=PARK_STATE

Settings: Frame Rate and Resolution

Storing Timelapses: Local vs Remote

Local Storage

By default, timelapse videos are stored on the Pi's SD card or external storage. Path: ~/timelapse/ or ~/printer_data/timelapse/. On a 32GB card, you can store roughly 50-100 timelapse videos (30-second clips at 1080p). Older videos should be regularly cleaned up.

Remote Storage (FTP/SFTP)

For longer-term storage, configure automatic upload to a NAS or FTP server:

[gcode_shell_command upload_timelapse]
command: curl -T /home/pi/timelapse/latest.mp4 ftp://user:pass@nas.local/timelapse/
timeout: 30.
verbose: False

Or use rsync for sync rather than upload:

rsync -avz /home/pi/timelapse/ user@nas.local:/volume1/timelapse/

Mobileraker Timelapse Viewer

Mobileraker (a mobile companion app for Klipper/Moonraker) has a built-in timelapse viewer on iOS and Android. After a timelapse is rendered, it appears in Mobileraker's media gallery alongside your print history. You can view, share, or delete timelapses directly from your phone without touching the Pi.

Troubleshooting

IssueSolution
No camera found Run ls /dev/video* to check if the camera is detected. For CSI cameras, verify camera_auto_detect=1 in /boot/firmware/config.txt. For USB cameras, check lsusb output. Reboot after connecting the camera.
Timelapse not starting Check that [timelapse] is configured in moonraker.conf and Moonraker was restarted. Verify the G-code hooks (TIMELAPSE_TAKE_FRAME) are being called. Check moonraker.log for errors: grep -i timelapse ~/printer_data/logs/moonraker.log.
Jerky movement during photo The toolhead is moving during capture. Ensure your park position G-code runs before each frame. Add a G4 P500 (pause 500ms) before the capture to let vibrations settle. Reduce acceleration in the park position move.
Timelapse video is choppy Too few frames. Increase capture frequency (every layer instead of every N layers). Or increase the output framerate to 30fps. If using external ffmpeg, lower the -r output framerate to compensate for fewer frames.
Blurry or out-of-focus timelapse Adjust camera focus. USB webcams with autofocus (like C920) can struggle with the close range. Disable autofocus: v4l2-ctl -d /dev/video0 -c focus_automatic_continuous=0 -c focus_absolute=250. For Arducam, manually twist the focus ring while watching the live stream.
Pi overheating from encoding Timelapse rendering (especially at 1080p) is CPU-intensive on a Pi 4. Use hardware encoding: -c:v h264_v4l2m2m on Pi 4 or -c:v h264_v4l2m2m on Pi 5 for much lower CPU usage. Or install a heatsink/fan on the Pi.

A well-tuned timelapse setup is one of the most satisfying parts of owning a Voron. It turns every print into a shareable showcase of your build's precision and speed. Start with a simple setup (USB camera + built-in plugin) and upgrade as your needs grow.

🚨

Voron LDO 商标 · 域名 打包出售

Trademark & domains sold as one package

Voron LDO 商标 (中国区 · China)
voron.cn
voronldo.com
ldovoron.com

有意者请联系 · Contact us:

📧 346290742@qq.com
📞 +86 13522926174