Skip to content

Repository files navigation

A next-generation video editor that inherits and surpasses AviUtl

GitHub / Releases

English / 日本語 / 简体中文

Important

This repository is a fork of taisho-guy/NeoUtl. In late May 2026, the original author decided to reset development — the main branch now hosts a new NeoUtl built on Rust + Slint + wgpu, while the Qt Quick-based version was moved to the aviqtl branch (referred to as AviQtl). I (GT610), an early core contributor to the original project, continue the Qt Quick path here as AviQtl-Plus.

As a result, three NeoUtl-related projects now exist in parallel:

  • NeoUtl — the original project rebuilt with Rust + Slint + wgpu
  • AviQtl — the original Qt Quick-based version, continues as "AviQtl"
  • AviQtl-Plus (this project) — a fork continuing development of the Qt Quick + QRhi + ECS approach

Why the original project paused

The original author identified these fundamental issues with Qt Quick:

  • Qt Quick's resource management is incompatible with Compute Shaders, making implementation difficult
  • Similarly, it conflicts with ECS architecture, hindering optimization
  • Performance concerns for real-time processing

The original author has now moved to a new technology stack using Rust + Slint + wgpu, abandoning the Qt Widgets + SDL3 + bgfx approach that was initially planned.

How AviQtl-Plus addresses them

Building on the insights gained from the original project, AviQtl-Plus tackles these challenges:

  1. Compute Shader integration: Circumventing Qt Quick's constraints to leverage GPU compute for high-performance effects processing
  2. ECS architecture optimization: Maximizing the benefits of data-oriented design while resolving friction with Qt Quick
  3. Real-time performance: Eliminating preview rendering bottlenecks to deliver a smooth editing experience

The vision remains unchanged: a video editor that inherits and surpasses AviUtl. We believe the Qt Quick + QRhi + ECS approach is a viable and valuable path — one we are committed to maturing into a practical, everyday editing tool.

Original author's new direction

The original author has already acted on their plan — the new main branch is being rebuilt from scratch with Rust + Slint + wgpu, reflecting their conviction that Qt Quick is not the right foundation for the compute-shader-heavy future they envision. They have stated that PRs will not be accepted during the initial core implementation phase.

The old Qt Quick source code remains available on the aviqtl branch, and the original author explicitly recommends AviQtl-Plus to users who prefer the Qt Quick approach.

Our relationship with the new NeoUtl

The original author and I maintain a friendly relationship. If any of our contributions from AviQtl-Plus prove applicable to the new NeoUtl (Rust + Slint + wgpu), I will gladly submit them upstream. Similarly, I hope that innovations from both projects can cross-pollinate over time — ultimately benefiting all users who seek a modern, powerful, and intuitive AviUtl successor.

What is AviQtl-Plus?

A project to develop a video editor that inherits the operability of AviUtl 1.10 & ExEdit 0.92 while delivering performance that surpasses AviUtl.

See AviUtl Operability Targets for the editing-model compatibility goals that guide AviQtl-Plus development.

Key Features

  • UI closely resembling AviUtl
  • Fast and powerful GPU-accelerated effects
  • Support for audio effects such as VST3 and LV2
  • LuaJIT plugin system with package management, declarative parameters, and permission control
  • Cross-platform: Linux, Windows, macOS

Installation

  1. On Linux, install the following dependencies:
    • Qt6, LuaJIT, Vulkan implementation (e.g. Mesa), FFmpeg, Carla, clang (provides libc++)
  2. Download the optimal build for your system from the Releases page.
  3. Extract the archive, grant execute permission to AviQtl, and run it.

Note

Linux users require an up-to-date environment equivalent to Arch Linux. Users of other distributions such as Ubuntu are strongly recommended to create an Arch Linux container with Distrobox and run AviQtl inside it.

Building

BUILD.py automatically detects the build target from the current OS and installs all dependencies. Normally python3 BUILD.py alone suffices.

The build currently uses Qt private modules (CorePrivate, GuiPrivate, and ShaderToolsPrivate) for ZIP handling, QRhi integration, and shader tooling. Build and runtime Qt patch versions must therefore match; distributors should rebuild AviQtl-Plus whenever their Qt packages are upgraded.

Maintainers should follow the Release Checklist before creating a version tag.

git clone https://github.com/GT-610/AviQtl-Plus.git
cd AviQtl-Plus
Linux

