Redimensionnement de vidéos en Python

Introduction

Ce script permet de redimensionner des vidéos tout en conservant ou non leur bande son. Il s’adapte automatiquement aux dimensions cibles en respectant le ratio d’aspect. Vous pouvez également traiter des vidéos par lot en spécifiant un répertoire source et un répertoire de destination.


Fonctionnalités principales

  1. Récupération des dimensions d’une vidéo :
    • Détecte automatiquement la largeur et la hauteur d’une vidéo à l’aide de ffprobe.
  2. Calcul des dimensions plein écran :
    • Adapte les dimensions d’une vidéo pour qu’elle s’ajuste à l’écran cible en conservant le ratio d’aspect.
  3. Redimensionnement des vidéos :
    • Deux options disponibles : avec ou sans bande son.
  4. Traitement par lot :
    • Redimensionne toutes les vidéos d’un répertoire et sauvegarde les vidéos redimensionnées dans un autre répertoire.

Prérequis

  • Outils requis :
    • ffmpeg et ffprobe doivent être installés et accessibles dans votre PATH.
    • Python 3.x avec les modules standards (subprocess, json, os).
  • Commande pour installer ffmpeg (sous Ubuntu/Debian) :
Shell

Fonctionnement des fonctions

1. Récupération des dimensions : get_video_dimensions(video_path)

  • Entrée : Chemin du fichier vidéo.
  • Sortie : Tuple (largeur, hauteur) ou None en cas d’erreur.

2. Calcul des dimensions plein écran : calculate_fullscreen_dimensions(video_dimensions, screen_dimensions)

  • Entrée : Dimensions de la vidéo (largeur, hauteur) et de l’écran cible (largeur, hauteur).
  • Sortie : Nouvelle taille (nouvelle_largeur, nouvelle_hauteur) adaptée à l’écran.

3. Redimensionnement avec audio : resize_video_with_audio(input_video, output_video, target_dimensions)

  • Entrée :
    • input_video : Chemin de la vidéo source.
    • output_video : Chemin pour enregistrer la vidéo redimensionnée.
    • target_dimensions : Dimensions cibles (largeur, hauteur).

4. Redimensionnement sans audio : resize_video_without_audio(input_video, output_video, target_dimensions)

  • Identique à la précédente, mais supprime la bande son avec -an.

5. Lister les fichiers d’un répertoire : list_files_in_directory(directory_path)

  • Entrée : Chemin du répertoire.
  • Sortie : Liste des fichiers.

6. Traitement par lot : resize_videos_in_directory(input_directory, output_directory, target_dimensions)

  • Entrée :
    • input_directory : Répertoire source contenant les vidéos.
    • output_directory : Répertoire cible pour les vidéos redimensionnées.
    • target_dimensions : Dimensions cibles.

Exemple d’utilisation

Redimensionner une vidéo unique

Python

Redimensionner toutes les vidéos d’un répertoire

Python

Notes importantes

  1. Qualité et compression :
    • La qualité vidéo est définie par -crf (23 par défaut). Plus la valeur est basse, meilleure est la qualité (et plus le fichier est volumineux).
  2. Gestion des erreurs :
    • Les erreurs sont gérées avec des messages explicites.
  3. Adaptation automatique :
    • Si les dimensions spécifiées ne respectent pas le ratio d’aspect, le script ajuste automatiquement les dimensions pour éviter toute déformation.

Dépannage

  • Erreur ffprobe introuvable :
    • Vérifiez que ffmpeg et ffprobe sont correctement installés et accessibles dans votre terminal.
  • Chemin de fichier invalide :
    • Assurez-vous que les chemins vers les fichiers et répertoires sont corrects.

Source normevideo.py

Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *