我一直在编写一个视频播放器,以测试我是否可以在Python中播放和暂停视频。我的问题是,每当我按下一个键时,它都没有反应,需要连续按键才能工作,效果是随机的。
如果有人知道这可能是什么原因,那将是非常有帮助的。
import cv2
cap = cv2.VideoCapture('testvideo.mp4')
length = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
isPlaying = False
def onchange(trackbar_value):
cap.set(cv2.CAP_PROP_POS_FRAMES, trackbar_value)
err, vid = cap.read()
cv2.imshow('player', vid)
pass
start = 0
cv2.namedWindow('player')
cv2.createTrackbar('test', 'player', start, length, onchange)
onchange(1)
while cap.isOpened():
if cv2.waitKey(1) & 0xFF == ord('q'):
break
elif cv2.waitKey(1) & 0xFF == ord('p'):
isPlaying = not isPlaying
ret, player = cap.read()
if cv2.waitKey(20) == 27:
break
if isPlaying:
cv2.imshow('test', 'frame')
elif cap.get(cv2.CAP_PROP_POS_FRAMES) >= length:
break
cap.release()
cv2.destroyAllWindows()发布于 2019-02-08 16:32:35
我通过修改while cap.isOpened()循环中的这一部分修复了这个问题:
keyPress = cv2.waitKey(20)
ret, player = cap.read()
if keyPress & 0xFF == ord('q'):
break
elif keyPress & 0xFF == ord('p'):
isPlaying = not isPlaying一旦我删除了
if cv2.waitKey(20) == 27:
breakline,它也比以前工作得更好。
所有这些都加快了项目的速度,现在一切都很正常。
https://stackoverflow.com/questions/54570968
复制相似问题