class_docstr: VideoManager object for getting frames from video source for inference
  using multithreading for read and write frames.
class_docstr_tok: ["VideoManager","object","for","getting","frames","from","video","source","for","inference","using","multithreading","for","read","and","write","frames","."]
docstr: Return a video writer object.
  Args:
      path (str): path to the output video file.
      fps (int or float): frames per second.
docstr_tok: ["Return","a","video","writer","object",".","Args",":","path","(","str",")",":","path","to","the","output","video","file",".","fps","(","int","or","float",")",":","frames","per","second","."]
code: def get_output_file(self, path, fps=30):
      """
      Return a video writer object.
      Args:
          path (str): path to the output video file.
          fps (int or float): frames per second.
      """
      return cv2.VideoWriter(
          filename=path,
          fourcc=cv2.VideoWriter_fourcc(*"mp4v"),
          fps=float(fps),
          frameSize=(self.display_width, self.display_height),
          isColor=True,
      )
  
imports: import atexit
  import copy
  import queue
  import threading
  import time
  import cv2
  import slowfast.utils.logging
  from slowfast.visualization.utils import TaskInfo
label_desc: Use image node_id 2 for calling the ThreadVideoManager obj's underlying member method code with example usage: obj.get_output_file(path, fps) and returns: cv2