lokesh341 commited on
Commit
c374261
·
1 Parent(s): 47feacb

Update services/video_service.py

Browse files
Files changed (1) hide show
  1. services/video_service.py +40 -11
services/video_service.py CHANGED
@@ -1,28 +1,48 @@
1
- # services/video_service.py
2
  import cv2
3
  import os
4
 
5
  # Global variables
6
- video_path = "sample.mp4" # Default video file
7
  cap = None
8
  frame_index = 0
 
9
 
10
- def preload_video():
11
  """
12
  Preload the video file.
 
 
 
 
13
  """
14
- global cap
15
- if not os.path.exists(video_path):
16
- raise FileNotFoundError(f"Video file {video_path} not found.")
17
- cap = cv2.VideoCapture(video_path)
18
- if not cap.isOpened():
19
- raise RuntimeError("Failed to open video file.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
20
 
21
  def get_next_video_frame():
22
  """
23
  Get the next frame from the video.
24
  Returns:
25
  numpy array: Video frame
 
 
26
  """
27
  global cap, frame_index
28
  if cap is None:
@@ -35,7 +55,7 @@ def get_next_video_frame():
35
  frame_index = 0
36
  ret, frame = cap.read()
37
  if not ret:
38
- raise RuntimeError("Failed to read video frame.")
39
 
40
  frame_index += 1
41
  return frame
@@ -47,4 +67,13 @@ def reset_video_index():
47
  global frame_index
48
  frame_index = 0
49
  if cap is not None:
50
- cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
 
 
 
 
 
 
 
 
 
 
 
1
  import cv2
2
  import os
3
 
4
  # Global variables
 
5
  cap = None
6
  frame_index = 0
7
+ current_video_path = None
8
 
9
+ def preload_video(video_path="sample.mp4"):
10
  """
11
  Preload the video file.
12
+ Args:
13
+ video_path (str): Path to the video file.
14
+ Returns:
15
+ str: Status message indicating success or failure.
16
  """
17
+ global cap, frame_index, current_video_path
18
+ try:
19
+ # Reset previous capture if any
20
+ if cap is not None:
21
+ cap.release()
22
+
23
+ # Check if video file exists
24
+ if not os.path.exists(video_path):
25
+ raise FileNotFoundError(f"Video file {video_path} not found. Please upload a video file named 'sample.mp4' or provide a different path.")
26
+
27
+ # Initialize video capture
28
+ cap = cv2.VideoCapture(video_path)
29
+ if not cap.isOpened():
30
+ raise RuntimeError(f"Failed to open video file {video_path}. Ensure the file is a valid video format (e.g., .mp4).")
31
+
32
+ frame_index = 0
33
+ current_video_path = video_path
34
+ return f"Successfully loaded video: {video_path}"
35
+ except Exception as e:
36
+ cap = None
37
+ return f"Error loading video: {str(e)}"
38
 
39
  def get_next_video_frame():
40
  """
41
  Get the next frame from the video.
42
  Returns:
43
  numpy array: Video frame
44
+ Raises:
45
+ RuntimeError: If video is not preloaded or frame cannot be read.
46
  """
47
  global cap, frame_index
48
  if cap is None:
 
55
  frame_index = 0
56
  ret, frame = cap.read()
57
  if not ret:
58
+ raise RuntimeError(f"Failed to read frame from video {current_video_path}.")
59
 
60
  frame_index += 1
61
  return frame
 
67
  global frame_index
68
  frame_index = 0
69
  if cap is not None:
70
+ cap.set(cv2.CAP_PROP_POS_FRAMES, 0)
71
+
72
+ def release_video():
73
+ """
74
+ Release the video capture object.
75
+ """
76
+ global cap
77
+ if cap is not None:
78
+ cap.release()
79
+ cap = None