diff --git a/tsmark/__init__.py b/tsmark/__init__.py index 0ba227a..f8d3790 100644 --- a/tsmark/__init__.py +++ b/tsmark/__init__.py @@ -1,7 +1,7 @@ from tsmark.video_annotator import Marker import argparse -VERSION = "0.4.3" +VERSION = "0.4.4" def get_options(): @@ -23,6 +23,15 @@ def get_options(): required=False, help="Save timestamps to a CSV file", ) + parser.add_argument( + "--fps", + action="store", + dest="fps", + default=None, + required=False, + type=float, + help="Force FPS to play video", + ) parser.add_argument("--version", action="version", version=VERSION) parser.add_argument(action="store", dest="video") return parser.parse_args() diff --git a/tsmark/video_annotator.py b/tsmark/video_annotator.py index 43abae4..d47bcbd 100755 --- a/tsmark/video_annotator.py +++ b/tsmark/video_annotator.py @@ -19,6 +19,7 @@ class Marker: self.frame_visu = [] self.max_res = (1280, 720) self.min_res = (512, None) + self.forced_fps = opts.fps try: self.open() @@ -37,6 +38,8 @@ class Marker: self.frames = int(self.video_reader.get(cv2.CAP_PROP_FRAME_COUNT)) self.fps = self.video_reader.get(cv2.CAP_PROP_FPS) self.spf = 1 / self.fps + self.viewer_fps = self.forced_fps if self.forced_fps else self.fps + self.viewer_spf = 1 / self.viewer_fps self.video_length = self.frames * self.fps def calculate_res(self): @@ -118,7 +121,6 @@ class Marker: (84, 255, 63), 1, ) - # cv2.line(frame, (bar_position, top), (bar_position, bottom), (32,32,32), 3) cv2.line( frame, (bar_position, self.bar_top), @@ -437,7 +439,7 @@ class Marker: if self.read_next: self.video_reader.set(cv2.CAP_PROP_POS_FRAMES, self.nr) - time_to_wait = self.spf - time.time() + show_time + time_to_wait = self.viewer_spf - time.time() + show_time if time_to_wait > 0: time.sleep(time_to_wait)