Skip to main content

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+
  • streamlink installed and available in PATH
  • ffmpeg installed and available in PATH (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:

  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 metadata probe fails:
    • Verify URL is online/public
    • Verify streamlink is installed and runnable
  • 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

clippiti_player-0.1.5.tar.gz (3.4 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

clippiti_player-0.1.5-py3-none-any.whl (168.9 kB view details)

Uploaded Python 3

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

Hashes for clippiti_player-0.1.5.tar.gz
Algorithm Hash digest
SHA256 26a2158a84461b5a0473173b775c80167d047951b2970b90cc5a8a63c89acb98
MD5 580be9c3c71da843770800ee2fb0fc8e
BLAKE2b-256 ba85fea8a2c82c1ca3fed660ea1d4615c44d63569869d664089a69e7260b5190

See more details on using hashes here.

Provenance

The following attestation bundles were made for clippiti_player-0.1.5.tar.gz:

Publisher: publish.yml on tarzasai/clippiti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for clippiti_player-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 ac2a8ce496b9f4a5a592f1c4cf8e2efbe684123e4d84839d07fc645809ba399a
MD5 1f12ea5ac1c0a8ffae0c1edbf3b1e6df
BLAKE2b-256 8c116e61b64ebda9e7e2cce7616b438029609a2b15a1d28191b8e3b43ba4f6e7

See more details on using hashes here.

Provenance

The following attestation bundles were made for clippiti_player-0.1.5-py3-none-any.whl:

Publisher: publish.yml on tarzasai/clippiti

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page