MCPcopy Create free account
hub / github.com/ARM-software/AVH / _enableStream

Method _enableStream

interface/vstream/python/vsi_video_server.py:304–368  ·  view source on GitHub ↗

Enable the video stream for input (camera/file) or output (file/display). Initializes the OpenCV VideoCapture or VideoWriter as needed. Handles both new and existing files, and sets up frame dropping if input FPS > requested FPS. Returns: None

(self)

Source from the content-addressed store, hash-verified

302 return 0
303
304 def _enableStream(self):
305 """
306 Enable the video stream for input (camera/file) or output (file/display).
307
308 Initializes the OpenCV VideoCapture or VideoWriter as needed.
309 Handles both new and existing files, and sets up frame dropping if input FPS > requested FPS.
310 Returns:
311 None
312 """
313 if self.active:
314 logger.info("_enableStream: stream already active")
315 return
316
317 self.eos = False
318 self.frame_ratio = 0
319 self.frame_drop = 0
320
321 if self.stream is not None:
322 self.stream.release()
323 self.stream = None
324
325 if self.filename == None:
326 self.video = True
327
328 if self.video:
329 if self.mode == MODE_VIDEO_INPUT:
330 # Input mode: read from camera or video file
331 if self.filename == None:
332 # No filename specified: use camera interface
333 logger.debug("_enableStream: use camera interface for input streaming")
334 self.stream = cv2.VideoCapture(self.device)
335
336 if not self.stream.isOpened():
337 logger.error("_enableStream: failed to open Camera interface")
338 return
339 else:
340 # Filename specified: use video file
341 logger.debug("_enableStream: use file interface for input streaming")
342 self.stream = cv2.VideoCapture(self.filename)
343
344 # Display stream properties
345 logger.info(f"_enableStream: source stream properties: width={self.stream.get(cv2.CAP_PROP_FRAME_WIDTH)}, height={self.stream.get(cv2.CAP_PROP_FRAME_HEIGHT)}, fps={self.stream.get(cv2.CAP_PROP_FPS)}")
346
347 # Get the video stream FPS
348 video_fps = self.stream.get(cv2.CAP_PROP_FPS)
349
350 if video_fps > self.frame_rate:
351 self.frame_ratio = video_fps / self.frame_rate
352 logger.debug(f"_enableStream: source/target frame ratio={self.frame_ratio}")
353
354 if self.mode == MODE_VIDEO_OUTPUT:
355 # Output mode: write to video file or display window
356 if self.filename != None:
357 # Filename specified: output to file
358 logger.debug("_enableStream: output stream to a file")
359
360 extension = self.filename.suffix.lstrip('.').lower()
361 fourcc = cv2.VideoWriter_fourcc(*f'{video_fourcc[extension]}')

Callers 1

runMethod · 0.95

Calls 1

getMethod · 0.80

Tested by

no test coverage detected