Weave journalise automatiquement les vidéos à l’aide de 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.
La prise en charge des vidéos n’est actuellement disponible qu’en Python.
- Installez
weave et moviepy==1.0.3.
- Créez un compte W&B.
Types de vidéos pris en charge
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
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 :
Prise en charge des clips en mémoire
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
Exemple : tracer une fonction de traitement vidéo
L’exemple de code suivant montre comment tracer une fonction de traitement vidéo dans Weave. Cet exemple de code :
- Initialise un projet Weave
video-test.
- 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.
- Téléverse et suit le clip dans Weave.
- Génère automatiquement une vidéo MP4 factice si aucune n’est trouvée.
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.
Avant d’utiliser l’extrait de code suivant, terminez les prérequis d’utilisation.
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.