# Bibliothèque `video` (Lecteur vidéo) — v1.0.0

Source : https://docs.berkios.online/modules/video/ · Section : Modules · Documentation officielle BERKIOS (https://docs.berkios.online)


24 commandes pour BERKIOS CODE qui pilotent un **lecteur vidéo** : ouvrir un fichier ou une adresse, lecture/pause, sauts, volume, vitesse, boucle, plein écran et lecture de l'état.
Chaque commande existe en **français, anglais, espagnol et swahili** ; la forme qualifiée `video.<nom>` fonctionne aussi.
Permission demandée : `video`.

## Bibliothèque de macros et lecteur natif : deux responsabilités distinctes
Comme toute bibliothèque BERKIOS (format `berkios-library/1`), `video` est un ensemble de **macros** : elle combine des commandes intégrées et ne lit aucun média à elle seule.
Le travail est fait par deux éléments du moteur, livrés avec BERKIOS GRAPHIC :

- le composant **Lecteur vidéo** (`type: "video"`, catégorie *Affichage & contenu*) qui affiche l'image ;
- la commande intégrée **`video`** de BERKIOS CODE (`video jouer`, `video position 1:30`, `video vitesse +0.5`…) et les variables `{video.temps}`, `{video.duree}`, `{video.progression}`, `{video.etat}`, `{video.volume}`, `{video.vitesse}`, `{video.titre}`, `{video.largeur}`, `{video.hauteur}`, `{video.muet}`, `{video.boucle}`, `{video.erreur}`, `{video.source}`.

Cette bibliothèque apporte des noms courts et lisibles par-dessus ; tout ce qu'elle fait s'écrit aussi directement avec `video …`.

## Moteurs qui jouent la vidéo
| Moteur | Lecture | Remarque |
|---|---|---|
| Studio, aperçu et Berkios Engine (Electron) | oui (`<video>` du navigateur) | MP4 (H.264), WebM, Ogg selon le navigateur |
| Application Flutter générée | oui (`media_kit`) | Windows, macOS, Linux, Android, iOS ; `flutter analyze` à lancer sur le projet généré |
| Moteur de protocole BRP | l'état est suivi par le moteur, le média est joué par le client | le client Flutter BRP de référence n'affiche pas encore la vidéo |
| Site web statique | balise `<video controls>` | le site n'exécute pas BERKIOS CODE |

## Conventions
Une **source** est le nom d'un composant (Lecteur vidéo, sélecteur de fichier, champ de texte) ou une adresse `https://…`.
Une **position** s'écrit en secondes (`90`), `m:ss` (`1:30`), `h:mm:ss` ou pourcentage (`50%`). Un **volume** va de 0 à 100 (`+10` / `-10` en relatif). Une **vitesse** va de 0,25 à 4.
Les sources `javascript:`, `file:` et les adresses avec identifiants sont refusées.

