Camera movement is what separates a flat, static video from something that feels cinematic. A dolly zoom creates tension. An orbital shot adds grandeur. A one-take tracking shot builds immersion.
Traditionally, achieving these requires expensive equipment — gimbals, cranes, drones, Steadicams. Seedance 2.0 eliminates the hardware. Upload a reference video with the camera movement you want, tag it with @Video, and the API generates new content replicating the exact camera language.
The Key Concept: Show, Don't Tell
Most AI video generators rely on text prompts for camera control — "dolly in" or "pan left." Results are inconsistent.
Seedance 2.0 takes a different approach: upload a video that demonstrates the movement. The model analyzes and reproduces:
- Camera trajectory — tracking paths, orbital arcs, crane movements
- Speed and acceleration — ease-in, ease-out, smooth glides
- Focal behavior — rack focus timing, depth-of-field shifts
- Compositional rhythm — how long each framing holds
Example: One-Take Tracking Shot
import requests
import time
API_KEY = "YOUR_EVOLINK_API_KEY"
BASE = "https://api.evolink.ai/v1"
response = requests.post(
f"{BASE}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "seedance-2-0-t2v",
"prompt": "A continuous tracking shot following a woman walking through a neon-lit Tokyo alley at night. @Video1 for camera movement reference. Rain-slicked streets, reflections, shallow depth of field.",
"video_urls": ["https://example.com/tracking-reference.mp4"],
"duration": 10,
"quality": "1080p"
}
)
task = response.json()
print(f"Task ID: {task['id']}")
Example: Hitchcock Zoom (Dolly Zoom)
response = requests.post(
f"{BASE}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "seedance-2-0-t2v",
"prompt": "A man standing alone in an endless hallway. @Video1 for camera movement reference. The background stretches away while his face stays the same size. Dramatic lighting.",
"video_urls": ["https://example.com/dolly-zoom-ref.mp4"],
"duration": 8,
"quality": "1080p"
}
)
Example: Orbital Camera (360° Shot)
response = requests.post(
f"{BASE}/videos/generations",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"model": "seedance-2-0-t2v",
"prompt": "A glowing crystal sculpture on a marble pedestal. @Video1 for camera movement reference. The camera orbits 360 degrees. Volumetric light rays.",
"video_urls": ["https://example.com/orbital-ref.mp4"],
"duration": 10,
"quality": "1080p"
}
)
Why This Matters
No other AI video API offers reference-based camera control:
- Sora 2: Text-only camera prompts
- Kling 3.0: Basic camera keywords
- Veo 3.1: Limited camera vocabulary
Seedance 2.0 lets you take a camera movement from any source — Hollywood film, drone footage, your own gimbal clip — and apply it to entirely new content.
Read the Full Tutorial
This overview covers the basics. The complete tutorial includes:
- 3 production-ready Python scripts with polling and error handling
- Reference video selection tips
- Multi-reference combinations (camera + character + audio)
- Troubleshooting common issues
👉 Read the full camera movement tutorial
EvoLink — unified AI API access. One key for Seedance 2.0, Sora 2, Veo 3.1, and 40+ AI models.
Top comments (0)