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

您所在的位置:网站首页 搜索这个视频的全部视频 轻松玩转Python:打开文件夹,搜索视频文件,实现简单视频播放器

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

2024-07-02 07:19| 来源: 网络整理| 查看: 265

 

目录

 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、执行效果:

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3