Top AI Repos — open-source AI, indexed and scored
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
Top AI Repos tracks AI repositories on GitHub and answers two different questions about each one: is it moving right now, and would you bet a product on it.
A Go video editing toolkit for scripted media composition, FFmpeg export, effects, transitions, subtitles, audio, and motion graphics.
| Date | Stars |
|---|---|
| 2026-07-24 | 293 |
| 2026-07-25 | 294 |
| 2026-07-28 | 294 |
| 2026-07-30 | 294 |
| 2026-08-06 | 294 |
Today
— stars today
This week
— stars this week
This month
— stars this month
Momentum
0.0
growth rate 0.00%/day
<p align="center">
<img src="docs/assets/moviego-logo.png" alt="MovieGo" width="520">
</p>
<p align="center">
<strong>Scripted video editing for Go.</strong><br>
Compose video, image, text, and audio clips with a small, explicit API — then export efficiently through FFmpeg.
</p>
<p align="center">
<a href="https://pkg.go.dev/github.com/mowshon/moviego/v2"><img src="https://pkg.go.dev/badge/github.com/mowshon/moviego/v2.svg" alt="Go Reference"></a>
<a href="https://goreportcard.com/report/github.com/mowshon/moviego/v2"><img src="https://goreportcard.com/badge/github.com/mowshon/moviego/v2" alt="Go Report Card"></a>
<a href="https://github.com/mowshon/moviego"><img src="https://img.shields.io/badge/github-mowshon%2Fmoviego-181717?logo=github" alt="GitHub"></a>
<a href="#license"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License"></a>
</p>
---
MovieGo takes the editing model that made [MoviePy](https://github.com/Zulko/moviepy)
pleasant — a lazy `time → frame` graph, effects as transforms, masks and audio as
sidecars — and gives it a **Go execution model**: a typed clip graph, single-owner
frame buffers, rational frame timing, a planned parallel render pipeline, and
FFmpeg-native fast paths that skip Go pixels entirely when the whole graph is
expressible as a filtergraph.
You describe *what* you want — trim this, scale that, fade here, overlay a title —
and MovieGo figures out the fastest correct way to produce it.
```go
out := clip.Subclip(mgo.Sec(1), mgo.Sec(4)).Resize(0.5).FadeIn(time.Second)
mgo.WriteVideo(ctx, out, "out.mp4", mgo.ExportOptions{})
```
> **Status:** core feature-complete and tested (`go test -race ./...` green).
> Covers open/trim/transform/composite/concat, text & subtitles, audio mix & mux,
> transparent export, the parallel render pipeline, and the opt-in FFmpeg-only fast path.
---
## Table of contents
- [Why MovieGo](#why-moviego)
- [Requirements](#requirements)
- [Install](#install)
- [Quick start](#quick-start)
- [Core concepts](#core-concepts)
- [Cookbook](#cookbook)
- [Trim, resize & fade](#trim-resize--fade)
- [Composite layers & positioning](#composite-layers--positioning)
- [Text, titles & captions](#text-titles--captions)
- [Subtitles](#subtitles)
- [Effects & color grading](#effects--color-grading)
- [Time, speed & motion](#time-speed--motion)
- [Transitions](#transitions)
- [Vector drawing & motion graphics](#vector-drawing--motion-graphics)
- [Audio](#audio)
- [Transparent export](#transparent-export)
- [FFmpeg-only fast paths](#ffmpeg-only-fast-paths)
- [Probing & extracting frames](#probing--extracting-frames)
- [Export options](#export-options)
- [How rendering works](#how-rendering-works)
- [Best practices](#best-practices)
- [Package map](#package-map)
- [Runnable examples](#runnable-examples)
- [Contract documentation](#contract-documentation)
- [Development](#development)
- [License](#license)
---
## Why MovieGo
| | |
| --- | --- |
| ⚡ **Fast** | Most social / template / slideshow jobs are pure trim + scale + crop + fade + concat — expressible as one FFmpeg filtergraph, so MovieGo can run them without ever touching Go pixels (opt-in). When it does render, per-frame pixel work fans out across a worker pool over a single sequential decode. |
| 🔒 **Safe** | Single-owner frame buffers transferred through channels, idempotent `Close`, and context cancellation that kills FFmpeg and unblocks every stage. No shared mutable decoders behind shallow copies. |
| 🎯 **Predictable** | Rational `Rate` (never `float64` fps), exact frame timing, bounded caches, and a `parallel == sequential` equivalence guarantee enforced in CI under `-race`. |
| 🧩 **Small surface** | Explicit graph nodes instead of nested closures; named methods and option structs instead of operator overloading. |
---
## Requirements
- **Go 1.25+**
- **FFmpeg and ffprobe** on your `PATH`. MovieGo shells out to them for decode,
encode, and probing.
```sh
ffmpExcerpt of 26,294 characters
Read on GitHubWould you bet a product on this? Bounded 0–100 and slow moving.
matched fp:acffb1e3981fbce3, topic:video-editing, desc:video editing, readme:video editing