## Commandes
| Commande (fr · en · es · sw) | Syntaxe | Effet |
|---|---|---|
| `ouvrir-video` · `open-video` · `abrir-video` · `fungua-video` | `ouvrir-video "lecteur"` | Choisit la vidéo (composant Lecteur vidéo, sélecteur de fichier ou adresse https) et la lance aussitôt. |
| `charger-video` · `load-video` · `cargar-video` · `pakia-video` | `charger-video "choix_fichier"` | Choisit la vidéo sans la lancer (composant Lecteur vidéo, sélecteur de fichier ou adresse https). |
| `lecture-pause-video` · `play-pause-video` · `reproducir-pausar-video` · `cheza-simamisha-video` | `lecture-pause-video` | Lance la vidéo si elle est en pause, la met en pause si elle est en lecture. |
| `arreter-video` · `stop-video` · `detener-video` · `acha-video` | `arreter-video` | Arrête la vidéo et revient au début. |
| `avancer-video` · `forward-video` · `adelantar-video` · `songa-video` | `avancer-video 30` | Avance de N secondes. |
| `reculer-video` · `rewind-video` · `retroceder-video` · `rudi-nyuma-video` | `reculer-video 30` | Recule de N secondes. |
| `avancer-10s-video` · `forward-10s-video` · `adelantar-10s-video` · `songa-10s-video` | `avancer-10s-video` | Avance de 10 secondes. |
| `reculer-10s-video` · `rewind-10s-video` · `retroceder-10s-video` · `rudi-10s-video` | `reculer-10s-video` | Recule de 10 secondes. |
| `debut-video` · `start-video` · `inicio-video` · `mwanzo-video` | `debut-video` | Revient au début sans arrêter la lecture. |
| `fin-video` · `end-video` · `final-video` · `mwisho-video` | `fin-video` | Saute à la fin de la vidéo. |
| `aller-a-video` · `seek-video` · `ir-a-video` · `nenda-video` | `aller-a-video "1:30"` | Va à une position : secondes (90), m:ss (1:30), h:mm:ss ou pourcentage (50%). |
| `volume-video` · `set-volume-video` · `volumen-video` · `sauti-video` | `volume-video 70` | Règle le volume de 0 à 100 (+10 ou -10 pour un réglage relatif). |
| `volume-plus-video` · `volume-up-video` · `subir-volumen-video` · `ongeza-sauti-video` | `volume-plus-video` | Augmente le volume de 10. |
| `volume-moins-video` · `volume-down-video` · `bajar-volumen-video` · `punguza-sauti-video` | `volume-moins-video` | Baisse le volume de 10. |
| `muet-video` · `mute-video` · `silenciar-video` · `nyamazisha-video` | `muet-video` | Coupe ou rétablit le son. |
| `vitesse-video` · `speed-video` · `velocidad-video` · `kasi-video` | `vitesse-video 1.5` | Règle la vitesse de lecture de 0,25 à 4 (+0.25 ou -0.25 pour un réglage relatif). |
| `plus-rapide-video` · `faster-video` · `mas-rapido-video` · `haraka-zaidi-video` | `plus-rapide-video` | Accélère la lecture de 0,25. |
| `plus-lent-video` · `slower-video` · `mas-lento-video` · `polepole-zaidi-video` | `plus-lent-video` | Ralentit la lecture de 0,25. |
| `vitesse-normale-video` · `normal-speed-video` · `velocidad-normal-video` · `kasi-ya-kawaida-video` | `vitesse-normale-video` | Remet la vitesse de lecture à 1. |
| `boucle-video` · `loop-video` · `bucle-video` · `rudia-video` | `boucle-video oui` | Active (oui), désactive (non) ou inverse (basculer) la lecture en boucle. |
| `plein-ecran-video` · `fullscreen-video` · `pantalla-completa-video` · `skrini-nzima-video` | `plein-ecran-video` | Passe en plein écran ou en sort (à lancer depuis un clic). |
| `temps-video` · `time-video` · `tiempo-video` · `muda-video` | `temps-video "$temps"` | Écrit « position / durée » (ex. 1:05 / 3:20) dans la variable ou le composant cible. |
| `etat-video` · `state-video` · `estado-video` · `hali-video` | `etat-video "$etat"` | Écrit l’état (Aucune vidéo, En lecture, En pause, Arrêtée, Terminée, Erreur) dans la variable ou le composant cible. |
| `progression-video` · `progress-video` · `progreso-video` · `maendeleo-video` | `progression-video "$pourcent"` | Écrit l’avancement en pourcentage (0 à 100) dans la variable ou le composant cible, par exemple pour une barre de progression. |

## Exemple
```
quand clic
  ouvrir-video "choix_fichier"
  volume-video 70

toutes les 250 ms
  temps-video "temps"
  progression-video "barre"
```
L'exemple complet est dans `examples/application/media/lecteur-video.berkios.json`.
