# <span style="font-variant:small-caps">Terminal VIDeo player</span>

<img align="left" width="192" src="../tvid.min.svg" alt="tvid logo" />

`tvid` est un lecteur vidéo en terminal écrit en Rust. Il utilise FFmpeg pour le décodage et rend la vidéo, l’audio et les sous-titres directement dans votre terminal, avec une interface en surimpression, une vue de playlist et des interactions basiques clavier / souris.

---

*Translations (by ChatGPT):*<br />
[en-us/English](../README.md) | [zh-cn/简体中文](README.zh-cn.md) | [zh-tw/繁體中文](README.zh-tw.md) | [ja-jp/日本語](README.ja-jp.md) | **fr-fr/Français** | [de-de/Deutsch](README.de-de.md) | [es-es/Español](README.es-es.md) | [ko-kr/한국어](README.ko-kr.md) | [pt-br/Português (Brasil)](README.pt-br.md) | [ru-ru/Русский](README.ru-ru.md) | [it-it/Italiano](README.it-it.md) | [tr-tr/Türkçe](README.tr-tr.md) | [vi-vn/Tiếng Việt](README.vi-vn.md)

<br clear="left"/>

---

> Ce projet est en cours de développement actif. Le comportement et l’interface peuvent changer.

## Fonctionnalités

- **Lecture de presque tous les formats** pris en charge par FFmpeg
- **Sortie audio et rendu des sous-titres** (ASS / texte)
- **Plusieurs modes de rendu** : couleurs vraies, palette 256, niveaux de gris, art ASCII, braille Unicode
- **Protocoles d'image optionnels** : Sixel et OSC 1337 (style iTerm2)
- **Interface en surimpression dans le terminal** : barre de progression, messages et aide à l’écran
- **Support de playlist** :
  - passer plusieurs fichiers en ligne de commande
  - navigation dans la playlist en mémoire (suivant / précédent, boucle)
  - panneau latéral de playlist optionnel
- **Contrôle souris & clavier** pour le déplacement dans la vidéo et la navigation
- **Fichier de configuration & playlist par défaut** sous `~/.config/tvid/`
- **Interface localisée** (locale système) et **Unifont** en secours pour la couverture des glyphes

## Prérequis

- Une toolchain Rust récente (nightly **non requise**)
  - sur Debian / Ubuntu : `sudo apt install cargo` ou `sudo apt install rustup && rustup install stable`
  - sur Arch : `sudo pacman -S rust` ou `sudo pacman -S rustup && rustup install stable`
- Les bibliothèques FFmpeg et en-têtes de développement disponibles sur votre système
  - sur Debian / Ubuntu : `sudo apt install ffmpeg libavcodec-dev libavformat-dev libavutil-dev libswscale-dev libswresample-dev`
  - sur Arch : `sudo pacman -S ffmpeg`

## Construire & exécuter

### Utiliser Cargo Install

Vous pouvez installer `tvid` directement via Cargo :

```sh
cargo install tvid
```

Les fonctionnalités optionnelles s’activent à la compilation. Par défaut : `ffmpeg`, `i18n`, `config`, `audio`, `video`, `subtitle`, `unicode`, `unifont`.

```sh
cargo install tvid --features sixel,osc1337
# ou désactiver les fonctionnalités par défaut et choisir un minimum
cargo install tvid --no-default-features --features ffmpeg,video
```

### Construire manuellement

1. Cloner le dépôt :

   ```sh
   git clone https://github.com/copi143/tvid.git
   cd tvid
   ```

2. Construire le projet :

   ```sh
   cargo build --release
   ```

   Les fonctionnalités optionnelles s’activent à la compilation. Par défaut : `ffmpeg`, `i18n`, `config`, `audio`, `video`, `subtitle`, `unicode`, `unifont`.

   ```sh
   cargo build --release --features sixel,osc1337
   # ou désactiver les fonctionnalités par défaut et choisir un minimum
   cargo build --release --no-default-features --features ffmpeg,video
   ```

