Skip to content

Repository files navigation

PresentationX - Video Mark Player

中文文档:README.zh-CN.md

A desktop video mark player built with PyQt6 and OpenCV. Add, edit, import, and export time-based marks on the video timeline — ideal for content analysis, presentation rehearsal, and footage review.

Features

  • Video Playback — Load local video files with play, pause, stop, and seek-bar dragging
  • Timeline Marks — Add marks at any time point, displayed as triangle indicators below the timeline
  • Mark Management — Edit annotations, modify timestamps, batch delete, select all / invert selection
  • Mark Navigation — Jump to previous/next mark instantly; auto-pause when a mark is reached
  • Import/Export Marks — Export marks to .txt files, edit manually, and re-import for precise playback control
  • Fullscreen Mode — Borderless fullscreen playback, perfect for presentations
  • Audio Sync — Synchronized video and audio playback with adjustable volume
  • Keyboard Shortcuts — All common operations accessible via keyboard

UI Layout

┌──────────────────────────────┬──────────────┐
│ │ Mark List │
│ Video Display │ ├ 00:00.000 │
│ │ ├ 00:05.320 │
│ │ ├ ... │
├──────────────────────────────┤ │
│ 00:00:00 ──●── 00:10:00 🔊 │ [Export][Import]│
│ 00:00.000 ▲▲▲ 00:05.320 ... │ │
├──────────────────────────────┤ │
│[Load][Play][Mark][Stop][Full]│ │
└──────────────────────────────┴──────────────┘

Requirements

  • Python 3.9+
  • OS: Windows / macOS / Linux

Python Dependencies

PackagePurpose
PyQt6GUI framework
opencv-pythonVideo decoding and frame processing

PyQt6 includes QtMultimedia for audio playback — no extra packages needed.

Installation & Usage

1. Clone the repository

git clone https://github.com/your-username/PresentationX.git
cd PresentationX

2. Create a virtual environment (recommended)

python -m venv venv
source venv/bin/activate # Linux/macOS# or
venv\Scripts\activate # Windows

3. Install dependencies

pip install -r requirements.txt

4. Run

python video_player.py

User Guide

Basic Controls

ActionHow
Load videoClick "Load" and select a video file
Play/PauseClick "Play" or press Space
Add markClick "Add Mark" or press M at the current frame
StopClick "Stop" to return to the beginning
FullscreenClick "Fullscreen" or press F / F11 / `

Mark Operations

ActionHow
Jump to markDouble-click a mark in the mark list
Edit annotationRight-click mark → "Edit Note"
Edit timestampRight-click mark → "Edit Time", format: MM:SS.xxx
Delete markSelect and press Delete / Backspace, or right-click → "Delete Selected"
Select all / InvertRight-click → "Select" → "All" / "Invert"; or Ctrl+A

Keyboard Shortcuts

ShortcutAction
→ / ↓Jump to next mark and play
← / ↑Jump to the mark before previous and play
Enter / R / ShiftJump to previous mark and play
SpacePlay / Pause
MAdd mark at current frame
Delete / BackspaceDelete selected marks
F / F11 / `Toggle fullscreen
EscExit fullscreen

Mark File Format

Exported .txt files contain one mark per line:

00:00.000 Start
00:05.320 First section
01:23.450 Key review
  • Time format: MM:SS.mmm (minutes:seconds.milliseconds)
  • Time and annotation separated by a space
  • Edit manually and re-import for precise playback sequencing

Project Structure

PresentationX/
├── video_player.py # Main application (UI, video playback, mark logic)
├── styles.py # UI style definitions (QSS/CSS)
├── requirements.txt # Python dependencies
├── README.md # Project documentation (English)
└── README.zh-CN.md # 中文文档

Use Cases

  • Presentation Rehearsal — Mark each segment's timing for precise pacing control
  • Footage Review — Place marks at key frames for easy revisiting
  • Teaching Content Analysis — Segment and annotate instructional videos
  • Video Editing Reference — Record edit points for post-production

License

MIT License

About

A desktop video mark player built with PyQt6 and OpenCV. Add, edit, import, and export time-based marks on the video timeline — ideal for content analysis, presentation rehearsal, and footage review.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages