Comment construire un lecteur vidéo en utilisant Python
Construire un lecteur vidéo peut vous aider à profiter de vos vidéos préférées dans un thème et un style personnalisés. Vous pouvez rendre la lecture des vidéos plus fluide, concevoir les boutons et les menus de votre application et ajouter toutes les fonctionnalités que vous souhaitez.
Ce projet vous permettra également d’acquérir une expérience pratique de la création d’applications de bureau multiplateformes, du traitement multimédia et de la gestion d’événements. Découvrez comment créer un lecteur multimédia vidéo en utilisant Tkinter, VLC et le module datetime.
Les modules Tkinter, VLC et Datetime
Tkinter vous permet de créer des applications de bureau. Il offre une variété de widgets tels que des boutons, des étiquettes et des zones de texte qui facilitent le développement d’applications telles qu’un calendrier GUI simple, une calculatrice ou un gestionnaire de liste de tâches. Pour installer Tkinter, ouvrez un terminal et exécutez :
Le programme python-vlc est une liaison Python pour la bibliothèque de lecteur multimédia VLC (VideoLAN Client). Vous pouvez utiliser ce module pour mettre en œuvre les fonctionnalités de VLC et créer votre propre lecteur multimédia personnalisé. Pour installer VLC, exécutez
Le datetime est intégré à Python et fournit des classes et des fonctions pour représenter différentes dates, heures, intervalles et zones.
Construction de la structure du lecteur vidéo
Vous pouvez trouver le code source de ce projet dans son dépôt GitHub.
Importer les modules nécessaires. Définissez une classe, MediaPlayerApp. Définissez la méthode de construction et appelez-la pour initialiser la fenêtre principale de l’application. Définissez le titre, les dimensions et la couleur d’arrière-plan du lecteur vidéo. Appelez la méthode initialize_player de la méthode .
Définir une méthode, initialize_player. Créez une instance du lecteur multimédia VLC pour interagir avec ses fonctionnalités. À l’aide de cette instance, créez un objet lecteur multimédia que vous pouvez utiliser pour gérer la lecture des médias. Initialiser une variable, fichier_courant pour garder une trace de la vidéo en cours de lecture. Définissez les états de lecture et appelez la fonction create_widgets
Définir la méthode create_widgets . Créer un widget canvas et lui transmettre l’élément parent dans lequel il doit être placé, sa couleur d’arrière-plan, sa largeur et sa hauteur. Créez un widget Fichier de sélection pour sélectionner le fichier vidéo à lire. Définissez l’élément parent, le texte qu’il doit afficher, les styles de police et la commande qu’il doit exécuter lorsque vous cliquez dessus.
Créez une étiquette pour afficher le temps écoulé et la durée de la vidéo. Définissez l’élément parent, le texte, les styles de police, la couleur de la police et la couleur d’arrière-plan. Créez un cadre pour contrôler la lecture de la vidéo et donnez-lui une couleur d’arrière-plan.
Définissez l’élément Lecture le bouton Pause la touche Pause , la touche Pause <15 Arrêter le bouton Avance rapide et le bouton Rembobinage . Créez un widget de barre de progression vidéo. Définissez l’élément parent dans lequel vous souhaitez le placer, la méthode de mise à jour de la position de lecture de la vidéo, la couleur d’arrière-plan et l’épaisseur.
Organisez tous ces éléments avec un rembourrage approprié dans les deux sens.
Construction de la fonctionnalité du lecteur de médias vidéo
Définissez une méthode, select_file. Ouvre une boîte de dialogue de fichier pour sélectionner un fichier vidéo avec. mp4 ou. avi extension. Si vous sélectionnez un fichier, son chemin d’accès est chargé et l’étiquette temporelle est mise à jour avec sa durée. Lancez la lecture de la vidéo sélectionnée.
Définissez une méthode, get_duration_str que vous utiliserez pour calculer la durée totale de la vidéo. Si l’application lit une vidéo, obtenez sa durée en millisecondes et convertissez-la dans le format HH:MM:SS . Si aucune vidéo n’est en cours de lecture, le système renvoie 00:00:00 comme valeur par défaut.
Définir une méthode, play_video. Si aucune vidéo n’est en cours de lecture, créez un nouvel objet média à l’aide du chemin d’accès au fichier sélectionné. Associez le média au canevas créé précédemment et lancez la lecture de la vidéo. Mettez à jour le vidéo_en_cours_de_lecture en Vrai.
Définir une méthode, fast_forward. Si une vidéo est en cours de lecture, récupérez le temps écoulé et ajoutez-y 10 000 millisecondes. Définissez la nouvelle durée de lecture. De même, définissez une méthode, rembobinage qui soustrait 10 000 millisecondes.
Définir une méthode, pause_video. Si vous avez démarré la lecture d’une vidéo et que vous l’avez mise en pause, appelez la méthode lecture pour reprendre la lecture. Sinon, appelez la méthode pause et mettez à jour l’interface utilisateur en conséquence dans les deux cas.
Définissez une méthode, stop. Si une vidéo est en cours de lecture, arrêtez-la et réinitialisez l’étiquette temporelle. Définir une méthode, set_video_position. Si une vidéo est en cours de lecture, récupérez la durée totale et calculez la position souhaitée en millisecondes. Définissez la durée de lecture de la vidéo en fonction de la position calculée.
Définissez une méthode, update_video_progress. Si une vidéo est en cours de lecture, récupérez la durée totale et la durée de lecture actuelle, et calculez le pourcentage de progression. Mettre à jour la barre de progression à l’aide de cette valeur calculée. Formatez l’heure actuelle et la durée totale dans le champ HH:MM:SS format.
Programmer cette méthode pour qu’elle s’exécute à nouveau après 1 000 millisecondes. Cela crée une boucle qui met continuellement à jour la progression de la vidéo et les étiquettes temporelles pendant la lecture de la vidéo.
Définissez une classe, VideoProgressBar qui hérite de tk.Scale widget. Définissez un constructeur qui définit l’état initial et le comportement de la barre de progression. Définissez l’élément showvalue à Faux pour éviter d’afficher la valeur actuelle.
Initialiser la progression avec une plage de 0 à 100. Définissez l’orientation, la longueur, la commande à exécuter et la personnalisation de la barre de progression. Liez un événement à la barre de progression de sorte que lorsque vous cliquez dessus, elle exécute la commande on_click de la méthode on_click .
Définir une méthode, on_click. Vérifie si la barre de progression n’est pas désactivée et calcule la nouvelle valeur en fonction de la position du clic. Mettez à jour la valeur de la barre de progression en conséquence.
Créez une instance de l’élément MediaPlayerApp et appeler la classe update_video_progress . La méthode mainloop() indique à Python de lancer la boucle d’événements Tkinter et d’écouter les événements jusqu’à ce que vous fermiez la fenêtre.
Test de différentes fonctionnalités du lecteur vidéo
Lors de l’exécution du programme, le lecteur de médias vidéo s’affiche. Il contient les éléments suivants Sélectionner un fichier les étiquettes temporelles, les boutons permettant de contrôler la lecture de la vidéo et une barre de progression de la vidéo.
Lorsque vous choisissez une vidéo, elle sera lue automatiquement depuis le début, en mettant à jour l’heure de début et la durée des étiquettes temporelles.
En appuyant sur le bouton Pause la vidéo se met en pause et passe à l’écran d’accueil. Reprendre . En cliquant sur le bouton Avance rapide la vidéo avance de 10 secondes.
De même, en appuyant sur le bouton Rembobinage il recule de 10 secondes. En appuyant sur le bouton Arrêt la lecture de la vidéo s’arrête. Vous pouvez faire glisser ou cliquer sur n’importe quelle zone de la barre de progression pour passer à n’importe quelle partie de la vidéo et l’étiquette de temps indique le temps écoulé.
Amélioration de l’application du lecteur de médias vidéo
Vous pouvez améliorer ce lecteur de médias vidéo en ajoutant une option permettant de charger et d’afficher des sous-titres. Vous pouvez également envisager des fonctions telles que la modification du rapport hauteur/largeur, le contrôle du volume et la mise en boucle d’une partie de la vidéo.
Pour mettre en œuvre ces fonctionnalités, vous pouvez explorer le module Pygame. Pygame est polyvalent, facile à utiliser et s’intègre bien à Tkinter. La bibliothèque permet la personnalisation, possède des fonctions interactives et peut fonctionner sur n’importe quelle plateforme.