mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-02-05 10:45:21 +03:00
Don't fail when cv2 fails
This commit is contained in:
parent
b66810247e
commit
4f78e877cc
@ -1147,27 +1147,7 @@ def to_relative_box(
|
||||
|
||||
|
||||
def get_video_properties(url, get_duration=False):
|
||||
width = height = 0
|
||||
# Open the video stream
|
||||
video = cv2.VideoCapture(url)
|
||||
|
||||
# Check if the video stream was opened successfully
|
||||
if not video.isOpened():
|
||||
logger.debug(f"Error opening video stream {url}.")
|
||||
return None
|
||||
|
||||
# Get the width of frames in the video stream
|
||||
width = video.get(cv2.CAP_PROP_FRAME_WIDTH)
|
||||
|
||||
# Get the height of frames in the video stream
|
||||
height = video.get(cv2.CAP_PROP_FRAME_HEIGHT)
|
||||
|
||||
# Release the video stream
|
||||
video.release()
|
||||
|
||||
result = {"width": round(width), "height": round(height)}
|
||||
|
||||
if get_duration:
|
||||
def calculate_duration(video: Optional[any]) -> float:
|
||||
# Get the frames per second (fps) of the video stream
|
||||
fps = video.get(cv2.CAP_PROP_FPS)
|
||||
total_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
|
||||
@ -1192,6 +1172,36 @@ def get_video_properties(url, get_duration=False):
|
||||
else:
|
||||
duration = -1
|
||||
|
||||
result["duration"] = duration
|
||||
return duration
|
||||
|
||||
width = height = 0
|
||||
|
||||
try:
|
||||
# Open the video stream
|
||||
video = cv2.VideoCapture(url)
|
||||
|
||||
# Check if the video stream was opened successfully
|
||||
if not video.isOpened():
|
||||
logger.debug(f"Error opening video stream {url}.")
|
||||
raise Exception()
|
||||
except Exception:
|
||||
if get_duration:
|
||||
return {"duration": calculate_duration({})}
|
||||
|
||||
return {}
|
||||
|
||||
# Get the width of frames in the video stream
|
||||
width = video.get(cv2.CAP_PROP_FRAME_WIDTH)
|
||||
|
||||
# Get the height of frames in the video stream
|
||||
height = video.get(cv2.CAP_PROP_FRAME_HEIGHT)
|
||||
|
||||
# Release the video stream
|
||||
video.release()
|
||||
|
||||
result = {"width": round(width), "height": round(height)}
|
||||
|
||||
if get_duration:
|
||||
result["duration"] = calculate_duration(video)
|
||||
|
||||
return result
|
||||
|
||||
Loading…
Reference in New Issue
Block a user