3. Lancer le lecteur :

   ```sh
   cargo run -- <entrée1> [entrée2] [...]
   # ou, après compilation
   target/release/tvid <entrée1> [entrée2] [...]
   ```

## Utilisation

```sh
tvid <entrée1> [entrée2] [...]
```

Chaque entrée devient un élément de la playlist en mémoire.

### Fichiers de configuration & playlist

Au premier lancement, `tvid` crée un répertoire de config et deux fichiers :

- Répertoire de config : `~/.config/tvid/`
- Fichier de configuration : `tvid.toml`
  - exemples de clés :
    - `volume` (`0`–`200`) : volume initial
    - `looping` (`true` / `false`) : boucle de la playlist ou non
- Fichier de playlist : `playlist.txt`
  - chaque ligne est interprétée comme un chemin de fichier
  - les lignes vides et les lignes commençant par `#` sont ignorées

Au démarrage, `tvid` charge d’abord la playlist depuis `playlist.txt`, puis ajoute les fichiers passés en ligne de commande.

### Raccourcis clavier & souris

Contrôles de lecture principaux (globaux) :

- `Space` – lecture / pause
- `q` – quitter le lecteur
- Flèches – déplacement dans la vidéo
  - `←` – reculer de 5 secondes
  - `→` – avancer de 5 secondes
  - `↑` – reculer de 30 secondes
  - `↓` – avancer de 30 secondes

Contrôles de playlist :

- `n` – lire l’élément suivant dans la playlist
- `l` – (dés)afficher le panneau latéral de playlist
- Dans le panneau de playlist :
  - `w` / `↑` – déplacer la sélection vers le haut
  - `s` / `↓` – déplacer la sélection vers le bas
  - `Space` / `Enter` – lire l’élément sélectionné
  - `q` – fermer le panneau de playlist

Interface & autres :

- `f` – ouvrir le sélecteur de fichiers (panneau UI)
- `c` – changer le mode de couleur
- Barre de progression :
  - clic gauche près de la zone de progression en bas pour se déplacer
  - faire glisser avec le bouton gauche pour naviguer dans la vidéo

> Remarque : des raccourcis supplémentaires et des éléments d’interface peuvent être ajoutés au fil de l’évolution du projet.

### Mode commande

Appuyez sur `/` pour ouvrir la saisie de commande, puis :

- `Enter` – exécuter la commande
- `Esc` – annuler
- `Tab` – auto-complétion (commandes ou arguments)
- `↑` / `↓` – historique des commandes

Exemples :

- `/seek +5`
- `/volume 80`
- `/lang zh-cn`

Codes de langue disponibles : `en-us`, `zh-cn`, `zh-tw`, `ja-jp`, `fr-fr`, `de-de`, `es-es`, `ko-kr`, `pt-br`, `ru-ru`, `it-it`, `tr-tr`, `vi-vn`

## Dépannage

- Erreurs de compilation :
  - Assurez-vous que FFmpeg et ses en-têtes de développement sont installés sur votre système.
- Erreur de chargement des bibliothèques partagées (à l’exécution) :
  - Assurez-vous d’avoir compilé et exécuté le programme sur la même machine — d’autres machines peuvent avoir des versions de FFmpeg différentes.
  - Vérifiez que les bibliothèques FFmpeg d’exécution peuvent être trouvées (par exemple, vérifiez qu’un autre programme utilisant FFmpeg comme `vlc` fonctionne correctement).
- Au démarrage : `av init failed` :
  - Vérifiez que FFmpeg fonctionne correctement sur votre système.
- Après le démarrage : `No input files.` :
  - Assurez-vous que :
    - vous avez passé au moins un fichier vidéo/audio lisible en ligne de commande, ou
    - `~/.config/tvid/playlist.txt` contient des chemins valides et accessibles.

## Licence

Reportez-vous à la section License du `README.md` à la racine du dépôt (en anglais) pour les détails de la licence.
