鱼C论坛

 找回密码
 立即注册
查看: 2463|回复: 4

视频播放器播放速度很慢

[复制链接]
发表于 2021-2-1 15:31:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

代码:
  1. import tkinter as tk
  2. from tkinter import filedialog
  3. from PIL import Image, ImageTk
  4. from cv2 import cv2

  5. def play_func():
  6.     moviePath = filedialog.askopenfilename()
  7.     pBtn.place_forget()
  8.     movie = cv2.VideoCapture(moviePath)
  9.     while movie.isOpened():
  10.         ret, readyFrame = movie.read()
  11.         if ret:
  12.             movieFrame = cv2.cvtColor(readyFrame, cv2.COLOR_BGR2RGBA)
  13.             newImage = Image.fromarray(movieFrame).resize((1080, 720))
  14.             newCover = ImageTk.PhotoImage(image=newImage)
  15.             videoLable.configure(image=newCover)
  16.             videoLable.image = newCover
  17.             root.update_idletasks()
  18.             root.update()

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

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

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

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

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

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

  35. root.mainloop()
复制代码

结果:
视频播放.gif

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

请大佬们帮忙解决一下我的问题
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-2-1 16:01:28 | 显示全部楼层
本帖最后由 lixiangyv 于 2021-2-6 11:49 编辑

各位大佬们能不能帮我解决一下问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-1 20:03:03 From FishC Mobile | 显示全部楼层
应该是 while 循环内 pil 的图像转换和 cv2 的图像绘制效率有点小问题,
我没有过多地深挖 pil 和 cv2 的使用了,也看不懂太多,
可以试试多线程,或者异步,每次多处理几个帧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

这多线程怎么弄呢,我也不太懂多线程......
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-6 11:50:26 | 显示全部楼层
@不二如是 能帮我解决一下问题吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-28 04:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表