Skip to main content
Glama
schema.py3.67 kB
"""VideoContent component schema and Pydantic models.""" from typing import Literal from pydantic import BaseModel, Field from ...base import ComponentMetadata class VideoContentProps(BaseModel): """Properties for VideoContent component.""" src: str = Field(description="Video source URL or path to static file (e.g. 'video.mp4')") volume: float = Field(default=1.0, description="Video volume (0.0 to 1.0)", ge=0.0, le=1.0) playbackRate: float = Field( default=1.0, description="Video playback speed multiplier", gt=0.0, le=4.0 ) fit: Literal["contain", "cover", "fill"] = Field( default="cover", description="How video fits in container" ) muted: bool = Field(default=False, description="Whether video should be muted") startFrom: int = Field(default=0, description="Frame offset to start video playback from", ge=0) loop: bool = Field(default=False, description="Whether to loop the video continuously") start_time: float = Field(description="When to show (seconds)") duration: float = Field(default=5.0, description="Total duration (seconds)") class Config: extra = "forbid" # Component metadata METADATA = ComponentMetadata( name="VideoContent", description="Video player component for playing video files", category="content", ) # MCP schema (for backward compatibility with MCP tools list) MCP_SCHEMA = { "description": "Video player component that plays video files. Supports local files (via staticFile) and remote URLs. Perfect for adding video content to layouts.", "category": "content", "tags": ["video", "player", "media", "content", "playback"], "schema": { "src": { "type": "string", "required": True, "description": "Video source URL or path to static file (e.g. 'video.mp4')", }, "volume": { "type": "number", "default": 1.0, "description": "Video volume (0.0 to 1.0)", }, "playback_rate": { "type": "number", "default": 1.0, "description": "Video playback speed (0.5 = half speed, 2.0 = double speed)", }, "fit": { "type": "string", "default": "cover", "values": ["contain", "cover", "fill"], "description": "How video fits in container", }, "muted": { "type": "boolean", "default": False, "description": "Whether video should be muted", }, "start_from": { "type": "integer", "default": 0, "description": "Frame offset to start video from", }, "loop": { "type": "boolean", "default": False, "description": "Whether to loop the video continuously", }, "start_time": { "type": "float", "required": True, "description": "When to show (seconds)", }, "duration": { "type": "float", "default": 5.0, "description": "Total duration (seconds)", }, }, "example": { "src": "video.mp4", "volume": 1.0, "playback_rate": 1.0, "fit": "cover", "muted": False, "loop": False, "start_time": 0.0, "duration": 5.0, }, "use_cases": [ "Video backgrounds for layouts", "Product demonstration videos", "Tutorial content", "Marketing video content", "Presentation video clips", ], "design_tokens_used": { "colors": ["background.dark"], }, }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrishayuk/chuk-mcp-remotion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server