python - 在显示视频时保持代码运行
问题描述
因此,我正在尝试编写一些代码来保持视频运行,直到满足条件并且完成某些过程并且在这些过程之后立即加载新视频。这些过程应在不关闭当前视频的情况下继续进行,并且应仅在加载新视频并准备好进行可视化时关闭当前视频。
这最好通过一个例子来表述,如下所示:
import numpy as np
import os
import pygame
import cv2
import time
def play_video(vid_loc):
pygame.init()
infos = pygame.display.Info()
screen_size = (infos.current_w, infos.current_h)
cap = cv2.VideoCapture(vid_loc)
frame_counter =0
while(True):
ret, frame = cap.read()
frame_counter += 1
if frame_counter == cap.get(cv2.CAP_PROP_FRAME_COUNT):
frame_counter = 0
cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
frame= cv2.resize(frame,screen_size)
cv2.namedWindow('image', flags=cv2.WINDOW_GUI_NORMAL)
cv2.setWindowProperty("image", cv2.WND_PROP_FULLSCREEN,cv2.WINDOW_FULLSCREEN)
cv2.imshow('image',frame)
if cv2.waitKey(1000) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
vid_loc = ["home/odd.ogv", "home/even.ogv"]
while True:
n = random.randint(1, 100)
if n%2 == 0:
play_video(vid_loc[1])
else:
play_video(vid_loc[0])
time.sleep(10)
所以这段代码生成一个随机数并检查它是否是偶数。如果它甚至运行不同的视频,如果奇怪的是另一个视频。我对这段代码的期望是保持每 10 秒生成一次随机数,并在“while 循环”再次运行时保持视频运行,生成另一个随机数并在不关闭视频的情况下检查它是否是偶数。如果数字是奇数,则在当前视频关闭后立即运行另一个视频。但是,此代码只会使视频按预期循环运行,但不会生成另一个随机数。
它基本上卡在 cv2.imshow 直到按下“q”键,然后“while 循环”再次运行。
解决方案
推荐阅读
- memory-management - 如何恢复页面错误处理程序
- c# - 解析iperf结果
- python - subprocess.CREATE_NO_WINDOW,AttributeError:模块“子进程”没有属性“CREATE_NO_WINDOW”
- javascript - 将折叠组件用于导航栏时,React Bootstrap 不起作用
- html - 如何在选中不同的复选框时禁用复选框和文本区域的集合?
- glsl - 法线贴图未正确应用
- javascript - 将 req.body 转换为数组
- java - 像这样转换为 DTO 是否可以,或者这是一种不好的做法?
- json - json 模式验证:对值的条件依赖
- docker - 无法将 Visual Studio 代码附加到 Docker 容器