Skip to main content

Clippiti

Cross-platforms livestream player with clipping and recording.

Clippiti is a PyQt6 desktop app that opens live streams via Streamlink, keeps a rolling local buffer, and lets you take snapshots or save both live and past moments as clips.

Features

  • Live stream playback via Streamlink + mpv
  • Rolling HLS buffer pipeline (Streamlink API -> ffmpeg)
  • Clip export from buffered timeline
  • Recording with optional auto-remux to MP4
  • Floating controls, keyboard shortcuts, and OSD feedback
  • YAML config with runtime-editable settings dialog
  • CLI overrides for Streamlink and mpv options

Supported OS: Linux, Windows, macOS

Requirements

  • Python 3.12+
  • Desktop environment that supports PyQt6 apps

Non-Python dependencies

Clippiti requires these external tools at runtime:

  • mpv / libmpv (used by python-mpv for playback)
  • ffmpeg

streamlink is used as a Python library (a clippiti-player dependency); Clippiti calls the Streamlink API in-process rather than spawning a streamlink command, so you do not need a system streamlink package on PATH.

Install them with your OS package manager.

Linux:

# Ubuntu / Debian
sudo apt install mpv libmpv2 ffmpeg

# Fedora
sudo dnf install mpv mpv-libs ffmpeg

# Arch Linux
sudo pacman -S mpv ffmpeg

macOS:

brew install mpv ffmpeg

Windows (PowerShell, using Scoop):

scoop install mpv ffmpeg

Verify they are available in PATH:

mpv --version
ffmpeg -version

Verify Python-installed Streamlink version from the same environment used to run Clippiti:

python -m streamlink --version

Install

From PyPI (recommended):

pip install clippiti-player

or with pipx:

pipx install clippiti-player

Run:

clippiti <url> <quality>

Install from source (development)

git clone <your-repo-url>
cd clippiti
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .

Alternative without editable install:

PYTHONPATH=src ./.venv/bin/python -m clippiti <url> <quality>

Command-line options

positional:
  url                      Stream URL to open
  quality                  Desired stream quality; accepts a comma-separated
                           fallback list, e.g. best, worst, 720p, "720p,best"

optional:
  --mpv TEXT               Additional mpv options (YAML or key=value)
  --config PATH            Path to config YAML file
  --workdir PATH           Path to runtime working directory
  --verbose                Enable verbose startup logs

Any arguments after a `--` separator are forwarded to Streamlink's own parser.
Run `python -m streamlink --help` to see the available Streamlink options.

Example:

clippiti https://www.twitch.tv/example_channel best --mpv "vf=hflip" -- --retry-max 5 --twitch-disable-ads

Companion App: Lurkiti

If you want a tray app that monitors your favorite livestreams and opens them directly in your player, check out my Lurkiti.

Lurkiti is a lightweight desktop companion for stream monitoring and quick one-click launch into Clippiti or any other Streamlink supported media player.

Configuration

Clippiti stores configuration in YAML.

Resolution order:

  1. --config <path> if provided
  2. User config location (clippiti.yaml) if it exists
  3. <workdir>/config.yaml if it exists
  4. Fallback to <workdir>/config.yaml (or ./clippiti.yaml if no workdir)

User config location (clippiti.yaml) is typically:

  • Linux: ~/.config/clippiti.yaml
  • Windows: %APPDATA%\clippiti.yaml
  • macOS: ~/Library/Application Support/clippiti.yaml

Default workdir is:

  • /tmp/clippiti

Development

Install dev/test deps (already included in requirements.txt):

source .venv/bin/activate
pip install -r requirements.txt

Run tests:

PYTHONPATH=src ./.venv/bin/python -m pytest -q

Documentation

Troubleshooting

  • Stream resolution fails:
    • Verify URL is online/public
    • Verify the streamlink package resolves the URL (python -m streamlink <url>)
  • Playback pipeline does not start:
    • Verify ffmpeg is installed and reachable
    • Use --verbose to inspect startup logs
  • mpv/video issues:
    • Verify python-mpv is installed
    • Try with simpler --mpv options first

License

MIT License - see LICENSE if present in this repository.

Acknowledgments

  • Streamlink
  • ffmpeg
  • PyQt6
  • python-mpv

Screenshots

Main Window Clip Dialog Settings Dialog

Metadata

Release files for clippiti-player 1.0.11

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for clippiti-player 1.0.11
File Size Uploaded
clippiti_player-1.0.11.tar.gz 2.2 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for clippiti-player 1.0.11
File Interpreter ABI Platform
clippiti_player-1.0.11-py3-none-any.whl Python 3 none any Details

Total release size: 2.4 MB

Release files / clippiti_player-1.0.11.tar.gz

Download URL clippiti_player-1.0.11.tar.gz
Size 2.2 MB
Tags Source
SHA-256 checksum
How to use checksums
f065f7d23306c2e159c5dfe825519f58fde9a19baa7effb01da834a7e06327f4
BLAKE2b-256 checksum
How to use checksums
ba9b88fbfe836a3459750704653e6cf9b4205227b92ea52c13bc9c13cf073067
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / clippiti_player-1.0.11-py3-none-any.whl

Download URL clippiti_player-1.0.11-py3-none-any.whl
Size 185.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b32ce90986b6803ee93769951e165eb7061db92d45cd36fd647b0158b854ad54
BLAKE2b-256 checksum
How to use checksums
849c7e8376273f670a13b1b51e96f824a3f7000745c850e9eae156f885bc986c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.11 This release

2 release files

1.0.9

2 release files

1.0.8

2 release files

1.0.7

2 release files

1.0.6

2 release files

1.0.5

2 release files

1.0.4

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page