diff --git a/common/polystar/common/frame_generators/__init__.py b/common/polystar/common/frame_generators/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/common/polystar/common/frame_generators/frames_generator_abc.py b/common/polystar/common/frame_generators/frames_generator_abc.py
new file mode 100644
index 0000000000000000000000000000000000000000..a981a92e4fa8c413e75da61080f65e01cd7ea485
--- /dev/null
+++ b/common/polystar/common/frame_generators/frames_generator_abc.py
@@ -0,0 +1,10 @@
+from abc import ABC, abstractmethod
+from typing import Generator
+
+from polystar.common.models.image import Image
+
+
+class FrameGeneratorABC(ABC):
+    @abstractmethod
+    def generate(self) -> Generator[Image]:
+        pass
diff --git a/common/polystar/common/frame_generators/video_frame_generator.py b/common/polystar/common/frame_generators/video_frame_generator.py
index e28e7b7416adb0e79b5d70ea62492eb93a30d34c..605228ae0d9c7e88824bb2c7d495af43eadc7320 100644
--- a/common/polystar/common/frame_generators/video_frame_generator.py
+++ b/common/polystar/common/frame_generators/video_frame_generator.py
@@ -3,8 +3,10 @@ from pathlib import Path
 import cv2
 import ffmpeg
 
+from polystar.common.frame_generators.frames_generator_abc import FrameGeneratorABC
 
-class VideoFrameGenerator:
+
+class VideoFrameGenerator(FrameGeneratorABC):
     def __init__(self, video_path: Path, desired_fps: int):
         self.video_path: Path = video_path
         self.desired_fps: int = desired_fps