On Linux, the build environment is isolated using a distrobox/podman container by default.

  1. Install dependencies
    • Pacman: sudo pacman -S --needed distrobox podman python git
    • APT: sudo apt install distrobox podman python3 git
    • DNF: sudo dnf install distrobox podman python3 git
  2. Build
    • python3 BUILD.py --arch
  3. Run
    • ./build/AviQtl
macOS

On macOS, BUILD.py checks and installs dependencies via Homebrew (CMake, Ninja, Qt6, etc.), then runs macdeployqt and codesign to create a .app bundle.

  1. Install dependencies
    • brew install python git
  2. Build
    • python3 BUILD.py --xcode
  3. Run
    • open ./build/AviQtl.app
Windows (MSYS2)
  1. Install dependencies
    • pacman -S git mingw-w64-ucrt-x86_64-python
  2. Build
    • python3 BUILD.py --msys2
  3. Run
    • ./build/AviQtl.exe
Windows (MSVC - Not recommended)

MSVC builds are not recommended due to the complexity of environment setup.

  1. Additional prerequisites
    • Visual Studio 2022 Build Tools with C++ toolset
    • Official Qt MSVC x64 build (e.g. msvc2022_64)
    • vcpkg (can be specified via VCPKG_ROOT env var; BUILD.py will attempt to fetch it if not found)
  2. Build
    • python3 BUILD.py --msvc --qt-dir <Qt installation directory>
    • If --qt-dir is omitted, automatic detection from QT_MSVC_DIR etc. is attempted.
  3. Run
    • .\build\AviQtl.exe

Effect Packages

AviQtl-Plus features a modular effect system. The effect-packages/ directory contains ready-to-use effect packs that demonstrate the extension system:

Package Type Contents
stylize-effects Effect Glitch, pixel sorting, chromatic aberration, mosaic, noise, emboss, raster
advanced-blur Effect Lens blur, radial blur, directional blur, motion blur
weather-objects Object Rain, snow animations

These packages serve as both useful additions and developer references for creating custom effects. See effect-packages/README.md for details.

Q & A

Note

The following Q&A reflects the original author's (taisho-guy) personal views and development history.

What motivated the development?

The OS barrier

It started with AviUtl not running on Linux. Maintaining a Windows environment solely for AviUtl was unacceptable.

Bloated ecosystem

Regardless of the reason, many users continue using AviUtl reluctantly. The ecosystem, bloated by years of extensions like a "Howl's Moving Castle", is hard to let go of despite the dissatisfaction.

Project goals and mission

During a research project at Kagoshima Prefectural Konan High School, I decided to develop NeoUtl independently to solve this problem.

  • Personal goal: Produce music videos using only NeoUtl on Linux, without juggling Domino, VocalShifter, REAPER, and AviUtl.
  • NeoUtl's mission: To be the optimal solution for those who use AviUtl reluctantly.
Why develop an AviUtl clone?

AviQtl-Plus is not a "reinvention of AviUtl". While it is strongly inspired by AviUtl, its internals are entirely different.

Item AviQtl-Plus ExEdit0 ExEdit2
Core technology Qt6 Win32 API Win32 API
Parallelism model Data-driven (ECS) Single-threaded Multi-threaded
Memory space 64-bit 32-bit (max 4GB) 64-bit
Preview rendering Vulkan / Metal / DX12 GDI DX11
Audio engine Carla (VST3/LV2 etc.) Built-in only Built-in only
Plugin system LuaJIT / C++ / QML / GLSL Lua / C++ LuaJIT / C++
Supported OS Linux, Windows, macOS Windows Windows

AviQtl-Plus fundamentally resolves structural weaknesses:

  1. Data-oriented design with ECS (Entity Component System): Maximizes CPU cache efficiency, accelerating processing of large numbers of objects.
  2. Modern memory management: Adopts C++23 smart pointers, structurally minimizing unexplained crashes.
  3. Separation of UI and rendering: Timeline operations are not blocked during heavy rendering, and the UI remains crisp in High-DPI environments.
Origin of the name and icon?

The name is a portmanteau of "AviUtl" and "Qt". The icon is a design combining the Qt and AviUtl logos.

+ =

Can I use AviUtl plugins?

No. The mechanisms differ, so there is no compatibility. There are no plans to implement a compatibility layer either.

AviQtl-Plus Q&A

Note

The following Q&A reflects the perspective of AviQtl-Plus maintainer (GT610).

