轻松玩转Python:打开文件夹,搜索视频文件,实现简单视频播放器

目录

 1、功能描述:

2、具体实现:

3、代码实现:

4、执行效果:


 1、功能描述:

这段代码实现了一个简单的视频播放器,可以打开指定的文件夹并搜索其中的视频文件,将搜索结果展示在列表框中,用户可以选择列表中的某个视频文件并点击“播放”按钮来播放所选视频。

2、具体实现:

首先定义了一个VideoPlayer类,用于实现视频播放功能,它使用了vlc库来实现视频播放。在该类的初始化方法中,使用了vlc.Instance方法创建了一个vlc实例,并创建了一个media_player对象用于播放视频。

在play方法中,先使用实例的media_new方法创建一个新的media对象,并将待播放的视频文件路径传递给该方法。然后调用media_player对象的set_media方法来设置当前播放的媒体对象为创建的media对象,并调用player的play方法来开始播放视频。

接下来定义了一个App类,它继承了tkinter库中的Frame类,用于实现应用程序的主界面。在该类的初始化方法中,创建了一个打开文件夹的按钮、一个列表框和一个播放按钮。

当用户点击打开文件夹按钮时,会弹出一个文件选择对话框,用户选择文件夹后,调用find_videos方法来搜索该文件夹下的视频文件,并将搜索结果存储在file_path_list中。然后调用update_listbox方法来更新列表框的内容。

find_videos方法使用os库中的walk方法来递归搜索指定文件夹中的所有文件,并将搜索到的视频文件路径存储在file_path_list中。

update_listbox方法首先调用列表框的delete方法来清空列表框,然后遍历file_path_list中的所有视频文件路径,并将它们添加到列表框中。

当用户点击播放按钮时,会获取当前所选的视频文件路径,创建一个VideoPlayer对象,调用该对象的play方法来播放视频。

最后,在主程序中创建了一个Tk对象和一个App对象,并启动了主事件循环。

3、代码实现:

import os
import tkinter as tk
from tkinter import filedialog
import vlc

class VideoPlayer:
    def __init__(self):
        self.instance = vlc.Instance('--no-xlib')
        self.player = self.instance.media_player_new()

    def play(self, file_path):
        media = self.instance.media_new(file_path)
        self.player.set_media(media)
        self.player.play()

class App:
    def __init__(self, master):
        self.master = master
        self.master.title("视频播放器")
        self.file_path_list = []

        # 打开文件夹按钮
        self.open_folder_button = tk.Button(self.master, text="打开文件夹", command=self.open_folder)
        self.open_folder_button.pack()

        # 列表框
        self.listbox = tk.Listbox(self.master)
        self.listbox.pack()

        # 播放按钮
        self.play_button = tk.Button(self.master, text="播放", command=self.play_video)
        self.play_button.pack()

    def open_folder(self):
        folder_path = filedialog.askdirectory()
        if folder_path:
            self.file_path_list = self.find_videos(folder_path)
            self.update_listbox()

    def find_videos(self, folder_path):
        video_extensions = ['.mp4', '.mkv', '.avi', '.mov']
        file_path_list = []
        for root, dirs, files in os.walk(folder_path):
            for file in files:
                if os.path.splitext(file)[1] in video_extensions:
                    file_path_list.append(os.path.join(root, file))
        return file_path_list

    def update_listbox(self):
        self.listbox.delete(0, tk.END)
        for file_path in self.file_path_list:
            self.listbox.insert(tk.END, file_path)

    def play_video(self):
        selected_index = self.listbox.curselection()
        if selected_index:
            selected_path = self.listbox.get(selected_index)
            player = VideoPlayer()
            player.play(selected_path)

root = tk.Tk()
app = App(root)
root.mainloop()

4、执行效果:

猜你喜欢

转载自blog.csdn.net/winniezhang/article/details/129099053#comments_26845231
今日推荐