PyEncoder logoPyEncoder
Features

A full editing pipeline, built in Python

From import to export, PyEncoder leans on the battle-tested libopenshot engine and exposes it through a focused, modular Qt6 application.

🎬 Multi-track timeline editing

A native TimelineView with a backing model gives you precise, responsive editing.

  • Unlimited stacked video and audio tracks
  • Trim, slip, split and ripple edits
  • Clipboard manager preserves relative offsets on paste
  • Timeline inspector for per-clip properties
PyEncoder timeline editing

⚡ GPU-accelerated playback

Playback runs through libopenshot's openshot.QtPlayer GPU path — the player binds a Qt widget directly and drives Play(), Speed() and Position() on the engine.

  • Smooth scrubbing and J/K/L-style transport
  • Frame-accurate seeking
  • Live preview of effects and transitions
PyEncoder GPU preview

🎚️ Keyframes & retiming

The KeyframeScaler handles the math editors care about: rescale_fps, retime, stretch and snap-to-FPS — so animated properties survive a project frame-rate change.

  • Animate position, scale, rotation, opacity and volume
  • Editable keyframe curves in the inspector
  • FPS-aware retiming keeps timing intact
PyEncoder keyframes

🌊 Transitions, titles & effects

An effects panel and a transitions library make assembling a sequence quick.

  • 18 transition kinds via TransitionKind, with generated filter_complex
  • SVG title templates with FFmpeg overlay compositing
  • Color, blur/sharpen, transform/crop and chroma-key effects
PyEncoder transitions and effects

📦 Proxy transcoding & export

Heavy footage stays smooth thanks to a real background queue. The ProxyService runs a TranscodeQueue with full job lifecycle, an LRU cache and Qt signals; the export controller queues final renders.

  • Automatic proxy generation with LRU caching
  • Export queue dialog for batching multiple renders
  • H.264, ProRes and other FFmpeg-backed formats
PyEncoder export queue

Under the hood

PyEncoder is a clean, modular codebase — not a monolith.

AreaModuleWhat it does
EngineOpenShotEngineAdapterWraps libopenshot for timeline, playback and rendering
ProxiesProxyServiceTranscode queue with job lifecycle + LRU cache
TransitionsTransitions18 transition kinds, FFmpeg filter_complex generation
TitlesSVGTitlesSVG title template registry with overlay compositing
KeyframesKeyframeScalerrescale_fps, retime, stretch, snap-to-fps
ClipboardClipboardManagerCopy / cut / paste with relative offsets
WaveformsWaveformDecoderReal waveform decoding + caching for audio tracks

See it for yourself

Download the latest build and open a project.

Get PyEncoder