Why continue AviQtl-Plus development?

The original project was suspended due to genuine technical difficulties with Qt Quick — but it also proved that Qt + FFmpeg can rapidly produce a high-quality video editor prototype. The architecture is well-designed, the foundation is solid, and I believe the Qt Quick route is still worth pursuing, especially now that QRhi provides a viable compute shader path that wasn't fully explored.

As an early core contributor, I've seen the project's potential firsthand. I'm picking up where the original author left off, not just to keep the code alive, but to see the original vision through — a video editor that inherits AviUtl's operability while surpassing its performance.

What is the roadmap for AviQtl-Plus?

Completed (0.3.0):

  • LuaJIT plugin system with lifecycle hooks, declarative parameters, and fine-grained permission control
  • Package manager for installing/updating plugins, effects, and objects from remote repositories
  • 24 unit tests covering core, engine, scripting, and plugin subsystems
  • CI via GitHub Actions (build + static analysis)

Completed (0.3.1-0.3.2):

  • Thread-safe audio processing with lock-free shared pointers and keyframe evaluation optimization
  • HDR output, opacity, and multi-pass dispatch for Compute Shader effects
  • Transition effects (Dissolve, Slide, WipeCircle)
  • Audio plugin keyframe editing and mixer panel UI
  • Effect schema documentation and sepia effect example
  • Hardcoded constant extraction and log standardization
  • Object JSON/QML naming consistency alignment
  • macOS build and packaging fixes (atomic shared_ptr, carla-discovery-native RPATH)

Completed (0.4.0):

  • GPU compute shader optimizations: SRB pre-allocation, fine-grained dirty flags, separable blur, bitonic sort
  • BorderBlur O(n²) → O(2n) with edge-detect blend and aspect ratio control
  • Multi-pass ping-pong correctness for 3+ pass dispatches

Completed (0.5.x):

  • End-to-end daily editing, missing-media recovery, and atomic project saves
  • Unified searchable object/effect catalog with package provenance
  • Real QML composition capture and encoded MP4 verification
  • Large-timeline virtualization and continuous zoom performance fixtures
  • Video decoder GOP/frame-cache lifecycle and eviction coverage
  • Linux, macOS, and Windows release builds with platform test steps
  • Consistently green release baseline and version validation
  • Independent autosave snapshots and startup crash recovery for multiple projects

Next (0.5.9+):

  • Measure representative long-video, long-audio, and plugin-scanning workloads
  • Continue workflow-level usability hardening with real editing projects

Long-term:

  • Full-featured video editor suitable as an AviUtl replacement
  • Potential rebranding (name and logo) to reflect the independent direction of the project
  • Continue monitoring the new NeoUtl's progress and explore cross-pollination opportunities between projects

The project is entirely driven by personal motivation — there are no deadlines or commercial pressures. Progress will be steady but paced.

How is AviQtl-Plus different from the original project?

The technical direction remains largely the same (Qt Quick + QRhi + ECS), but AviQtl-Plus places greater emphasis on:

  • Incremental deliverability: getting a basic but usable editing workflow out the door, rather than pursuing architectural perfection upfront
  • Pragmatic problem-solving: working within Qt Quick's constraints rather than treating them as blockers
  • Community transparency: clear documentation of the fork relationship, plans, and long-term intentions

Once the project reaches a usable state, a rename and rebranding are likely to clearly distinguish it from the original project.

Related Links

AviQtl-Plus stands on the shoulders of many wonderful projects.

Project License Role
AviUtl Non-free Respected origin
AviQtl AGPLv3 Original Qt Quick project; aviqtl branch of the upstream
NeoUtl AGPLv3 New Rust + Slint + wgpu version by the original author
AviQtl-Plus AGPLv3 This project — continued Qt Quick + QRhi + ECS development
Carla GPLv2+ Audio effect host (VST3/LV2 etc.)
FFmpeg GPLv2+ Video/audio decoding & encoding
LuaJIT MIT High-performance script engine
Qt GPLv3 UI/UX framework
Zrythm AGPLv3 Reference for audio plugin implementation
Remix Icon Remix Icon License Symbol icons

License

AviQtl-Plus is released under the GNU Affero General Public License.

Remix Icon used within AviQtl-Plus is provided under the Remix Icon License.

About

Next-generation video editor, effects and animations creator, and DAW - in a single app

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages