Record screen activity as video files for documentation, testing, and debugging.
Overview
Screen recording enables:
- Recording desktop activity as video
- Configurable frame rate and quality
- Downloading recorded videos
- Monitoring recording status
Desktop automation requires a template with desktop support. Ensure your sandbox has desktop capabilities enabled.
Starting Recording
Start a screen recording:
from hopx_ai import Sandbox
sandbox = Sandbox.create(template="desktop")
# Start recording with default settings
recording = sandbox.desktop.start_recording()
# Start with custom settings
recording = sandbox.desktop.start_recording(
fps=30, # 30 frames per second
format="mp4", # MP4 format
quality="high" # High quality
)
print(f"Recording ID: {recording.recording_id}")
print(f"Status: {recording.status}")
Recording Options
Configure recording settings:
# Low quality, low FPS (smaller file)
recording = sandbox.desktop.start_recording(
fps=10,
format="mp4",
quality="low"
)
# Medium quality (balanced)
recording = sandbox.desktop.start_recording(
fps=15,
format="mp4",
quality="medium"
)
# High quality, high FPS (larger file)
recording = sandbox.desktop.start_recording(
fps=30,
format="mp4",
quality="high"
)
Stopping Recording
Stop a recording and get final information:
# Start recording
recording = sandbox.desktop.start_recording()
# ... perform actions ...
# Stop recording
final_recording = sandbox.desktop.stop_recording(recording.recording_id)
print(f"Duration: {final_recording.duration}s")
print(f"File size: {final_recording.file_size} bytes")
print(f"Format: {final_recording.format}")
Recording Status
Check recording status:
# Get recording status
status = sandbox.desktop.get_recording_status(recording.recording_id)
print(f"Status: {status.status}")
print(f"Duration: {status.duration}s")
print(f"File size: {status.file_size} bytes")
# Check if ready
if status.status == "stopped":
video = sandbox.desktop.download_recording(recording.recording_id)
Downloading Recording
Download the recorded video:
# Download recording
video_bytes = sandbox.desktop.download_recording(recording.recording_id)
# Save to file
with open('recording.mp4', 'wb') as f:
f.write(video_bytes)
print(f"Video saved: {len(video_bytes)} bytes")
Complete Example
Complete recording workflow:
from hopx_ai import Sandbox
import time
sandbox = Sandbox.create(template="desktop")
try:
# Start recording
recording = sandbox.desktop.start_recording(
fps=30,
format="mp4",
quality="high"
)
print(f"Recording started: {recording.recording_id}")
# Perform actions to record
sandbox.desktop.click(400, 300)
time.sleep(1)
sandbox.desktop.type("Hello, World!")
time.sleep(2)
# Stop recording
final = sandbox.desktop.stop_recording(recording.recording_id)
print(f"Recording stopped: {final.duration}s")
# Wait for processing
time.sleep(2)
# Download video
video = sandbox.desktop.download_recording(recording.recording_id)
with open('demo.mp4', 'wb') as f:
f.write(video)
print(f"Video saved: {len(video)} bytes")
finally:
sandbox.kill()
Supported video formats:
- MP4: H.264 encoded MP4 (recommended)
- WebM: WebM format (if supported)
Quality Settings
Quality options:
- low: Lower file size, lower quality
- medium: Balanced quality and file size (default)
- high: Higher quality, larger file size
Frame Rate
Frame rate options:
- 10 fps: Lower file size, choppier video
- 15 fps: Balanced (default)
- 30 fps: Smooth video, larger file size
Use lower FPS and quality for longer recordings to reduce file size. Use higher settings for short, high-quality demos.
Next Steps