lokesh341 commited on
Commit
0f1ca3c
·
1 Parent(s): 13105d4

Update services/video_service.py

Browse files
Files changed (1) hide show
  1. services/video_service.py +27 -4
services/video_service.py CHANGED
@@ -6,14 +6,34 @@ VIDEO_DIR = "data"
6
  video_files = [os.path.join(VIDEO_DIR, file) for file in sorted(os.listdir(VIDEO_DIR)) if file.endswith((".mp4", ".avi"))]
7
  video_index = 0
8
  cap = None
9
- FRAME_SKIP = 5 # Process every 5th frame for faster reading
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
10
 
11
  def get_next_video_frame():
12
- global cap, video_index
13
 
14
  if not video_files:
15
  raise RuntimeError("No video files found in the 'data' directory.")
16
 
 
 
 
 
17
  if cap is None or not cap.isOpened():
18
  cap = cv2.VideoCapture(video_files[video_index])
19
 
@@ -26,9 +46,12 @@ def get_next_video_frame():
26
  ret, frame = cap.read()
27
  if not ret:
28
  raise RuntimeError(f"Cannot read video {video_files[video_index]}")
29
-
 
 
30
  return frame
31
 
32
  def reset_video_index():
33
  global video_index
34
- video_index = 0
 
 
6
  video_files = [os.path.join(VIDEO_DIR, file) for file in sorted(os.listdir(VIDEO_DIR)) if file.endswith((".mp4", ".avi"))]
7
  video_index = 0
8
  cap = None
9
+ FRAME_SKIP = 3 # Skip more frames for faster processing
10
+ PRELOADED_FRAMES = []
11
+
12
+ def preload_video():
13
+ global cap, video_index, PRELOADED_FRAMES
14
+ if not video_files:
15
+ return
16
+ cap = cv2.VideoCapture(video_files[video_index])
17
+ for _ in range(5): # Preload 5 frames
18
+ ret, frame = cap.read()
19
+ if ret:
20
+ frame = cv2.resize(frame, (320, 240)) # Reduce resolution for faster loading
21
+ PRELOADED_FRAMES.append(frame)
22
+ else:
23
+ break
24
+ cap.release()
25
+ cap = None
26
 
27
  def get_next_video_frame():
28
+ global cap, video_index, PRELOADED_FRAMES
29
 
30
  if not video_files:
31
  raise RuntimeError("No video files found in the 'data' directory.")
32
 
33
+ if PRELOADED_FRAMES:
34
+ frame = PRELOADED_FRAMES.pop(0)
35
+ return frame
36
+
37
  if cap is None or not cap.isOpened():
38
  cap = cv2.VideoCapture(video_files[video_index])
39
 
 
46
  ret, frame = cap.read()
47
  if not ret:
48
  raise RuntimeError(f"Cannot read video {video_files[video_index]}")
49
+ break
50
+
51
+ frame = cv2.resize(frame, (320, 240)) # Reduce resolution for faster processing
52
  return frame
53
 
54
  def reset_video_index():
55
  global video_index
56
+ video_index = 0
57
+ preload_video()