Referencia de elementos

Elemento de video

1. Estructura

interface VideoClip extends BaseClip {
  type: "video";
  src: string | { $ref: string };
  source?: {
    start?: number;
    end?: number;
  };
  volume?: number;
  muted?: boolean;
  playbackRate?: number;
}

2. Campos compatibles

src

  • Tipo: string | { $ref: string }
  • Obligatorio: sí
  • Propósito: URL directa del video o referencia a un recurso de video

source.start

  • Tipo: number
  • Obligatorio: no
  • Unidad: segundos
  • Propósito: recortar el punto inicial dentro del medio de origen

source.end

  • Tipo: number
  • Obligatorio: no
  • Unidad: segundos
  • Propósito: recortar el punto final dentro del medio de origen

volume

  • Tipo: number
  • Obligatorio: no
  • Valor por defecto: 1

muted

  • Tipo: boolean
  • Obligatorio: no
  • Valor por defecto: false

playbackRate

  • Tipo: number
  • Obligatorio: no
  • Valor por defecto: 1

3. Comportamiento actual del runtime

  • src admite URL directas
  • src admite $ref
  • source.start funciona
  • source.end funciona
  • muted: true fuerza un volumen efectivo de 0
  • source.end afecta a la duración reproducible real del clip

4. Campos compartidos que funcionan bien con video

Puedes combinar video con seguridad con:

  • transform
  • style
  • zIndex
  • animations
  • keyframes
  • transition

Notas:

  • style.borderRadius funciona
  • style.objectFit funciona con fill / cover / contain
  • style.filters funciona
  • fill: estira al cuadro de destino y puede deformar
  • cover: conserva la relación de aspecto y puede recortar
  • contain: conserva la relación de aspecto y puede dejar bandas vacías

5. Ejemplo

{
  "type": "video",
  "start": 0,
  "duration": 6,
  "src": { "$ref": "hero-video" },
  "source": {
    "start": 2,
    "end": 8
  },
  "muted": true,
  "playbackRate": 1,
  "transform": {
    "x": "50%",
    "y": "50%",
    "width": "100%",
    "height": "100%"
  },
  "style": {
    "objectFit": "cover",
    "filters": [
      { "type": "blur", "value": 32 },
      { "type": "brightness", "value": 0.7 }
    ]
  },
  "transition": {
    "type": "fade",
    "duration": 0.2
  }
}