Skip to content

🎬 Desktop app to auto-detect highlights from stream videos using audio & chat analysis. Tauri + Rust + Svelte.

License

Notifications You must be signed in to change notification settings

nirvagold/stream-clipper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎬 Stream Clipper

Auto-detect highlight moments from streaming videos and generate clips automatically

License Platform Built with Tauri Rust Svelte

Features β€’ Installation β€’ Usage β€’ Tech Stack β€’ Contributing β€’ License


πŸ“– About

Stream Clipper is a desktop application that automatically detects highlight moments in streaming videos (Twitch, YouTube, etc.) using audio analysis and chat activity detection. Perfect for content creators, streamers, and video editors who want to quickly find and export the best moments from long streams.

Why Stream Clipper?

  • ⏱️ Save Hours of Editing - No more scrubbing through hours of footage
  • 🎯 Smart Detection - Uses audio spikes and chat activity to find highlights
  • πŸš€ Fast Processing - Analyzes videos 10-50x faster than realtime
  • πŸ’» Offline & Private - All processing happens locally on your machine
  • 🎨 Modern UI - Clean, intuitive interface built with Svelte

✨ Features

Core Features

Feature Free Pro
Audio spike detection βœ… βœ…
Voice Activity Detection (VAD) βœ… βœ…
Timeline visualization βœ… βœ…
Waveform display βœ… βœ…
Clip preview βœ… βœ…
Max clips per video 5 Unlimited
Export resolution 720p Up to 4K
Watermark Yes No
Chat activity detection ❌ βœ…
Custom keywords ❌ βœ…
Vertical crop (9:16) ❌ βœ…
Fade effects ❌ βœ…
WebM format ❌ βœ…

Detection Methods

🎡 Audio Analysis

  • RMS Volume Detection - Detects loud moments (cheering, reactions)
  • Voice Activity Detection - Uses WebRTC VAD to detect speech patterns
  • Configurable Sensitivity - Adjust threshold to find more or fewer highlights

πŸ’¬ Chat Analysis (Pro)

  • Twitch JSON - Parse chat logs from TwitchDownloader
  • YouTube JSON - Parse chat logs from yt-dlp
  • Generic TXT - Support for [HH:MM:SS] user: message format
  • Keyword Detection - Custom keywords like "POG", "CLIP IT", "OMG"
  • Activity Spikes - Detect moments when chat goes crazy

🎯 Highlight Scoring

  • Combo Detection - Audio + Chat overlap = higher score
  • Weighted Scoring - Customize importance of audio vs chat
  • Smart Merging - Combine adjacent highlights automatically

πŸ“₯ Installation

Windows

  1. Download the latest release from Releases
  2. Run Stream Clipper_x.x.x_x64-setup.exe (NSIS installer) or Stream Clipper_x.x.x_x64_en-US.msi
  3. Follow the installation wizard
  4. Launch Stream Clipper from Start Menu

macOS

Coming soon! Build from source for now.

Linux

Coming soon! Build from source for now.

Build from Source

Prerequisites

Steps

# Clone the repository
git clone https://github.com/nirvagold/stream-clipper.git
cd stream-clipper

# Install dependencies
npm install

# Run in development mode
npm run tauri dev

# Build for production
npm run tauri build

πŸš€ Usage

Quick Start

  1. Import Video - Drag & drop or click to browse for your video file
  2. Import Chat (Optional, Pro) - Add chat log for better detection
  3. Adjust Settings - Configure audio sensitivity and other options
  4. Analyze - Click "Analyze Video" to detect highlights
  5. Review - Preview detected clips in the timeline
  6. Export - Select clips and export to your desired format

Supported Formats

Video Input

  • MP4, MKV, MOV, AVI, WebM, FLV, TS

Chat Input (Pro)

  • Twitch JSON (from TwitchDownloader)
  • YouTube JSON (from yt-dlp)
  • Generic TXT ([HH:MM:SS] username: message)

Export Output

  • MP4 (H.264 + AAC)
  • WebM (VP9 + Opus) - Pro only

