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