lixiangyv 发表于 2021-2-1 15:31:15

视频播放器播放速度很慢

我自己做了一个视频播放器,但是播放时的时候播放的很慢,尝试播放了很多视频,都播放的很慢,
不知道是怎么回事。

代码:
import tkinter as tk
from tkinter import filedialog
from PIL import Image, ImageTk
from cv2 import cv2

def play_func():
    moviePath = filedialog.askopenfilename()
    pBtn.place_forget()
    movie = cv2.VideoCapture(moviePath)
    while movie.isOpened():
      ret, readyFrame = movie.read()
      if ret:
            movieFrame = cv2.cvtColor(readyFrame, cv2.COLOR_BGR2RGBA)
            newImage = Image.fromarray(movieFrame).resize((1080, 720))
            newCover = ImageTk.PhotoImage(image=newImage)
            videoLable.configure(image=newCover)
            videoLable.image = newCover
            root.update_idletasks()
            root.update()

root = tk.Tk()
root.title("Video Player")
root.geometry("1080x720")
root["bg"] = "#333333"
root.iconbitmap("./img/play.ico")

movieImage = Image.open("./img/movie.jpg")
cover = ImageTk.PhotoImage(image=movieImage)

videoLable = tk.Label(root, width=1080, height=720, bd=0, image=cover)
videoLable.place(x=0, y=0)

pImg = Image.open("./img/play.png").resize((64, 64))
pImgTk = ImageTk.PhotoImage(image=pImg)

pBtn = tk.Button(root, image=pImgTk, cursor='hand2', command=play_func)
pBtn.place(x=508, y=328)

pBar = tk.Scale(root, from_=0, to=90, length=1080, orient=tk.HORIZONTAL,
    resolution=0.1, showvalue=0, bd=0, cursor="hand2")
pBar.place(x=0, y=700)

root.mainloop()

结果:


视频的源地址:https://www.bilibili.com/video/BV1U54y1W7y5

请大佬们帮忙解决一下我的问题{:7_119:}

lixiangyv 发表于 2021-2-1 16:01:28

本帖最后由 lixiangyv 于 2021-2-6 11:49 编辑

各位大佬们能不能帮我解决一下问题

_2_ 发表于 2021-2-1 20:03:03

应该是 while 循环内 pil 的图像转换和 cv2 的图像绘制效率有点小问题,
我没有过多地深挖 pil 和 cv2 的使用了,也看不懂太多,
可以试试多线程,或者异步,每次多处理几个帧

lixiangyv 发表于 2021-2-1 20:36:08

_2_ 发表于 2021-2-1 20:03
应该是 while 循环内 pil 的图像转换和 cv2 的图像绘制效率有点小问题,
我没有过多地深挖 pil 和 cv2 的 ...

这多线程怎么弄呢,我也不太懂多线程......{:9_241:}

lixiangyv 发表于 2021-2-6 11:50:26

@不二如是 能帮我解决一下问题吗
页: [1]
查看完整版本: 视频播放器播放速度很慢