Time-Lapse Camera Setup: FTP Upload & Image URL Configuration
This guide shows you how to connect your IP camera to webcam.io for automated time-lapse creation. Setup takes approximately 5 minutes with FTP upload — no port forwarding required.
Overview
For time-lapse, webcam.io collects still images (JPEG snapshots) from your camera at regular intervals and automatically creates:
- Frame player — Interactive “live” time-lapse view on your website
- Daily videos — MP4/WebM files generated automatically at midnight
- Historical archive — Browse days, weeks, or months of footage
Two Connection Methods
| Method | FTP Upload ⭐ Recommended | Image URL (Pull) |
|---|---|---|
| How it works | Camera pushes images to webcam.io | webcam.io fetches images from camera |
| Port forwarding | ❌ Not needed | ✅ Required |
| Dynamic DNS | ❌ Not needed | ✅ Required |
| Network security | Camera stays behind firewall | Camera exposed to internet |
| Reliability | Better for slow/mobile connections | Depends on camera availability |
| Setup time | ~5 minutes | ~15 minutes |
Use FTP Upload unless you have a specific reason not to. It’s more secure, more reliable, and doesn’t require any router configuration.
Method 1: FTP Upload (Recommended)
With FTP upload, your camera sends images directly to our servers. This is the most reliable method and works even with:
- Slow internet connections
- Mobile/4G/LTE connections
- Firewalled networks
- Dynamic IP addresses
Step 1: Create Webcam in Dashboard
- Log in to webcam.io Dashboard
- Click Webcams → Add New Webcam
- Enter a name for your camera
- Select FTP Upload as the connection method
- Click Save
Step 2: Get Your FTP Credentials
After saving, your unique FTP credentials are sent via email and appear on the same page:
| Field | Example Value |
|---|---|
| FTP Server | ftp.webcam.io |
| Username | user_a1b2c3d4 |
| Password | Xk9mP2qR7s |
| Port | 21 |
Copy these credentials now — you’ll need them for your camera settings. You can also find them later in your webcam settings or in the confirmation email.
Step 3: Configure Your Camera
Now configure your IP camera to upload snapshots via FTP. The exact steps vary by brand — see camera-specific guides below.
General settings to configure:
| Setting | Value | Notes |
|---|---|---|
| FTP Server | ftp.webcam.io |
Or use static IP if DNS doesn’t work |
| Port | 21 |
Standard FTP port |
| Username | Your webcam.io username | From Step 2 |
| Password | Your webcam.io password | From Step 2 |
| Passive Mode | Enabled ✅ | required |
| Upload Path | / or leave empty |
Path doesn’t matter |
| File Format | JPEG / JPG | Only JPEG supported |
Step 4: Set Upload Schedule
Configure your camera to upload images at regular intervals matching your webcam.io settings:
| webcam.io Plan | Snapshots/Day | Recommended Interval |
|---|---|---|
| Free | 96 | 15 minutes |
| LIVE | 1,440 | 1 minute |
| LIVE | 2,880 | 30 seconds |
| LIVE+ | 5,760 | 15 seconds |
Set your camera’s upload interval to match your webcam.io plan. Uploading too frequently will be rate-limited and may block your camera temporarily.
Step 5: Test the Connection
- Use camera’s test button — Most cameras have a “Test” button in FTP settings
- Wait 2–3 minutes — For the first image to upload
- Check webcam.io dashboard — And go to Webcams → Your Camera → Show
- Test successful?
- You should see images appearing in your webcam view. 🎉
- Test button shows “Success” but no images?
- The test only verifies login. You also need to configure the capture schedule (see camera guides below).
Camera-Specific FTP Setup Guides
Hikvision FTP Setup
Step 1: Configure FTP Server
- Log in to camera web interface (
http://CAMERA-IP) - Navigate to: Configuration → Network → Advanced Settings → FTP
- Enter settings:
| Field | Value |
|---|---|
| FTP Server | ftp.webcam.io |
| Port | 21 |
| Username | Your webcam.io username |
| Password | Your webcam.io password |
| Directory Structure | None |
| Upload Picture | ✅ Enabled |
- Click Test → Should show “Testing succeeded”
- Click Save
Step 2: Configure Capture Schedule
- Navigate to: Configuration → Storage → Schedule Settings → Capture
- Click Capture Parameters tab
- Configure Timing section:
- Enable Timing Snapshot: ✅
- Format: JPEG
- Resolution: Main Stream (or as desired)
- Quality: Medium or High
- Interval: Match your plan (e.g., 60000ms = 1 minute)
- Click Capture Schedule tab
- Draw blue bars for when you want uploads (or select “All Day”)
- Click Save
Step 3: Enable FTP Upload for Captures
- Navigate to: Configuration → Event → Basic Event → Motion Detection
- Go to Linkage Method tab
- Check: ✅ Upload to FTP
- Click Save
Hikvision RTSP URL (if needed for testing):
rtsp://admin:password@CAMERA-IP:554/Streaming/Channels/101
Axis FTP Setup
Step 1: Configure FTP Recipient
- Log in to camera web interface
- Navigate to: Settings → System → Events → Recipients
- Click Add Recipient
- Configure:
| Field | Value |
|---|---|
| Name | webcam.io |
| Type | FTP |
| Host | ftp.webcam.io |
| Port | 21 |
| Folder | / |
| Username | Your webcam.io username |
| Password | Your webcam.io password |
| Use Passive Mode | ✅ Yes |
- Click Test → Should show green checkmark
- Click Save
Step 2: Create Scheduled Event
- Navigate to: Settings → System → Events → Rules
- Click Add Rule
- Configure:
- Name:
Time-lapse Upload - Condition: Time → Pulse → Every 1 minute (or your interval)
- Action: Send images through FTP
- Recipient:
webcam.io(from Step 1) - Stream profile: Select resolution
- Pre-buffer: 0, Post-buffer: 0
- Name:
- Click Save
Alternative: Use VAPIX CGI
Axis cameras also support direct image URL:
http://user:pass@CAMERA-IP/axis-cgi/jpg/image.cgi?resolution=1920x1080
Dahua FTP Setup
Step 1: Configure FTP Server
- Log in to camera web interface
- Navigate to: Setup → Network → FTP
- Enter settings:
| Field | Value |
|---|---|
| Enable | ✅ |
| Server Address | ftp.webcam.io |
| Port | 21 |
| Username | Your webcam.io username |
| Password | Your webcam.io password |
| Remote Directory | / |
- Click Test → Should succeed
- Click Save
Step 2: Configure Snapshot Schedule
- Navigate to: Setup → Storage → Schedule → Snapshot
- Select channel
- Set schedule type: Regular
- Configure time periods (blue = active)
- Set interval (e.g., 60 seconds)
- Click Save
Step 3: Set Snapshot Parameters
- Navigate to: Setup → Camera → Encode → Snapshot
- Configure:
- Snapshot Type: Regular
- Image Size: 1920×1080 (or as desired)
- Quality: 5 (high)
- Interval: Match your plan
- Click Save
Reolink FTP Setup
Step 1: Configure FTP Settings
- Open Reolink App or web interface
- Navigate to: Settings → Surveillance → FTP
- Configure:
| Field | Value |
|---|---|
| FTP Server | ftp.webcam.io |
| Port | 21 |
| Username | Your webcam.io username |
| Password | Your webcam.io password |
- Click FTP Test
- Click Save
Step 2: Configure Capture Settings
- Navigate to: Settings → Surveillance → Record → Schedule
- Enable snapshot schedule
- Set interval to match your plan
Some Reolink models have limited FTP scheduling options. Check your model’s capabilities.
Generic FTP Setup
Most IP cameras support FTP upload. Look for these menu locations:
FTP Server Settings:
- Network → FTP
- Advanced → FTP
- Storage → FTP Upload
- Event → Notification → FTP
Capture/Snapshot Schedule:
- Storage → Schedule → Capture
- Event → Snapshot
- Recording → Snapshot Settings
Key Settings:
Server: ftp.webcam.io
Port: 21
Username: [from webcam.io dashboard]
Password: [from webcam.io dashboard]
Passive Mode: Enabled
Path: / (or empty)
Can’t find FTP settings?
- Check camera manual for “FTP” or “Snapshot upload”
- Search:
[your camera model] FTP setup - Try ispyconnect.com for camera-specific info
Method 2: Image URL (Pull)
With Image URL mode, webcam.io fetches the latest image from your camera at regular intervals.
This method requires:
- Port forwarding configured on your router
- Dynamic DNS hostname (unless you have a static IP)
- Camera accessible from the internet
If you’re unsure, use FTP Upload instead.
Step 1: Find Your Camera’s Snapshot URL
Your camera has a URL that returns the current image as JPEG. Common formats:
http://user:pass@CAMERA-IP/ISAPI/Streaming/channels/101/picture
or
http://user:pass@CAMERA-IP/Streaming/Channels/1/picture
http://user:pass@CAMERA-IP/axis-cgi/jpg/image.cgi
With resolution:
http://user:pass@CAMERA-IP/axis-cgi/jpg/image.cgi?resolution=1920x1080
http://user:pass@CAMERA-IP/cgi-bin/snapshot.cgi
http://user:pass@CAMERA-IP/cgi-bin/CGIProxy.fcgi?cmd=snapPicture2&usr=USER&pwd=PASS
http://user:pass@CAMERA-IP/onvif-http/snapshot
- Select your camera brand
- Find your model
- Look for “JPEG” or “Snapshot” URL
Step 2: Set Up Port Forwarding
Forward port 80 (HTTP) or your camera’s web port to your camera’s local IP:
| External Port | Internal IP | Internal Port | Protocol |
|---|---|---|---|
| 80 | 192.168.1.100 | 80 | TCP |
See Live Streaming Setup → Port Forwarding for detailed instructions.
Step 3: Set Up Dynamic DNS
Create a hostname that always points to your router:
- Register at No-IP, DuckDNS, or similar
- Configure DDNS in your router settings
- Your hostname: e.g.,
mywebcam.ddns.net
See Live Streaming Setup → Dynamic DNS for detailed instructions.
Step 4: Build Your External URL
Combine your DDNS hostname with the camera path:
http://username:password@mywebcam.ddns.net/ISAPI/Streaming/channels/101/picture
Test in browser: Paste the URL — you should see the current camera image.
Step 5: Configure in webcam.io
- Log in to webcam.io Dashboard
- Click Webcams → Add New Webcam
- Enter a name for your camera
- Select Image URL as connection method
- Enter your full image URL
- Set capture interval
- Click Save
webcam.io only processes single JPEG images. MJPEG streams (/mjpg/video.mjpg) are not supported for time-lapse.
Configure Time-Lapse Settings
After connecting your camera, configure these additional settings:
Capture Interval
Choose how often to capture images:
| Interval | Images/Day | Best For |
|---|---|---|
| 15 seconds | 5,760 | Fast action, short projects |
| 30 seconds | 2,880 | Construction, weather |
| 1 minute | 1,440 | General time-lapse |
| 5 minutes | 288 | Long-term projects |
| 15 minutes | 96 | Seasonal changes |
Active Hours (Timer)
Limit capture to specific times to save storage and avoid dark/useless images:
- Daytime only: 6:00 AM – 8:00 PM
- Sunrise/Sunset: Automatic based on location (see Timer Settings)
- Business hours: 8:00 AM – 6:00 PM, Mon–Fri
Resolution
Configure in your camera settings:
| Resolution | File Size | Recommended For |
|---|---|---|
| 1920×1080 (1080p) | ~200–400 KB | Standard time-lapse |
| 2560×1440 (2K) | ~400–600 KB | Detail-important scenes |
| 3840×2160 (4K) | ~800 KB–1.5 MB | Professional/archival |
Troubleshooting
FTP Issues
Cause: FTP login works, but capture schedule isn’t configured.
Solution: Configure your camera’s snapshot/capture schedule:
- Hikvision: Configuration → Storage → Schedule Settings → Capture
- Axis: Settings → Events → Rules (create scheduled event)
- Dahua: Setup → Storage → Schedule → Snapshot
Also check that “Upload to FTP” is enabled in linkage/action settings.
Possible causes:
- Wrong server address — Use
ftp.webcam.ioexactly - DNS resolution fails — Try static IP instead
- Firewall blocking outbound FTP — Allow port 21 outbound
- Passive mode disabled — Enable passive mode in camera settings
Test FTP manually:
# From command line (Linux/Mac)
ftp ftp.webcam.io
# Enter username and password when promptedCheck:
- Username matches exactly (case-sensitive)
- Password has no extra spaces
- Credentials haven’t been reset (re-check dashboard)
Note: If you switch connection method in webcam.io settings, FTP credentials are regenerated.
Check:
- File format is JPEG (not PNG, BMP, or video)
- Upload interval matches webcam.io settings
- Timer settings allow current time
- Check Dashboard → Info for error messages
webcam.io rate-limits uploads that exceed your plan’s snapshots/day.
Solution:
- Increase upload interval in camera settings
- Disable motion-triggered uploads
- Only enable timed/scheduled uploads
Image URL Issues
Check:
- URL works in your browser (from outside your network)
- Port forwarding is correct
- DDNS hostname resolves correctly
- Camera credentials in URL are correct
- URL returns JPEG, not HTML or MJPEG stream
Cause: Port forwarding not configured or not working.
Test:
- Use yougetsignal.com/tools/open-ports/ to check if port is open
- Test from mobile phone (with WiFi off) or ask a friend
- Check if ISP blocks port 80 — try a different port
Alternative: Script-Based Upload
For custom setups (Raspberry Pi, Linux servers, etc.), you can upload images via command line:
Using lftp
#!/bin/bash
# Upload image to webcam.io
# Configuration
FTP_USER="user_a1b2c3d4"
FTP_PASS="Xk9mP2qR7s"
FTP_HOST="ftp.webcam.io"
IMAGE_FILE="/path/to/snapshot.jpg"
# Upload
lftp -e "put $IMAGE_FILE; bye" -u $FTP_USER,$FTP_PASS $FTP_HOSTUsing curl
curl -T snapshot.jpg ftp://ftp.webcam.io/ \
--user "user_a1b2c3d4:Xk9mP2qR7s"Capture + Upload (Raspberry Pi)
#!/bin/bash
# Capture image from USB webcam and upload
# Capture
fswebcam -r 1920x1080 --jpeg 85 /tmp/snapshot.jpg
# Upload
lftp -e "put /tmp/snapshot.jpg; bye" \
-u user_a1b2c3d4,Xk9mP2qR7s ftp.webcam.ioSchedule with cron:
# Run every minute
* * * * * /home/pi/upload-webcam.shNext Steps
Your camera is now connected! Continue with:
- Embed Widgets — Add time-lapse player to your website
- Video Clips — Create highlight clips from your footage
- Text Overlays — Add timestamps, branding, weather data
- Timer Settings — Configure active hours and sunrise/sunset
- Backups & Export — Auto-export to YouTube or Dropbox
If you’re stuck, contact us with:
- Your camera make/model
- Connection method (FTP or URL)
- Any error messages from the dashboard
We’re happy to help troubleshoot!