Tips for Best Results

  1. Lower sensitivity = More highlights detected
  2. Use chat logs when available for better accuracy
  3. Adjust padding to include context before/after highlights
  4. Preview clips before exporting to verify quality

πŸ› οΈ Tech Stack

Stream Clipper is built with modern, performant technologies:

Layer Technology
Framework Tauri 2.0 - Secure, lightweight desktop apps
Backend Rust - Fast, memory-safe processing
Frontend Svelte 5 - Reactive UI with minimal overhead
Audio hound + webrtc-vad
Video FFmpeg - Industry-standard video processing
Styling CSS with CSS Variables

Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                    STREAM CLIPPER APP                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  FRONTEND (Svelte + TypeScript)                             β”‚
β”‚  - Reactive UI Components                                   β”‚
β”‚  - State Management (Svelte stores)                         β”‚
β”‚  - Tauri IPC calls                                          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  BACKEND (Rust + Tauri)                                     β”‚
β”‚  - Audio Analysis (RMS + VAD)                               β”‚
β”‚  - Chat Parsing (Twitch/YouTube/TXT)                        β”‚
β”‚  - Highlight Scoring & Merging                              β”‚
β”‚  - Video Clipping (FFmpeg wrapper)                          β”‚
β”‚  - License Validation                                       β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  EXTERNAL                                                   β”‚
β”‚  - FFmpeg (bundled)                                         β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🀝 Contributing

We welcome contributions from the community! Here's how you can help:

Ways to Contribute

  • πŸ› Report Bugs - Open an issue with detailed reproduction steps
  • πŸ’‘ Suggest Features - Share your ideas in discussions
  • πŸ“ Improve Docs - Help make documentation clearer
  • πŸ”§ Submit PRs - Fix bugs or implement features

Development Setup

  1. Fork the repository
  2. Clone your fork:
    git clone https://github.com/YOUR_USERNAME/stream-clipper.git
  3. Create a feature branch:
    git checkout -b feature/amazing-feature
  4. Make your changes
  5. Run tests and linting:
    npm run check
    cd src-tauri && cargo clippy
  6. Commit your changes:
    git commit -m "feat: add amazing feature"
  7. Push to your fork:
    git push origin feature/amazing-feature
  8. Open a Pull Request

Commit Convention

We use Conventional Commits:

  • feat: - New feature
  • fix: - Bug fix
  • docs: - Documentation changes
  • style: - Code style changes (formatting, etc.)
  • refactor: - Code refactoring
  • perf: - Performance improvements
  • test: - Adding or updating tests
  • chore: - Maintenance tasks

Code Style

  • Rust: Follow rustfmt and clippy recommendations
  • TypeScript/Svelte: Follow ESLint and Prettier configurations
  • Commits: Use conventional commit messages

πŸ“‹ Roadmap

v0.2.0 (Planned)

  • macOS and Linux builds
  • Batch processing multiple videos
  • Custom export presets
  • Keyboard shortcuts

v0.3.0 (Future)

  • Auto-caption with Whisper
  • Direct upload to YouTube/TikTok
  • Game-specific detection (kill feed OCR)
  • Smart vertical crop with face detection

❓ FAQ

What video formats are supported?

Stream Clipper supports most common video formats including MP4, MKV, MOV, AVI, WebM, FLV, and TS. Any format that FFmpeg can decode should work.

How does the audio detection work?

The app extracts audio from your video, splits it into small chunks, and calculates the volume (RMS) of each chunk. It then identifies moments where the volume exceeds a threshold based on the baseline. Voice Activity Detection (VAD) is also used to detect speech patterns.

Where can I get chat logs?
Is my data sent anywhere?

No! All processing happens locally on your machine. Stream Clipper does not send any data to external servers. Your videos and chat logs never leave your computer.

How do I get Pro features?

Pro features can be unlocked with a license key. Contact us for purchasing options.


πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™ Acknowledgments

  • Tauri - For the amazing desktop framework
  • Svelte - For the reactive UI framework
  • FFmpeg - For video processing capabilities
  • WebRTC VAD - For voice activity detection

Made with ❀️ for content creators

⬆ Back to Top