import cv2
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
class VideoPlayer:
def __init__(self, root):
self.root = root
self.root.title("视频播放器")
self.video_source = filedialog.askopenfilename(title="选择视频文件", filetypes=[("MP4文件", "*.mp4"), ("所有文件", "*.*")])
self.cap = cv2.VideoCapture(self.video_source)
self.playing = False
self.canvas = tk.Canvas(root, width=self.cap.get(cv2.CAP_PROP_FRAME_WIDTH), height=self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.canvas.pack()
self.btn_play = tk.Button(root, text="播放", command=self.play_video)
self.btn_play.pack(side=tk.LEFT)
self.btn_pause = tk.Button(root, text="暂停", command=self.pause_video)
self.btn_pause.pack(side=tk.LEFT)
self.btn_exit = tk.Button(root, text="退出", command=root.quit)
self.btn_exit.pack(side=tk.LEFT)
self.root.bind("<space>", self.toggle_play_pause)
self.root.bind("<Escape>", lambda e: root.quit())
self.update_frame()
def play_video(self):
self.playing = True
def pause_video(self):
self.playing = False
def toggle_play_pause(self, event):
self.playing = not self.playing
def update_frame(self):
if self.playing:
ret, frame = self.cap.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame)
imgtk = ImageTk.PhotoImage(image=img)
self.canvas.create_image(0, 0, anchor=tk.NW, image=imgtk)
self.canvas.imgtk = imgtk
self.root.after(10, self.update_frame)
if __name__ == "__main__":
root = tk.Tk()
player = VideoPlayer(root)
root.mainloop()
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
class VideoPlayer:
def __init__(self, root):
self.root = root
self.root.title("视频播放器")
self.video_source = filedialog.askopenfilename(title="选择视频文件", filetypes=[("MP4文件", "*.mp4"), ("所有文件", "*.*")])
self.cap = cv2.VideoCapture(self.video_source)
self.playing = False
self.canvas = tk.Canvas(root, width=self.cap.get(cv2.CAP_PROP_FRAME_WIDTH), height=self.cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
self.canvas.pack()
self.btn_play = tk.Button(root, text="播放", command=self.play_video)
self.btn_play.pack(side=tk.LEFT)
self.btn_pause = tk.Button(root, text="暂停", command=self.pause_video)
self.btn_pause.pack(side=tk.LEFT)
self.btn_exit = tk.Button(root, text="退出", command=root.quit)
self.btn_exit.pack(side=tk.LEFT)
self.root.bind("<space>", self.toggle_play_pause)
self.root.bind("<Escape>", lambda e: root.quit())
self.update_frame()
def play_video(self):
self.playing = True
def pause_video(self):
self.playing = False
def toggle_play_pause(self, event):
self.playing = not self.playing
def update_frame(self):
if self.playing:
ret, frame = self.cap.read()
if ret:
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img = Image.fromarray(frame)
imgtk = ImageTk.PhotoImage(image=img)
self.canvas.create_image(0, 0, anchor=tk.NW, image=imgtk)
self.canvas.imgtk = imgtk
self.root.after(10, self.update_frame)
if __name__ == "__main__":
root = tk.Tk()
player = VideoPlayer(root)
root.mainloop()









