A RAM-based video player with Quality Control (QC) annotation features. Built with PySide6 and OpenCV, this application loads entire videos into memory for smooth playback and frame-accurate drawing annotations.
- RAM-based playback: Load entire videos into memory for instant frame access
- Frame-accurate navigation: Step through frames with keyboard shortcuts
- Drawing tools: Annotate frames with multiple colors and adjustable stroke widths
- IN/OUT points: Mark specific frame ranges for review
- Timeline visualization: Visual timeline with frame markers and annotation indicators
- Pixel inspector: Real-time pixel value display (normalized RGB values)
- Export capabilities: Export current frame or all annotated frames as PNG
- Keyboard shortcuts: Efficient workflow with Space (play/pause), arrows (step frames), I/O (set IN/OUT points)
- Changelog tracking: Built-in version history
- Python 3.8+
- Virtual environment support (venv)
- Sufficient RAM for video files (entire video is loaded into memory)
cd /path/to/ram-video-playerOn macOS/Linux:
python3 -m venv .venvOn Windows:
python -m venv .venvOn macOS/Linux:
source .venv/bin/activateOn Windows (Command Prompt):
.venv\Scripts\activate.batOn Windows (PowerShell):
.venv\Scripts\Activate.ps1After activation, your terminal prompt should show (.venv) prefix.
pip install -r requirements.txtThis will install:
numpy- Numerical operations and array handlingopencv-python- Video reading and image processingPySide6- Qt bindings for the GUIpsutil(optional) - RAM usage display
With the virtual environment activated:
python video.pyOr make it executable (macOS/Linux):
chmod +x video.py
./video.py- Open Video: Click "Videó megnyitása" to select a video file (supports .mov, .mp4, .m4v, .avi)
- Playback Controls:
- Space: Play/Pause
- Left/Right Arrow: Step frame backward/forward
- Play buttons: Forward/reverse playback
- Drawing:
- Click a color swatch to enable drawing mode
- Adjust stroke width with the slider
- Draw on frames with mouse
- Ctrl+Z: Undo last stroke
- IN/OUT Points:
- I: Set IN point
- O: Set OUT point
- Playback will loop within the IN/OUT range
- Export:
- "PNG (aktuális)": Save current frame with annotations
- "Export annotált PNG-k...": Export all annotated frames
| Key | Action |
|---|---|
| Space | Play/Pause |
| Left Arrow | Previous frame |
| Right Arrow | Next frame |
| I | Set IN point |
| O | Set OUT point |
| V | Toggle QC overlay visibility |
| Page Up | Jump to previous annotated frame |
| Page Down | Jump to next annotated frame |
| Ctrl+Z | Undo last stroke |
When done, deactivate the virtual environment:
deactivateIf you get ModuleNotFoundError, ensure:
- Virtual environment is activated (check for
(.venv)in prompt) - Dependencies are installed:
pip install -r requirements.txt
This player loads entire videos into RAM. If you experience memory errors:
- Close other applications
- Try shorter or lower resolution videos
- The app will display available RAM in the status bar
Ensure the video file is:
- In a supported format (.mov, .mp4, .m4v, .avi)
- Not corrupted
- Readable by OpenCV
Current version: v0.016
To view the full changelog, click "Változások..." button in the application.
This project uses:
- PySide6 (LGPL)
- OpenCV (Apache 2.0)
- NumPy (BSD)