AviUtlを踏襲し凌駕する次世代動画編集ソフト
AviQtlのお部屋 / Codebergリポジトリ / GitHubミラー / リリース / Wiki
AviUtl 1.10及びExEdit 0.92の面影を残しつつ、より安全・高速・強力・自由な動画編集ソフトを開発するプロジェクトです。クロスプラットフォームなAviUtlクローンの開発を通じ、AviUtlを「仕方なく」使う方々の最適解になることを目指しております。
- 安全:完全に挙動を予測できる堅牢性
- 高速:GPUを主軸に捉えた効率的な処理
- 強力:あらゆる方法を駆使できる柔軟性
- 自由:無料、オープンソース、透明性の高い開発形態
- 自由ライセンス且つ無料
- AviUtlに酷似したUI
- VST3やLV2等の音声エフェクトのホスト
- Linux、Windows、macOSにネイティブ対応
- Vulkan、Metal、DirectX12によるゼロコピーGPUエフェクト
- ECSアーキテクチャによるデータ指向設計
- FFmpegによるリアルタイムHWデコード
| 違い | 旧AviQtl | 新AviQtl |
|---|---|---|
| 描画エンジン | Qt Quick | bgfx |
| GUIフレームワーク | Qt QML | Qt Widgets / SDL3 |
Qt QuickベースではCompute Shaderへの対応や完全なECSアーキテクチャの実装が困難でしたから、新しい技術基盤で再出発しました。AviQtl LegacyやAviQtl-Plusとは異なるプロジェクトです。
AviQtlは現在ビルドをリリースしておりません。AviQtl LegacyかAviQtl-Plusをお試し下さい。
詳細なロードマップは作成しておりませんが、主に、AviQtl Legacyからの移植とbgfxによるレンダリングエンジンの実装に分けられます。
- GUIの構成
- コア(デコーダー、音声プラグインホスト等)
- bgfxのレンダリングパイプライン
- 純粋なECS
AviQtlは、モダンなC++とマルチスレッドアーキテクチャを採用し、動画編集における高いパフォーマンスと拡張性を実現しています。
- UI層 (Qt Widgets): アプリケーションのメインフレームワークとして機能し、ユーザーインターフェースとウィンドウ管理を担当します。
- レンダリング層 (bgfx + SDL3): プレビュー描画には
bgfxを採用し、プラットフォーム固有のグラフィクスAPI(Vulkan, Metal, DX12)を抽象化しています。ウィンドウの生成とイベントハンドリングにはSDL3を利用し、クロスプラットフォームでの安定した動作を実現しています。 - 実行層 (スレッド駆動): レンダリング処理はメインのUIスレッドから分離された専用スレッド (
PreviewRenderThread) で実行され、重い描画処理がUIの応答性に影響を与えない設計となっています。
- 起動:
app/boot/main.cppが起点となり、SDL3を初期化した後、Qtアプリケーションを開始します。 - ウィンドウ管理:
WindowCoordinatorがプレビューウィンドウを管理し、SdlPreviewSurfaceを通じてプラットフォーム固有のネイティブハンドル(HWND, NSWindow, Wayland Surfaceなど)をレンダリング層へ供給します。 - レンダリングループ: レンダリング専用スレッドがシーク要求やリサイズ要求を待機・処理し、bgfxを通じてGPUへ描画コマンドを送信します。この非同期設計により、タイムライン操作の滑らかさを維持します。
app/
├── boot/ # エントリポイントとアプリケーション初期化
├── platform/ # OS依存処理(SDL3連携・ネイティブハンドル取得)
├── render/ # レンダリングエンジン(bgfx連携・レンダリングスレッド)
├── runtime/ # アプリケーションの実行時管理(ウィンドウ管理など)
└── ui/ # ユーザーインターフェースの実装
AviQtlは現在コアを実装しております。一貫性を高め、私が望むアーキテクチャを正しく構築する為に、コアが安定するまではプルリクエストをお受けできません。質問がございましたらイシューよりお申し付け下さい。
開発リセットの理由
旧来のAviQtl Legacyは、Compute Shaderへの対応と、完全なECSアーキテクチャの構築、という観点において、技術的な制約がございました。これは採用技術によるものでしたから、回避するには技術基盤を変更し、再び0から再実装する必要がありました。
AviUtlを使わずにわざわざAviQtlを開発する理由
- AviUtlはWindows上でのみ動作するから
- AviUtlは自由ソフトウェアでないから
私は絶対にLinux上のAviUtl(ライクな動画編集ソフト)で音MADを作りたいと考えております。これは、私が歩んできた道を辿れば必然のこととして理解できます。
| いつ | 起きたこと |
|---|---|
| 小学 | Scratch上で「RED_ZONE.exeが本気を出したみたいです」の再現に出会う。人生初の音MAD。当時はWindowsが好きだった。 |
| 中学 | Windows11へのアップデートを強行的に行ったものの、パフォーマンス上の問題に直面した。仕方なくLinuxに移行したところ、すっかり魅了された。最終的にCachyOSに定住するように。 |
| 高1 | 新しいPCを買い与えられ、念願の音MAD制作を開始。デュアルブートで頻繁にブートローダーが壊れた為、Wineへの移行を試みた、がAviUtlは期待通りには動かなかった。「代替ソフト」とされるものを複数試したが、満足できずにいた。 |
| 高2 | Windows環境を立ち上げるのが嫌になり、探究活動で動画編集ソフトの開発を決行するも失敗。Rust言語でeguiとbevyをベースに実装する予定だった。年度末にC++とQtで再チャレンジを開始。 |
| 高3 | Qtのエコシステムのおかげで、僅か数ヶ月で形に。しかし、技術的限界も浮き彫りに。やむを得ず開発をリセットし、今に至る。 |
音MADとLinuxは私の青春そのものです。AviQtlの開発は私の青春の集大成と言えます。
機能少ない。バグだらけ。使いにくい。開発目標はどうなってんだよ。
ご期待にお答えできず、申し訳ございません。AviQtlは開発初期段階です。私はできる限り早く実装を進めております。AviQtlに対する不満を具体化して、イシューを作成していただければ、開発に大いに役立ちます。また、もしC++がお得意であれば、ソースコードを読んでいただき、イシューでアドバイスして頂けたら嬉しいです。
画像ファイルは CC0 に基づいて提供されます。
ソースコードは GNU Affero General Public License Version 3 or later に基づいて提供されます。
Remix Icon は Remix Icon License に基づいて提供されます。これは自由ライセンスではありません。
その他のライブラリのライセンスは上記のライセンスと異なる場合がございます。
開発リセットについて
- 理由は以下のとおりです。
- Qt Quick独自のレンダリングループとCompute Shaderとの相性が悪く、実装が困難
- 同様に、ECSとの相性が悪く、最適化が困難
- 旧来のQt QuickベースのAviQtl(以降『AviQtl Legacy』)はコミット履歴を含めて
legacyブランチに移動しました。現在のmainブランチには、Qt Widgets及びSDL3とbgfxをベースとした新しいAviQtl(以降『AviQtl』)が置かれています。
- QtとFFmpegを使えば、動画編集ソフトの高品質なプロトタイプを高速に実装できる。
- Compute Shaderの開通が難しい為、GPUゼロコピーを目指すならQt Quickベースのプレビュー実装は不適。
- QMLとQSBを用いると、拡張性の高いアーキテクチャを構築できる(少なくともvertとfragは十分に機能する)。
- 開発リセット直後はコア機能を実装するためプルリクエストをお受けできません。御了承下さい。
- AviQtl Legacyのソースコード及び最終バージョン(AviQtl Legacy 0.0.95)のリリースは、引き続きGNU Affero General Public License Version 3 or laterでライセンスされ、公開を続けます。しかし、動画編集ソフトとしての実用性はありません。AviQtl Legacyの今後のアップデートや互換性は保証されません。
- AviQtlのコントリビューターだったGT-610さんが、AviQtl-PlusとしてAviQtl Legacyの開発を継続されています。もしAviQtl Legacyがお気に召したのであれば、是非AviQtl-Plusをご参照下さい。
- 現在3種のAviQtlが並行して存在します。
- AviQtl : 新しい技術を採用して作り直しているAviQtl。
- AviQtl Legacy : Qt Quickベースの旧AviQtl。今後更新されない。
- AviQtl-Plus : AviQtl Legacyを継続して開発する派生プロジェクト。
AviQtl Legacyとは
AviUtl 1.10 & ExEdit 0.92の操作感を踏襲しつつ、AviUtlを超える性能を持つ動画編集ソフトを開発するプロジェクトです。
- AviUtlに酷似したUI
- GPUを使った高速で強力なエフェクト
- VST3やLV2等の音声エフェクトに対応
- Linux、Windows、macOSに対応
- Linuxの場合、以下の依存関係をインストールします:
- Qt6全般、LuaJIT、Vulkan実装(Mesa等)、FFmpeg、Carla、libc++
- リリースページからお使いのPCに最適なビルドをダウンロードします。
- ファイルを展開し、
AviQtlに実行権限を付与して実行します。
[!NOTE] Linuxユーザーの場合、Arch Linux相当の最新環境を要求します。Ubuntu等の他のディストリビューションをご利用の方は、DistroboxでArch Linuxコンテナを作成し、その中でAviQtlを実行することを強く推奨致します。
BUILD.py は現在の OS からビルドターゲットを自動判定します。通常は python BUILD.py だけで実行できますが、手動で指定することも可能です。
共通の準備として、リポジトリをクローンし、必要に応じて仮想環境を作成してください。
git clone https://codeberg.org/taisho-guy/AviQtl.git
cd AviQtl
# pipでPySide6を用意する場合(推奨)
python3 -m venv .venv
# Linux/macOS/MSYS2: source .venv/bin/activate
# Windows/PowerShell: .venv\Scripts\Activate.ps1
python -m pip install --upgrade pip PySide6Linux
Linux では既定で distrobox/podman コンテナを使用してビルド環境を分離します。
- 依存関係のインストール
- Pacman:
sudo pacman -S --needed distrobox podman python pyside6 git - APT:
sudo apt install distrobox podman python3 python3-pyside6 git - DNF:
sudo dnf install distrobox podman python3 python3-pyside6 git
- Pacman:
- ビルド
python BUILD.py --arch
- 実行
./build/AviQtl
macOS
macOS では BUILD.py が Homebrew 経由で CMake、Ninja、Qt6 等の依存関係を確認・インストールし、macdeployqt と codesign を実行して .app バンドルを作成します。
- 依存関係のインストール
brew install python pyside git
- ビルド
python BUILD.py --xcode
- 実行
open ./build/AviQtl.app
Windows (MSYS2)
- 依存関係のインストール
pacman -S git mingw-w64-ucrt-x86_64-pyside6
- ビルド
python BUILD.py --msys2
- 実行
./build/AviQtl.exe
Windows (MSVC - 非推奨)
MSVC ビルドは環境構築の複雑さから非推奨としています。
- 追加の準備
- Visual Studio 2022 Build Tools の C++ ツールセット
- 公式 Qt の MSVC x64 版(例:
msvc2022_64) - vcpkg(
VCPKG_ROOT環境変数で指定可能。見つからない場合はBUILD.pyが取得を試みます)
- ビルド
python BUILD.py --msvc --qt-dir <Qtインストールディレクトリ>--qt-dirを省略した場合はQT_MSVC_DIR等から自動検出を試みます。
- 実行
.\build\AviQtl.exe
開発のきっかけは?
LinuxでAviUtlが動かないことがきっかけです。AviUtlのためだけにWindows環境を維持し続けることは受け入れがたいものでした。
理由は違えど、AviUtlを「仕方なく」使い続けている方は少なくないはずです。長年の拡張によって肥大化した「ハウルの動く城」のようなエコシステムは、不満を抱えながらも手放しにくい存在となっています。
鹿児島県立甲南高等学校の課題研究において、この課題を解決すべくAviQtlの独自開発を決意しました。
- 個人的な目標: Domino、VocalShifter、REAPER、AviUtlをはしごすることなく、Linux上のAviQtlのみで音MADを制作すること。
- AviQtlのミッション: AviUtlを「仕方なく」使っている方々の最適解になること。
なぜAviUtlのクローンを開発しているのですか?
AviQtlは「AviUtlの再発明」ではありません。AviUtlを強く意識していますが、その中身は全く異なります。
| 項目 | AviQtl | ExEdit0 | ExEdit2 |
|---|---|---|---|
| 基盤技術 | Qt6 | Win32 API | Win32 API |
| 並列処理モデル | データ駆動型(ECS) | シングルスレッド | マルチスレッド |
| メモリ空間 | 64bit | 32bit (最大4GB) | 64bit |
| プレビュー描画 | Vulkan / Metal / DX12 | GDI | DX11 |
| 音声エンジン | Carla (VST3/LV2等) | 標準機能のみ | 標準機能のみ |
| プラグイン方式 | LuaJIT / C++ / QML / GLSL | Lua / C++ | LuaJIT / C++ |
| 対応OS | Linux, Windows, macOS | Windows | Windows |
AviQtlは構造的な弱点を根本的に解決します:
- ECS(Entity Component System)によるデータ指向: CPUキャッシュ効率を極限まで高め、大量のオブジェクト処理を高速化。
- 近代的なメモリ管理: C++23のスマートポインタを採用し、原因不明のクラッシュを構造的に最小化。
- UIとレンダリングの分離: 重い描画中でもタイムライン操作が妨げられず、High-DPI環境でもUIが鮮明に表示されます。
AviUtlのプラグインは使えますか?
いいえ。仕組みが異なるため互換性は有りません。互換レイヤーを実装する予定も有りません。AviQtlは、多くの素晴らしいプロジェクトの上に成り立っています。
| プロジェクト | ライセンス | 役割 |
|---|---|---|
| AviUtl | 非自由 | リスペクト元 |
| Carla | GPLv2+ | 音声エフェクト(VST3/LV2等)のホスト |
| FFmpeg | GPLv2+ | 動画・音声のデコード / エンコード |
| LuaJIT | MIT | 高速なスクリプトエンジン |
| Qt | GPLv3 | UI/UXフレームワーク |
| Zrythm | AGPLv3 | 音声プラグイン実装の参考 |
| Remix Icon | Remix Icon License | シンボルアイコン |
AviQtlはGNU Affero General Public Licenseに基づいて公開されています。
AviQtl内で使用されているRemix IconはRemix Icon Licenseに基づいて提供されています。