juanpablomesa commited on
Commit
ccc4e99
·
1 Parent(s): ade4ac9

Changed OpenCV2 for decord in extracting videoframes

Browse files
Files changed (2) hide show
  1. handler.py +30 -1
  2. requirements.txt +1 -0
handler.py CHANGED
@@ -56,7 +56,7 @@ class EndpointHandler:
56
  print(f"Error downloading the video: {e}")
57
  return None, None
58
 
59
- def extract_evenly_spaced_frames_from_bytes(
60
  self, video_bytes: bytes, num_frames: int = 32
61
  ) -> list:
62
  # Write bytes to a temporary file
@@ -88,6 +88,35 @@ class EndpointHandler:
88
 
89
  return frames
90
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
91
  def preprocess_frames(self, video_frames):
92
  """
93
  Define a preprocessing function to convert video frames into a format suitable for the model
 
56
  print(f"Error downloading the video: {e}")
57
  return None, None
58
 
59
+ def extract_evenly_spaced_frames_from_bytes_cv2(
60
  self, video_bytes: bytes, num_frames: int = 32
61
  ) -> list:
62
  # Write bytes to a temporary file
 
88
 
89
  return frames
90
 
91
+ from decord import VideoReader
92
+ from decord import cpu
93
+
94
+ def extract_evenly_spaced_frames_from_bytes(
95
+ self, video_bytes: bytes, num_frames: int = 32
96
+ ) -> list:
97
+ # Create a VideoReader object from bytes
98
+ vr = VideoReader(video_bytes, ctx=cpu(0))
99
+
100
+ # Get the total number of frames in the video
101
+ total_frames = len(vr)
102
+
103
+ # Calculate the interval at which frames should be extracted
104
+ interval = total_frames // num_frames
105
+
106
+ frames = []
107
+
108
+ for i in range(num_frames):
109
+ # Seek to the next frame to be captured
110
+ frame_index = min(i * interval, total_frames - 1)
111
+
112
+ # Read the frame
113
+ frame = vr[frame_index].asnumpy()
114
+
115
+ # Add the frame to the list
116
+ frames.append(frame)
117
+
118
+ return frames
119
+
120
  def preprocess_frames(self, video_frames):
121
  """
122
  Define a preprocessing function to convert video frames into a format suitable for the model
requirements.txt CHANGED
@@ -23,3 +23,4 @@ tqdm==4.66.1
23
  transformers==4.27.2
24
  typing_extensions==4.8.0
25
  urllib3==2.0.7
 
 
23
  transformers==4.27.2
24
  typing_extensions==4.8.0
25
  urllib3==2.0.7
26
+ decord==0.6.0