🎬 Objectif du Script

Ce script Python est conçu pour convertir des fichiers vidĂ©o (typiquement des conteneurs comme .mkv) en un format plus standard (.mp4), en utilisant l’outil puissant FFmpeg.

Son objectif principal est d’assurer une conversion sĂ©lective en n’incluant que :

  1. La piste vidéo principale (-map 0:v:0).
  2. Toutes les pistes audio dont la langue est le français (-map 0:m:language:fre).
  3. Aucune piste de sous-titres (-map -0:s).

đŸ› ïž PrĂ©requis

Pour exĂ©cuter ce script, les Ă©lĂ©ments suivants doivent ĂȘtre installĂ©s et configurĂ©s sur votre systĂšme :

  1. Python 3.x : Le script est écrit en Python.
  2. FFmpeg : L’outil de traitement multimĂ©dia doit ĂȘtre installĂ© et accessible via la variable d’environnement PATH de votre systĂšme. Le script ne fonctionnera pas s’il ne peut pas trouver la commande ffmpeg.

⚙ Utilisation

Le script est conçu pour ĂȘtre exĂ©cutĂ© directement depuis la ligne de commande et requiert deux arguments : le chemin du fichier vidĂ©o d’entrĂ©e et le chemin du fichier vidĂ©o de sortie.

Syntaxe

Shell

Exemple

Pour convertir un fichier nommé MaVideo.mkv en MaVideo_FR.mp4 :

Shell

đŸ’» Description du Code

1. Importations

ModuleRĂŽle
subprocessPermet d’exĂ©cuter des commandes externes (FFmpeg) et de gĂ©rer leurs processus d’entrĂ©e/sortie.
shlexUtilisĂ© pour sĂ©parer (splitter) la chaĂźne de commande FFmpeg en une liste d’arguments, ce qui est essentiel pour gĂ©rer correctement les espaces et les guillemets (notamment dans les chemins de fichiers).
sysFournit l’accĂšs aux variables et fonctions spĂ©cifiques Ă  l’interprĂ©teur, notamment pour lire les arguments de la ligne de commande (sys.argv).

2. Fonction executer_commande_ffmpeg

Cette fonction centrale construit et exécute la commande FFmpeg.

ParamĂštreTypeDescription
fichier_entreestrChemin complet vers le fichier vidéo à convertir.
fichier_sortiestrChemin complet oĂč le nouveau fichier sera sauvegardĂ©.

Commande FFmpeg Détaillée

La commande utilise les options suivantes pour le mappage et l’encodage :

OptionRĂŽle
ffmpeg -i "{fichier_entree}"SpĂ©cifie le fichier d’entrĂ©e.
-map 0:v:0SĂ©lectionne la premiĂšre piste vidĂ©o du fichier d’entrĂ©e (index 0).
-map 0:m:language:freSélectionne toutes les pistes audio dont la métadonnée de langue est définie sur fre (français).
-map -0:sDĂ©sĂ©lectionne/Exclut toutes les pistes de sous-titres du fichier d’entrĂ©e. C’est l’option clĂ© pour supprimer les sous-titres.
-c:v libx264Utilise l’encodeur libx264 pour la vidĂ©o (trĂšs courant pour .mp4).
-preset mediumDĂ©finit la vitesse d’encodage sur medium (bon Ă©quilibre entre vitesse et qualitĂ©).
-crf 23Constant Rate Factor. Définit la qualité de sortie vidéo à 23 (un bon compromis par défaut ; plus la valeur est basse, meilleure est la qualité, mais plus le fichier est volumineux).
-c:a aacUtilise l’encodeur AAC pour l’audio (standard pour .mp4).
"{fichier_sortie}"Spécifie le fichier de sortie.

Gestion des Erreurs

La fonction utilise un bloc try...except pour gĂ©rer les problĂšmes potentiels lors de l’exĂ©cution :

  • FileNotFoundError: Si la commande ffmpeg est introuvable dans le PATH.
  • subprocess.CalledProcessError: Si FFmpeg s’exĂ©cute, mais Ă©choue (code de retour non-zĂ©ro), ce qui indique gĂ©nĂ©ralement un problĂšme avec la vidĂ©o d’entrĂ©e ou les options de la commande.
  • Exception: Pour toute autre erreur imprĂ©vue.

3. Bloc Principal (if __name__ == "__main__":)

Ce bloc gĂšre l’exĂ©cution du script lorsqu’il est appelĂ© directement.

  • VĂ©rification des arguments : Il s’assure que exactement trois arguments sont passĂ©s (sys.argv[0] est le nom du script, plus les deux arguments requis).
  • Affichage de l’usage : En cas d’erreur d’arguments, il affiche l’instruction d’utilisation correcte et quitte le script.
  • Appel Ă  la fonction : Si les arguments sont corrects, il appelle executer_commande_ffmpeg pour dĂ©marrer la conversion.

💡 Remarques et AmĂ©liorations Potentielles

  • Gestion des langues : La sĂ©lection audio est fixĂ©e Ă  fre (français). Pour un usage plus flexible, vous pourriez passer la langue audio dĂ©sirĂ©e en argument au script (ex: -lang en).
  • QualitĂ© (CRF) : Le crf 23 est un bon dĂ©faut. Une option utilisateur pourrait permettre de spĂ©cifier une valeur de CRF diffĂ©rente.
  • DĂ©tection de pistes : Le script assume que la premiĂšre piste vidĂ©o est la bonne (-map 0:v:0). Pour des fichiers complexes, une analyse prĂ©alable avec ffprobe pourrait ĂȘtre nĂ©cessaire pour sĂ©lectionner la bonne piste vidĂ©o.
  • Chemins absolus : L’utilisation de pathlib en Python pourrait rendre la gestion des chemins de fichiers plus robuste et indĂ©pendante du systĂšme d’exploitation.

Source

Python

0 commentaire

Laisser un commentaire

Emplacement de l’avatar

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