def setUp(self): self.videofile_fr1 = os.path.join( settings['tempdir'], '~test_av_frame_source_test_case_fr_1.mp4') self.videofile_fr3 = os.path.join( settings['tempdir'], '~test_av_frame_source_test_case_fr_3.mp4') # make a 1fr and 3fr video mk_sample_video(self.videofile_fr1, 1, 320, 240, fractions.Fraction(1)) mk_sample_video(self.videofile_fr3, 1, 320, 240, fractions.Fraction(3)) # path to avutil fr to compare with self.imagefile = os.path.join(settings['tempdir'], '~test_av_frame_source_test_case.png') self.src_1 = OpenCvFrameSource(self.videofile_fr1) self.src_3 = OpenCvFrameSource(self.videofile_fr3) self.src_3.open()
def render(self): filename = os.path.splitext(os.path.basename(self.src))[0] tempfile1 = os.path.join( settings['tempdir'], '{}.{}.{}'.format(filename, os.getpid(), settings['v_container']).lower()) log.info("Rendering to:\t%s", os.path.basename(tempfile1)) log.info("Final destination:\t%s", self.dest) self.fr_source = OpenCvFrameSource(self.src) self.fr_source.open() self.mk_render_pipe(tempfile1) self.frs_to_render = 0 for sub in self.sequence.subregions: if not self.keep_subregions and sub.skip: continue else: self.subs_to_render += 1 self.frs_to_render += self.calc_frs_to_render(sub) if self.show_preview: cv2.namedWindow(self.window_title, cv2.WINDOW_OPENGL) cv2.resizeWindow(self.window_title, self.w, self.h) self.progress = 0 log.info("Rendering progress:\t{:.2f}%".format(0)) for i, sub in enumerate(self.sequence.subregions): if not self.keep_subregions and sub.skip: log.info("Skipping Subregion (%d): %s", i, str(sub)) continue else: log.info("Start working on Subregion (%d): %s", i, str(sub)) self.curr_sub_idx += 1 self.render_subregion(sub) log.info("Done rendering Subregion (%d)", i) if self.show_preview: cv2.destroyAllWindows() self.fr_source.close() self.close() log.info("Rendering is finished") if self.mux: if self.av_info['a_stream_exists']: self.mux_orig_audio_with_rendered_video(tempfile1) return else: log.warn( 'Not muxing because no audio stream exists in the input file' ) log.info("Moving: %s -> %s", os.path.basename(tempfile1), self.dest) shutil.move(tempfile1, self.dest)
def render_video(self): src_fname = os.path.splitext(os.path.basename(self.src))[0] tempfile1 = os.path.join( settings['tempdir'], '~{}.{}'.format(src_fname, settings['v_container']).lower()) self.fr_source = OpenCvFrameSource(self.src) self.fr_source.open() self.mk_render_pipe(tempfile1) self.subs_to_render = 0 for sub in self.sequence.subregions: if self.trim_regions and sub.skip: continue else: self.subs_to_render += 1 if self.show_preview: cv2.namedWindow(self.preview_win_title, cv2.WINDOW_OPENGL) cv2.resizeWindow(self.preview_win_title, self.w, self.h) for i, sub in enumerate(self.sequence.subregions): if self.trim_regions and sub.skip: continue else: self.curr_sub_idx += 1 log.info('Rendering: Sub {0:02d}...'.format(i)) self.render_subregion(sub) if self.show_preview: cv2.destroyAllWindows() self.fr_source.close() self.close_render_pipe() if self.mux: self.mux_original_audio_with_rendered_video(tempfile1) return else: shutil.move(tempfile1, self.dst)