Metadata-Version: 2.4
Name: trimmy
Version: 0.11.0
Summary: Trimmy — vertical split crop video editor
Keywords: video,editor,crop,vertical,social-media,ffmpeg,9:16,reels,tiktok
License-Expression: MIT
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: X11 Applications :: Qt
Classifier: Intended Audience :: End Users/Desktop
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Multimedia :: Video
Classifier: Topic :: Multimedia :: Video :: Conversion
Requires-Dist: pyside6>=6.5
Requires-Dist: qt-material-icons>=0.5.0
Requires-Dist: typing-extensions>=4.0 ; python_full_version < '3.12'
Requires-Python: >=3.10, <3.15
Project-URL: Changelog, https://github.com/musantro/trimmy/blob/master/CHANGELOG.md
Project-URL: Homepage, https://github.com/musantro/trimmy
Project-URL: Issues, https://github.com/musantro/trimmy/issues
Project-URL: Repository, https://github.com/musantro/trimmy
Description-Content-Type: text/markdown

# Trimmy

**Vertical split-crop video editor.** Take any video, pick two crop regions, stack them top-and-bottom into a 9:16 frame, and export optimized for social media.

The output stacks the two crops vertically into a single 9:16 video — ideal for reaction content, split-screen tutorials, gameplay + facecam, and Reels / TikToks / Shorts.

## Install

```bash
pip install trimmy
```

Or run it without installing, using [uv](https://docs.astral.sh/uv/):

```bash
uvx trimmy
```

> **Requires** [ffmpeg](https://ffmpeg.org/) and `ffprobe` available on your `PATH`, plus Python 3.10+.

## Usage

Launch the app:

```bash
trimmy
```

Or open a file directly:

```bash
trimmy path/to/video.mp4
```

Then:

1. Open or drag-drop a video.
2. Position the two crop boxes on the source frame (**TOP** and **BOTTOM**).
3. Adjust the split ratio by dragging the red divider.
4. Trim the timeline to the segment you want.
5. Pick a platform and quality preset.
6. Render — ffmpeg encodes a ready-to-upload vertical video.

### Keyboard shortcuts

| Key | Action                     |
|-----|----------------------------|
| K   | Play / Pause               |
| J   | Seek backward 5s           |
| L   | Seek forward 5s            |
| Q   | Set trim start to playhead |
| E   | Set trim end to playhead   |
| M   | Toggle mute                |
| ?   | Show keyboard shortcuts    |

## Platform presets

| Platform  | Resolution | Max FPS | Max Size | Codec          |
|-----------|------------|---------|----------|----------------|
| Instagram | 1080x1920  | 60      | 300 MB   | H.264 High 4.0 |
| TikTok    | 1080x1920  | 60      | 4 GB     | H.264 High 4.2 |
| Twitter/X | 1080x1920  | 60      | 512 MB   | H.264 High 4.2 |
| WhatsApp  | 720x1280   | 30      | 16 MB    | H.264 Main 3.1 |
| Telegram  | 1080x1920  | 60      | 2 GB     | H.264 High 4.2 |

Each platform offers a **Max** mode (highest quality, slower encode) and an **Optimized** mode (smaller files, faster encode). WhatsApp auto-caps bitrate to fit the 16 MB limit.

## Development

Trimmy is built with [PySide6](https://doc.qt.io/qtforpython/). To work on it
from source:

```bash
git clone https://github.com/musantro/trimmy.git
cd trimmy
uv sync
uv run python -m trimmy
```

### Render screen playground

The render screen can be exercised without opening or encoding a video:

```bash
uv run trimmy-render-playground
```

Export deterministic screenshots for every render step:

```bash
uv run trimmy-render-playground --snapshot-dir .codex/render-playground
```

Use `--state rendering` or repeat `--state` to capture specific states.

See [CHANGELOG.md](https://github.com/musantro/trimmy/blob/master/CHANGELOG.md)
for release history.

## License

[MIT](https://github.com/musantro/trimmy/blob/master/README.md)
</content>
</invoke>
