Professional multi-camera video recording for Unity with AI-powered drone cinematography, real-time transitions, and FFmpeg encoding.
AA → Movie Recorder or press Ctrl+Shift+R
ffmpeg.exe is auto-detected. If using a custom path, click Browse and select your FFmpeg binary. A green badge confirms validity.
Recordable Camera component to any scene camera via:Add Component → AA → Movie Recorder → Recordable CameraRecordings/ folder inside your project.
| Mode | Label | Behavior |
|---|---|---|
| Continuous | C | Each camera records its own independent video file simultaneously. |
| Sequential | S | All sequential cameras share a single output. Switch between them with transitions. |
Camera IDs and priorities are auto-managed. If two cameras share a name, the system auto-deduplicates (e.g., Drone0 → Drone0_1). Sequential priority follows registration order.
| Setting | Options | Default |
|---|---|---|
| Resolution | 720p, 1080p, 4K, Custom | 1080p |
| Frame Rate | 24, 30, 60 | 30 |
| Quality | Low, Medium, High, Ultra | High |
| Anti-Aliasing | Off, 2x, 4x, 8x | 4x |
Audio is captured from Unity's internal audio mixer via AudioRenderer. Bitrate options: 128k, 192k, 256k, 320k.
AudioRenderer behavior. Audio data is still captured to the output file.
Videos are saved as MP4 (H.264) to the configured output directory. The default is Assets/Recordings/.
The Drone Camera is an intelligent autonomous cinematographer. Attach it to any camera with a Recordable Camera component.
Add Component → AA → Movie Recorder → Drone Camera
| Mode | Trigger | Shot |
|---|---|---|
| Orbit | Target stationary | Slow 360° orbit around target |
| Chase | Target speed < 8 m/s | Behind + elevated follow |
| Side | 8–18 m/s | Lateral parallel tracking |
| Low Angle | 18–30 m/s | Dramatic low angle, slightly ahead |
| High Wide | 30+ m/s | Elevated wide chase view |
| Scenic | Target circling/drifting | Wide anchored shot from distance |
| Property | Range | Description |
|---|---|---|
| Target | Transform | The subject to follow and frame |
| Base Damping | 0.02–0.3 | Movement smoothness (lower = smoother) |
| Rotation Smoothness | 1–6 | How quickly rotation catches up |
| Distance | 6–35 | Follow distance from target |
| Height | 4–20 | Altitude above target |
| Orbit Radius/Speed | — | Orbit mode parameters |
| Enable Hover | bool | Subtle hover animation when idle |
| Min Altitude | 3–12 | Minimum clearance above terrain |
| Obstacle Avoidance | — | Sensor range, ray count, strength |
The drone tracks a 5-second position history to calculate the target's Roaming Radius. If the target moves but stays within a confined area (drifting, circling), the drone switches to Scenic mode — pulling back for a cinematic wide shot instead of following closely.
7 built-in transitions for sequential camera switching:
| Transition | Description |
|---|---|
| Cut | Instant switch (0s) |
| Crossfade | Smooth alpha blend between cameras |
| Wipe | Horizontal wipe reveal |
| Fade to Black | Fade out → fade in |
| Slide | Push-slide animation |
| Zoom | Zoom-through transition |
| Dissolve | Noise-based dissolve effect |
Transition type and duration can be configured in the Transition card — available at all times (not just during recording).
The auto-switch system uses predictive sustained scoring to intelligently switch between sequential cameras.
| Factor | Weight | Gate? |
|---|---|---|
| In Viewport | — | ✅ Not visible → score 0 |
| Not Occluded | — | ✅ Blocked → score 5 |
| Distance (>35m) | — | ✅ Too far → score 0 |
| Distance (3–18m ideal) | 40% | — |
| Framing (centering) | 35% | — |
| Angle (alignment) | 25% | — |
If the active camera's score drops to ≤10 (target not visible) for 0.5 seconds, the system bypasses hold time and switches immediately.
// Access the singleton
var session = RecorderSession.Instance;
// Start / Stop
session.StartRecording(settings);
session.StopRecording();
// State
RecorderState state = session.State; // Idle, Recording, Paused, Stopping
// Get all registered cameras
var cameras = CameraRegistry.GetAll();
// Get by mode
var continuous = CameraRegistry.GetContinuous();
var sequential = CameraRegistry.GetSequential();
// Lookup
var cam = CameraRegistry.GetByName("DroneCamera");
// Access drone state at runtime
DroneCamera drone = GetComponent<DroneCamera>();
DroneShotMode mode = drone.CurrentMode;
float speed = drone.TargetSpeed;
float roam = drone.RoamingRadius;
// Configure via SequentialMode
sequentialMode.ConfigureAutoSwitch(
enabled: true,
target: player.transform,
threshold: 30f, // Sensitivity (higher = more switches)
minHold: 1.5f // Minimum seconds on each camera
);
Unity's AudioRenderer mutes game audio while capturing. This is expected. The audio IS recorded to the file — just not audible in-editor during recording.
Ensure ffmpeg.exe exists in the package root (AA Movie Recorder/ffmpeg.exe). The system auto-detects it. For custom installations, use the Browse button.
Preview renders via Camera.Render() every editor tick. Heavy scenes may cause slowdown. Preview is cosmetic — actual recording quality is unaffected.
The recorder is currently designed for Editor use only. Runtime recording requires FFmpeg bundled with your build and is not officially supported.
Adjust MinModeHold (default 8s) in the DroneCamera inspector. Higher values = longer sustained shots before mode change.