class_docstr: VideoRecorder renders a nice movie of a rollout, frame by frame.
  
  It comes with an ``enabled`` option, so you can still use the same code on episodes where you don't want to record video.
  
  Note:
      You are responsible for calling :meth:`close` on a created VideoRecorder, or else you may leak an encoder process.
class_docstr_tok: ["VideoRecorder","renders","a","nice","movie","of","a","rollout",",","frame","by","frame",".","It","comes","with","an","``","enabled","``","option",",","so","you","can","still","use","the","same","code","on","episodes","where","you","do","n't","want","to","record","video",".","Note",":","You","are","responsible","for","calling",":","meth",":","`","close","`","on","a","created","VideoRecorder",",","or","else","you","may","leak","an","encoder","process","."]
docstr: Returns if the video recorder is functional, is enabled and not broken.
docstr_tok: ["Returns","if","the","video","recorder","is","functional",",","is","enabled","and","not","broken","."]
code: def functional(self):
      """Returns if the video recorder is functional, is enabled and not broken."""
      return self.enabled and not self.broken
  
file_path: gym/gym/wrappers/monitoring/video_recorder.py
imports: import json
  import os
  import os.path
  import tempfile
  from typing import List, Optional
  from gym import error, logger
label_desc: Use image node_id 2 for calling the VideoRecorder obj's underlying member method code with example usage: obj.functional() and returns: unknown