> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-hivemind-launch.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Journaliser des vidéos

> Journalisez et suivez automatiquement les données vidéo dans les traces Weave à l’aide de moviepy pour leur lecture et leur analyse dans l’UI.

Weave journalise automatiquement les vidéos à l’aide de [`moviepy`](https://zulko.github.io/moviepy/). Cela vous permet d’utiliser des vidéos en entrée et en sortie de fonctions tracées, et Weave se charge automatiquement du téléversement et du stockage des données vidéo.

<Note>
  La prise en charge des vidéos n’est actuellement disponible qu’en Python.
</Note>

<div id="usage-prerequisites">
  ## Prérequis d’utilisation
</div>

1. Installez `weave` et `moviepy==1.0.3`.
2. Créez un compte W\&B.

<div id="supported-video-types">
  ## Types de vidéos pris en charge
</div>

Weave reconnaît les objets de clip vidéo `moviepy`, par exemple :

* Un `VideoFileClip` chargé à partir d’un fichier vidéo
* Des clips en mémoire comme `ImageClip`, `ColorClip` et `TextClip`

<div id="direct-upload-of-file-based-clips">
  ### Téléversement direct de clips sous forme de fichiers
</div>

Si votre clip est un `VideoFileClip` et possède un nom de fichier valide avec une extension prise en charge, Weave téléversera directement le fichier.

**Extensions de fichier prises en charge :**

* `.mp4`
* `.webm`
* `.gif`

<div id="in-memory-clip-support">
  ### Prise en charge des clips en mémoire
</div>

Si l'objet vidéo est en mémoire (aucun fichier sur disque), Weave l'encodera au format `.mp4` et gérera automatiquement le téléversement. Cela s'applique aux clips du type suivant :

* `ImageClip`
* `ColorClip`
* `TextClip`

<div id="example-trace-a-video-function">
  ## Exemple : tracer une fonction de traitement vidéo
</div>

L’exemple de code suivant montre comment tracer une fonction de traitement vidéo dans Weave. Cet exemple de code :

1. Initialise un projet Weave `video-test`.
2. Définit une fonction `get_video`, suivie en tant que `weave.op`, qui extrait un sous-clip d’une seconde du `VideoFileClip` chargé sous forme de `VideoClip`.
3. Téléverse et suit le clip dans Weave.
4. Génère automatiquement une vidéo MP4 factice si aucune n’est trouvée.

<Warning>
  Pour éviter les problèmes de thread-safety, passez toujours le chemin vers les objets `VideoFileClip` au lieu de les créer en dehors de l’`op` Weave.
</Warning>

Avant d’utiliser l’extrait de code suivant, terminez les [prérequis d’utilisation](#usage-prerequisites).

```python lines theme={null}
import os
import weave
from moviepy.editor import VideoFileClip, ColorClip, VideoClip

# Mettez à jour avec le nom de votre projet, ou créez un nouveau projet nommé 'video-test'
weave.init('video-test')

@weave.op
def get_video(clip: VideoFileClip) -> VideoClip:
    """Traite une vidéo par chemin plutôt qu'en passant le clip directement.

    Cela garantit que le VideoFileClip est créé et géré dans le
    contexte de thread de l'op Weave, évitant ainsi les problèmes de thread-safety.
    """
    new_clip = clip.subclip(0, 1)
    return new_clip

if __name__ == "__main__":
    os.makedirs("videos", exist_ok=True)

    # Mettez à jour le chemin pour pointer vers votre fichier MP4
    video_path = './videos/example.mp4'

    # Génère une vidéo factice si elle n'existe pas
    # Contenu de la vidéo factice : un carré rouge affiché pendant 5 secondes
    if not os.path.isfile(video_path):
        print("Aucune vidéo trouvée. Création d'une vidéo factice...")
        dummy_clip = ColorClip(size=(640, 480), color=(255, 0, 0), duration=5)
        dummy_clip.write_videofile(video_path, fps=24)

    clip = VideoFileClip(video_path, has_mask=False, audio=True)
    get_video(clip) 
```

Lorsque l’exemple de code s’exécute correctement, vous pouvez consulter votre vidéo en cliquant sur le lien dans le tableau **Traces** de votre projet.

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/IJ5wvwHtTZtWc35M/weave/guides/tracking/imgs/video-trace.png?fit=max&auto=format&n=IJ5wvwHtTZtWc35M&q=85&s=0070bfcc205eca3932b5590ddc12af4e" alt="Trace d’une fonction de traitement vidéo dans le tableau Traces." width="2766" height="582" data-path="weave/guides/tracking/imgs/video-trace.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/wb-21fd5541-docs-hivemind-launch/IJ5wvwHtTZtWc35M/weave/guides/tracking/imgs/video-trace-popout.png?fit=max&auto=format&n=IJ5wvwHtTZtWc35M&q=85&s=ceda02efaa00c4488bea848927c6f317" alt="Vidéo MP4 importée dans Weave, affichée dans le volet contextuel Traces." width="720" height="323" data-path="weave/guides/tracking/imgs/video-trace-popout.png" />
</Frame>
