https://github.com/aviscaerulea/avply
Windows 11 GUI tool for media (video/audio) playback, trimming, and RMS normalization. Converts video with AV1/NVENC and audio with libopus via ffmpeg.
https://github.com/aviscaerulea/avply
audio av1 cpp ffmpeg media-player nvenc opus qt6 trimming video windows
Last synced: about 1 month ago
JSON representation
Windows 11 GUI tool for media (video/audio) playback, trimming, and RMS normalization. Converts video with AV1/NVENC and audio with libopus via ffmpeg.
- Host: GitHub
- URL: https://github.com/aviscaerulea/avply
- Owner: aviscaerulea
- License: mit
- Created: 2026-05-03T00:14:06.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2026-05-18T09:15:03.000Z (about 1 month ago)
- Last Synced: 2026-05-18T09:44:22.256Z (about 1 month ago)
- Topics: audio, av1, cpp, ffmpeg, media-player, nvenc, opus, qt6, trimming, video, windows
- Language: C++
- Homepage:
- Size: 752 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# avply
会議録画を「速く・聞きやすく・必要な所だけ」見直すためのメディアプレイヤー。
起動の速さと、倍速・ノーマライズ・音声明瞭化・キーフレームトリムで視聴時間を削る。

## 機能
- **高速起動**
軽量な Qt Widgets ベースの最小構成で、起動から再生可能になるまでが速い。
- **対応ファイル形式**
- 動画:mp4, mkv, mov, avi, webm
- 音声:mp3, wav, flac, ogg, opus
音声ファイル時はプレビュー領域を省略したコンパクト UI に切り替わる。
- **シークバープレビュー**
シークバー上のマウスホバーで、その位置のフレームサムネイルと再生時刻を MPC-HC 風のポップアップで表示する。
- **音声波形表示**
ファイル読込後に ffmpeg で音声波形を非同期解析し、シークバー上段へ重ねて描画する。音声ストリームが無い場合は中央基線で代替する。
- **会議録画向け再生支援**
- **再生速度変更**:ピッチ補正付きで等速〜数倍速まで切替可能(ファイル切替後も保持)
- **ノーマライズ**:RMS コンプレッサで大声と小声の音量差をリアルタイムに圧縮
- **音声明瞭化**:Biquad EQ 3 段カスケード(HPF 100Hz + プレゼンスブースト 3kHz + 高域シェルフ 8kHz)でこもった声を聞き取りやすくする
- **高速トリム**
範囲指定した区間を再エンコードせずキーフレーム単位で切り出す。入力と同じコーデック・コンテナのままディスクコピー速度近くで保存する。
- **変換**
動画は NVIDIA GPU(NVENC)で AV1 + Opus 96kbps、音声は libopus 96kbps へ再エンコードする。QWXGA(2048px)超の映像は縦横比を維持して自動縮小する。
## 動作要件
- Windows 11
- [ffmpeg](https://www.gyan.dev/ffmpeg/builds/)(別途インストール)
- NVIDIA GPU(**動画を「変換」する場合のみ必要。** AV1 NVENC 対応 / RTX 30 シリーズ以降推奨。音声のみの変換は CPU の libopus で動作するため不要)
## インストール方法
### Scoop 経由(推奨)
```powershell
scoop bucket add nikai https://github.com/aviscaerulea/scoop-bucket
scoop install nikai/avply
```
依存パッケージとして ffmpeg も自動でインストールされる。
### 手動インストール
[Releases](https://github.com/aviscaerulea/avply/releases) から `avply--x64.zip` をダウンロードして展開し、`avply.exe` を起動する。
ffmpeg は別途インストールが必要だ。(`scoop install ffmpeg` または [公式ビルド](https://www.gyan.dev/ffmpeg/builds/))
### ffmpeg パスの解決順
avply は以下の優先順で ffmpeg を解決する。
1. `avply.toml` / `avply.local.toml` の `[ffmpeg].path` で明示指定
2. scoop の既定パス `%USERPROFILE%/scoop/apps/ffmpeg/current/bin/ffmpeg.exe`
3. `PATH` 環境変数から `ffmpeg.exe` を解決
scoop または `PATH` 配下に ffmpeg があれば設定不要で動作する。
明示指定する場合は以下のように記述する。
```toml
[ffmpeg]
path = "C:/Users/yourname/scoop/apps/ffmpeg/current/bin/ffmpeg.exe"
```
PC 固有のパスを管理から外したい場合は `avply.local.toml` に同キーを記述する。(後勝ち、VCS 管理外)
## 使用方法
### ファイルの読み込み
以下のいずれかの方法で読み込める。
- 右クリック →「ファイルを開く」を選択(読込済みなら同フォルダ、未読込ならホームフォルダを初期表示)
- アプリウィンドウへドラッグ&ドロップ
- `avply.exe` 自体へのドラッグ&ドロップ、Windows の「送る」、「プログラムを指定して開く」
- コマンドラインから `avply.exe <メディアファイル>` の形式で起動
読み込み中のファイル名はウィンドウタイトル(`avply - ファイル名.拡張子`)に表示する。
同じファイルを再度読み込むと先頭から再生し直す。
### キー / マウス操作一覧
| 機能 | 操作 | キー / マウス |
|------|------|---------------|
| 再生 | 再生 / 停止 | スペース、またはプレビュー領域クリック(音声時はスペースのみ) |
| 再生 | シーク | ← → / シークバードラッグ / シークバー・プレビュー領域のホイール |
| 再生 | 再生速度 ±0.05 倍 | ↑ ↓ / Ctrl+ホイール |
| 再生 | 音量 ±0.05 | Shift+↑ ↓ / Shift+ホイール |
| 再生 | ノーマライズ強度切替(Off → 小 → 中 → 大 → Off) | N |
| 再生 | 音声明瞭化強度切替(Off → 小 → 中 → 大 → Off) | V |
| 再生 | 再生条件一括リセット | g |
| トリム | 区間開始位置を指定 | 【 ボタン / `[` |
| トリム | 区間終了位置を指定 | 】 ボタン / `]` |
| トリム | 区間のみクリア(再生位置は維持) | R |
| トリム | トリム実行 / 中断 | ✂ ボタン |
### 再生
再生速度はファイルを切り替えても保持される。
g キーは 1 回目で中立値(速度 1.00 / 音量 100% / Normalize Off / Clarity Off)、2 回目で起動時のデフォルト値へ復元する。リセット状態のまま手動で各値を変更すると、次の g 押下は再び「一括リセット」として動作する。
ステータスバーには現在の再生速度・音量に加え、ノーマライズ・明瞭化の強度を常時表示する(`Normalize:0〜3` / `Clarity:0〜3`、0=Off、1=小、2=中、3=大)。
### トリム
区間を指定してからトリム実行する。シークバー上の指定区間は赤でハイライト表示される。
再エンコードしないため、開始位置はキーフレームに丸められる。Ogg/Opus など一部コンテナでは `-c copy` の仕様上、カット直後の再生位置が数十ミリ秒ズレることがある。
### 変換
右クリック →「ファイルを変換する」で実行する。動画は AV1 + Opus、音声は libopus 96kbps のみへ再エンコードする。
### 出力ファイル
入力ファイルと同じフォルダに `<元ファイル名>_clip.<拡張子>` として出力される。
| モード | 入力 | 出力拡張子 |
|--------|------|-----------|
| 変換 | 動画 | `.mp4`(AV1 + Opus) |
| 変換 | 音声 | `.opus`(libopus) |
| トリム | 動画・音声 | 入力と同じ |
### その他
右クリックメニューの設定サブメニューから、再生中の topmost・シングルインスタンス強制・プロセス優先度を変更できる(レジストリに保存)。
### 設定ファイル
`avply.toml`(ローカル上書きは `avply.local.toml`)で再生速度・音量・シーク量・ノーマライズ・音声明瞭化など各種挙動をカスタマイズできる。各キーの説明・既定値・調整範囲は `avply.toml` 内のコメントを参照する。
## ビルド方法
### 必要ツール
- Visual Studio 2022+ Build Tools(C++ ワークロード)
- CMake 3.25+(`scoop install cmake`)
- Qt 6.10.3 MSVC2022 x64
- `python -m aqt install-qt windows desktop 6.10.3 win64_msvc2022_64 --outputdir <インストールフォルダ> --modules qtmultimedia`
- インストールフォルダは `CMakePresets.json` の `CMAKE_PREFIX_PATH` に合わせること
### ビルド手順
```powershell
pwsh.exe -File build.ps1
```
実行ファイルは `out/Release/avply.exe` に生成される。
## 技術仕様
- 言語:C++17
- GUI フレームワーク:Qt 6.10 Widgets + Multimedia(LGPLv3、DLL 動的リンク)
- 音声時間圧縮:SoundTouch 2.4.0(LGPL v2.1+、静的リンク)
- 映像コーデック:AV1(av1_nvenc, VBR CQ 28, preset p6)
- 音声コーデック:Opus 96kbps(libopus)
- ハードウェアアクセラレーション:NVIDIA NVENC(CUDA、動画変換時のみ使用)
- 外部ツール連携:ffmpeg / ffprobe(QProcess 経由)
## ライセンス
avply 本体は **GNU LGPL v3** で配布する。全文は同梱の `LICENSE`(LGPL v3)および `COPYING`(GPL v3)を参照。
依存ライブラリのライセンス対応:
- Qt 6.10(LGPLv3):windeployqt が配布する DLL を動的リンクする。利用者は同名 DLL を差し替えることで Qt を入れ替えられる
- SoundTouch 2.4.0(LGPL v2.1+):静的リンクのため、本体ライセンスを LGPL v3 とすることで再リンク権を確保する
- ffmpeg:QProcess による外部プロセス呼び出しのため、リンク関係は発生しない