/

Multimedia, cámara y subida de vídeo

Campos de vídeo y captura de cámara en vivo desde el navegador, con change_type('video') y change_type('camera').

Subida de vídeos

change_type($field, 'video', '', $extra) es su propio tipo de campo, no un 'file' apuntando a extensiones de vídeo - no se aplica ningún procesamiento de imagen basado en GD (redimensionado/recorte/marca de agua/miniaturas son todos exclusivos de imagen), y no hay ningún modo de vista previa configurable entre el que elegir: un campo de vídeo siempre muestra un reproductor nativo <video controls>. La celda de la lista muestra una versión pequeña, muda y solo con fotograma de portada; al hacer clic se abre el reproductor completo, a tamaño completo, en el mismo marco de ventana modal que usa la propia vista previa del campo de imagen.

$xcrud->change_type('simple_video', 'video', '', ['not_rename' => true]);
OpciónTipoPredeterminadoDescripción
not_renameboolfalseConserva el nombre original del archivo subido (aún saneado contra traversal de rutas), el mismo significado que en 'file'.

Los vídeos subidos se validan contra XcrudConfig::$uploadAllowedVideoExt (por defecto ['mp4', 'webm', 'ogg']) - la misma postura de no confiar solo en la extensión que 'image' obtiene de getimagesize(), aunque el vídeo no tiene ninguna comprobación de firma ligera equivalente disponible sin una dependencia de ffmpeg, así que aquí el peso lo llevan la lista blanca de extensiones más el límite habitual del proyecto de no-poder-ejecutar-nada-servido-desde-aquí.

Captura por cámara

change_type($field, 'camera', '', $extra) captura una foto directamente desde la cámara de un dispositivo mediante la API getUserMedia() del navegador - una vista previa en vivo más un botón Capturar junto a la zona de arrastre habitual, sin necesidad de selector de archivos. Útil en móvil/tablet, donde tomar una foto directamente es más rápido que navegar por un explorador de archivos.

$xcrud->change_type('camera_photo', 'camera', '', ['width' => 800, 'height' => 800]);

Todo lo que ocurre después de la captura - almacenamiento, opciones de redimensionado/recorte/marca de agua, la miniatura en la lista, la vista previa al hacer clic - es idéntico a un campo 'image' normal; 'camera' comparte las mismas opciones de procesamiento de tipo imagen (width/height/crop/manual_crop/ratio/watermark/watermark_position/thumbs) documentadas en la página Subida de archivos e imágenes - solo difiere el lado de la captura.

En un navegador o contexto sin ningún acceso a la cámara (un navegador antiguo, un permiso denegado, un origen que no sea HTTPS/localhost - el acceso a la cámara necesita un contexto seguro), el campo recurre al selector de archivos normal en lugar de un callejón sin salida.

Configuración de subida compartida

XcrudConfig::$uploadAllowedVideoExt (por defecto ['mp4', 'webm', 'ogg']) gobierna qué extensiones de vídeo se aceptan tanto en 'video' como, cuando corresponda, en cualquier vídeo capturado mediante 'camera'. $uploadDir y $uploadMaxSize se aplican aquí de la misma forma que en los campos de archivo/imagen - consulta la Referencia de XcrudConfig.