From e375166bfebd8616108dcf1bbda752ab08935212 Mon Sep 17 00:00:00 2001 From: Andrew Arneson Date: Mon, 10 Jun 2024 19:10:57 -0600 Subject: [PATCH] Raise error if video file has 0 frames or is in valid. (#275) video.get(cv2.CAP_PROP_FRAME_COUNT) returns 0 or -1 --- tagstudio/src/qt/widgets/preview_panel.py | 2 ++ tagstudio/src/qt/widgets/thumb_renderer.py | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/tagstudio/src/qt/widgets/preview_panel.py b/tagstudio/src/qt/widgets/preview_panel.py index a595aa8c..18289c49 100644 --- a/tagstudio/src/qt/widgets/preview_panel.py +++ b/tagstudio/src/qt/widgets/preview_panel.py @@ -532,6 +532,8 @@ class PreviewPanel(QWidget): pass elif filepath.suffix.lower() in VIDEO_TYPES: video = cv2.VideoCapture(str(filepath)) + if video.get(cv2.CAP_PROP_FRAME_COUNT) <= 0: + raise cv2.error("File is invalid or has 0 frames") video.set(cv2.CAP_PROP_POS_FRAMES, 0) success, frame = video.read() frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) diff --git a/tagstudio/src/qt/widgets/thumb_renderer.py b/tagstudio/src/qt/widgets/thumb_renderer.py index 8198e9ff..1e6a3ad1 100644 --- a/tagstudio/src/qt/widgets/thumb_renderer.py +++ b/tagstudio/src/qt/widgets/thumb_renderer.py @@ -162,10 +162,10 @@ class ThumbRenderer(QObject): # Videos ======================================================= elif _filepath.suffix.lower() in VIDEO_TYPES: video = cv2.VideoCapture(str(_filepath)) - video.set( - cv2.CAP_PROP_POS_FRAMES, - (video.get(cv2.CAP_PROP_FRAME_COUNT) // 2), - ) + frame_count = video.get(cv2.CAP_PROP_FRAME_COUNT) + if frame_count <= 0: + raise cv2.error("File is invalid or has 0 frames") + video.set(cv2.CAP_PROP_POS_FRAMES, frame_count // 2) success, frame = video.read() if not success: # Depending on the video format, compression, and frame