Skip to content

MarkShawn2020/video2ppt

 
 

Repository files navigation

video2ppt Cover

Logo video2ppt

Extract slide decks from video content
macOS / Linux / Windows

Release License Downloads


Drop a video file (or paste a URL), pick a similarity threshold, and get a clean set of slides as PNG frames or a single PDF. Frames are compared using per-channel RGB histogram intersection, so only visually distinct slides are kept.

Features

  • Smart frame detection - RGB histogram fingerprinting filters out duplicate/similar frames
  • Real-time export - PNG frames are written to disk as they're found, not after the full video is processed
  • Remote video support - Paste a YouTube or direct URL; yt-dlp downloads it automatically
  • PDF export - Flatten kept frames into a single multi-page PDF
  • Timestamp overlay - Optional HH:MM:SS burn-in on each slide (built-in pixel font, no dependencies)
  • Time range filtering - Process only a slice of the video with start/end timestamps
  • Cross-platform - Native desktop app for macOS (Apple Silicon + Intel), Linux, and Windows

Install

Grab the latest build from Releases:

Platform File
macOS (Apple Silicon) video2ppt_*_aarch64.dmg
macOS (Intel) video2ppt_*_x64.dmg
Windows video2ppt_*_x64-setup.exe
Linux (Debian/Ubuntu) video2ppt_*_amd64.deb
Linux (Fedora/RHEL) video2ppt_*_x86_64.rpm
Linux (AppImage) video2ppt_*_amd64.AppImage

macOS note: The app is not signed yet. After installing, run:

sudo xattr -dr com.apple.quarantine /Applications/video2ppt.app

Prerequisites

ffmpeg and ffprobe must be on your PATH:

# macOS
brew install ffmpeg

# Ubuntu/Debian
sudo apt install ffmpeg

# Windows (scoop)
scoop install ffmpeg

How it works

  1. Probe - ffprobe reads the video's duration and resolution
  2. Sample - ffmpeg decodes the video at a configurable FPS into a temp directory
  3. Compare - Each frame is fingerprinted (per-channel RGB histogram) and compared against the last kept slide
  4. Filter - Frames below the similarity threshold are kept as unique slides
  5. Export - Kept frames are saved as PNGs (real-time) or combined into a PDF

Develop

# Prerequisites: Rust 1.77+, Node.js, pnpm, ffmpeg
pnpm install
pnpm tauri:dev

Build release binaries:

pnpm tauri:build

Tech Stack

Layer Technology
Runtime Tauri 2
Backend Rust (image, printpdf, ffmpeg CLI)
Frontend React + TypeScript + Vite
UI shadcn/ui + Tailwind CSS
Video ffmpeg / ffprobe (sidecar)
Download yt-dlp (bundled)

Star History

Star History Chart

License

MIT

About

Extract presentation slides from videos with accurate timestamps

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 48.8%
  • Rust 44.4%
  • CSS 3.1%
  • Shell 3.1%
  • Other 0.6%