          logger.debug(retval)
          return retval
  
      @property
      def output_params(self):
          """ FFMPEG Output parameters """
          codec = self.config["codec"]
          tune = self.config["tune"]
          # Force all frames to the same size
          output_args = ["-vf", "scale={}".format(self.output_dimensions)]
  
 
</s> remove         output_args = ["-vf", "scale={}".format(self.output_dimensions)]
 </s> add         output_args = ["-vf", f"scale={self._output_dimensions}"] </s> remove     def video_tmp_file(self):
        """ Temporary video file, prior to muxing final audio """
        path, filename = os.path.split(self.video_file)
        retval = os.path.join(path, "__tmp_{}".format(filename))
 </s> add     def _video_tmp_file(self) -> str:
        """ str: Full path to the temporary video file that is generated prior to muxing final
        audio. """
        path, filename = os.path.split(self._output_filename)
        retval = os.path.join(path, f"__tmp_{filename}") </s> remove     def valid_tune(self):
        """ Return whether selected tune is valid for selected codec """
 </s> add     def _valid_tunes(self) -> dict:
        """ dict: Valid tune selections for libx264 and libx265 codecs. """ </s> remove     def video_fps(self):
        """ Return the fps of source video """
        reader = imageio.get_reader(self.source_video, "ffmpeg")
 </s> add     def _video_fps(self) -> float:
        """ float: The fps of the source video. """
        reader = imageio.get_reader(self._source_video, "ffmpeg") </s> remove         self.source_video = source_video
        self.frame_ranges = frame_ranges
        self.frame_order = self.set_frame_order(total_count)
        self.output_dimensions = None  # Fix dims of 1st frame in case of different sized images
        self.writer = None  # Need to know dimensions of first frame, so set writer then

    @property
    def video_file(self):
        """ Return full path to video output """
        filename = os.path.basename(self.source_video)
        filename = os.path.splitext(filename)[0]
        filename = "{}_converted.{}".format(filename, self.config["container"])
        retval = os.path.join(self.output_folder, filename)
        logger.debug(retval)
        return retval
 </s> add         self._source_video: str = source_video
        self._output_filename: str = self._get_output_filename()
        self._frame_ranges: Optional[List[int]] = frame_ranges
        self._frame_order: List[int] = self._set_frame_order(total_count)
        self._output_dimensions: Optional[str] = None  # Fix dims on 1st received frame
        # Need to know dimensions of first frame, so set writer then
        self._writer: Optional[imageio.plugins.ffmpeg.FfmpegFormat.Writer] = None
    def _output_params(self) -> List[str]:
        """ list: The FFMPEG Output parameters """
          logger.debug(retval)
          return retval
  
      @property
    def _output_params(self) -> List[str]:
        """ list: The FFMPEG Output parameters """
    def _output_params(self) -> List[str]:
        """ list: The FFMPEG Output parameters """
          codec = self.config["codec"]
          tune = self.config["tune"]
          # Force all frames to the same size
          output_args = ["-vf", "scale={}".format(self.output_dimensions)]
  
keep keep keep keep replace replace keep keep keep keep keep
 ffmpeg writer: Create new filename if output pre-exists 
plugins/convert/writer/ffmpeg.py