Single-stream live player with rolling buffer, clipping, and recording
Project description
Clippiti
Single-stream live player with rolling buffer, clipping, and recording.
Clippiti is a PyQt6 desktop app that opens a live stream through Streamlink, keeps a rolling local buffer, and lets you export clips or recordings without leaving the player.
Features
- Live stream playback via Streamlink + mpv
- Rolling HLS buffer pipeline (Streamlink -> 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+
streamlinkinstalled and available inPATHffmpeginstalled and available inPATH(or configured path)- Desktop environment that supports PyQt6 apps
Install
From source (recommended for now):
git clone <your-repo-url>
cd clippiti
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
pip install -e .
Run:
clippiti <url> <quality>
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
optional:
--sl TEXT Pass-through Streamlink arguments string
--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
Example:
clippiti https://www.twitch.tv/example_channel best --sl "--retry-max 5" --mpv "vf=hflip"
Configuration
Clippiti stores configuration in YAML.
Resolution order:
--config <path>if provided- User config location (
clippiti.yaml) if it exists <workdir>/config.yamlif it exists- Fallback to
<workdir>/config.yaml(or./clippiti.yamlif 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 metadata probe fails:
- Verify URL is online/public
- Verify
streamlinkis installed and runnable
- Playback pipeline does not start:
- Verify
ffmpegis installed and reachable - Use
--verboseto inspect startup logs
- Verify
- mpv/video issues:
- Verify
python-mpvis installed - Try with simpler
--mpvoptions first
- Verify
License
MIT License - see LICENSE if present in this repository.
Acknowledgments
- Streamlink
- ffmpeg
- PyQt6
- python-mpv
Screenshots
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file clippiti_player-0.1.5.tar.gz.
File metadata
- Download URL: clippiti_player-0.1.5.tar.gz
- Upload date:
- Size: 3.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
26a2158a84461b5a0473173b775c80167d047951b2970b90cc5a8a63c89acb98
|
|
| MD5 |
580be9c3c71da843770800ee2fb0fc8e
|
|
| BLAKE2b-256 |
ba85fea8a2c82c1ca3fed660ea1d4615c44d63569869d664089a69e7260b5190
|
Provenance
The following attestation bundles were made for clippiti_player-0.1.5.tar.gz:
Publisher:
publish.yml on tarzasai/clippiti
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clippiti_player-0.1.5.tar.gz -
Subject digest:
26a2158a84461b5a0473173b775c80167d047951b2970b90cc5a8a63c89acb98 - Sigstore transparency entry: 1937622396
- Sigstore integration time:
-
Permalink:
tarzasai/clippiti@79d03827c1a9bfd81f50719eab1174fe38c83da3 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/tarzasai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79d03827c1a9bfd81f50719eab1174fe38c83da3 -
Trigger Event:
push
-
Statement type:
File details
Details for the file clippiti_player-0.1.5-py3-none-any.whl.
File metadata
- Download URL: clippiti_player-0.1.5-py3-none-any.whl
- Upload date:
- Size: 168.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ac2a8ce496b9f4a5a592f1c4cf8e2efbe684123e4d84839d07fc645809ba399a
|
|
| MD5 |
1f12ea5ac1c0a8ffae0c1edbf3b1e6df
|
|
| BLAKE2b-256 |
8c116e61b64ebda9e7e2cce7616b438029609a2b15a1d28191b8e3b43ba4f6e7
|
Provenance
The following attestation bundles were made for clippiti_player-0.1.5-py3-none-any.whl:
Publisher:
publish.yml on tarzasai/clippiti
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
clippiti_player-0.1.5-py3-none-any.whl -
Subject digest:
ac2a8ce496b9f4a5a592f1c4cf8e2efbe684123e4d84839d07fc645809ba399a - Sigstore transparency entry: 1937622476
- Sigstore integration time:
-
Permalink:
tarzasai/clippiti@79d03827c1a9bfd81f50719eab1174fe38c83da3 -
Branch / Tag:
refs/tags/v0.1.5 - Owner: https://github.com/tarzasai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@79d03827c1a9bfd81f50719eab1174fe38c83da3 -
Trigger Event:
push
-
Statement type: