Médias, caméra et téléversements vidéo
Champs vidéo et capture caméra en direct dans le navigateur, avec change_type('video') et change_type('camera').
Téléversements vidéo
change_type($field, 'video', '', $extra) est un type de champ à part entière, et non un 'file' pointé vers des extensions vidéo - aucun traitement d'image basé sur GD ne s'applique (redimensionnement/recadrage/filigrane/miniatures sont réservés aux images), et il n'y a pas de mode de prévisualisation configurable à choisir : un champ vidéo affiche toujours un lecteur natif <video controls>. La cellule de la liste affiche une petite version en sourdine, image d'affiche uniquement ; cliquer dessus ouvre le lecteur complet, en pleine taille, dans le même habillage modal que la prévisualisation du champ image.
$xcrud->change_type('simple_video', 'video', '', ['not_rename' => true]);
| Option | Type | Défaut | Description |
|---|---|---|---|
not_rename | bool | false | Conserve le nom d'origine du fichier téléversé (toujours assaini contre la traversée de répertoires), même signification que pour 'file'. |
Les vidéos téléversées sont validées par rapport à XcrudConfig::$uploadAllowedVideoExt (par défaut ['mp4', 'webm', 'ogg']) - la même posture de ne-pas-se-fier-uniquement-à-l'extension que 'image' obtient via getimagesize(), bien qu'aucune vérification légère équivalente de signature ne soit disponible pour la vidéo sans dépendance à ffmpeg ; c'est donc la liste blanche d'extensions, combinée à la limite habituelle du projet d'interdire l'exécution de tout ce qui est servi depuis cet emplacement, qui porte ici l'essentiel de la protection.
Capture caméra
change_type($field, 'camera', '', $extra) capture une photo directement depuis la caméra d'un appareil via l'API getUserMedia() du navigateur - un aperçu en direct plus un bouton Capturer à côté de la zone de dépôt habituelle, sans avoir besoin de sélecteur de fichier. Utile sur mobile/tablette, où prendre une photo directement est plus rapide que de naviguer dans un explorateur de fichiers.
$xcrud->change_type('camera_photo', 'camera', '', ['width' => 800, 'height' => 800]);
Tout ce qui suit la capture - stockage, options de redimensionnement/recadrage/filigrane, miniature dans la liste, clic pour prévisualiser - est identique à un champ 'image' classique ; 'camera' partage les mêmes options de traitement de type image (width/height/crop/manual_crop/ratio/watermark/watermark_position/thumbs) documentées sur la page Téléversements de fichiers et d'images - seul le côté capture diffère.
Sur un navigateur ou un contexte sans accès caméra du tout (un navigateur ancien, une permission refusée, une origine non-HTTPS/non-localhost - l'accès caméra nécessite un contexte sécurisé), le champ revient au sélecteur de fichier normal plutôt que de mener à une impasse.
Configuration de téléversement partagée
XcrudConfig::$uploadAllowedVideoExt (par défaut ['mp4', 'webm', 'ogg']) régit quelles extensions vidéo sont acceptées à la fois par 'video' et, le cas échéant, par toute vidéo capturée via 'camera'. $uploadDir et $uploadMaxSize s'appliquent ici de la même façon que pour les champs fichier/image - voir la Référence XcrudConfig.