{"id":49982261,"url":"https://github.com/aviscaerulea/avply","last_synced_at":"2026-05-24T00:05:09.986Z","repository":{"id":355318672,"uuid":"1227629097","full_name":"aviscaerulea/avply","owner":"aviscaerulea","description":"Windows 11 GUI tool for media (video/audio) playback, trimming, and RMS normalization. Converts video with AV1/NVENC and audio with libopus via ffmpeg.","archived":false,"fork":false,"pushed_at":"2026-05-18T09:15:03.000Z","size":770,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-18T09:44:22.256Z","etag":null,"topics":["audio","av1","cpp","ffmpeg","media-player","nvenc","opus","qt6","trimming","video","windows"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aviscaerulea.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-03T00:14:06.000Z","updated_at":"2026-05-18T09:15:07.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aviscaerulea/avply","commit_stats":null,"previous_names":["aviscaerulea/vcutter","aviscaerulea/avply"],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/aviscaerulea/avply","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviscaerulea%2Favply","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviscaerulea%2Favply/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviscaerulea%2Favply/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviscaerulea%2Favply/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aviscaerulea","download_url":"https://codeload.github.com/aviscaerulea/avply/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aviscaerulea%2Favply/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33416317,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","av1","cpp","ffmpeg","media-player","nvenc","opus","qt6","trimming","video","windows"],"created_at":"2026-05-18T16:05:14.590Z","updated_at":"2026-05-24T00:05:09.980Z","avatar_url":"https://github.com/aviscaerulea.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# avply\n\n会議録画を「速く・聞きやすく・必要な所だけ」見直すためのメディアプレイヤー。\n起動の速さと、倍速・ノーマライズ・音声明瞭化・キーフレームトリムで視聴時間を削る。\n\n![avply スクリーンショット](docs/images/screenshot.png)\n\n## 機能\n\n- **高速起動**  \n軽量な Qt Widgets ベースの最小構成で、起動から再生可能になるまでが速い。\n- **対応ファイル形式**\n    - 動画：mp4, mkv, mov, avi, webm\n    - 音声：mp3, wav, flac, ogg, opus\n\n    音声ファイル時はプレビュー領域を省略したコンパクト UI に切り替わる。\n- **シークバープレビュー**  \nシークバー上のマウスホバーで、その位置のフレームサムネイルと再生時刻を MPC-HC 風のポップアップで表示する。\n- **音声波形表示**  \nファイル読込後に ffmpeg で音声波形を非同期解析し、シークバー上段へ重ねて描画する。音声ストリームが無い場合は中央基線で代替する。\n- **会議録画向け再生支援**  \n    - **再生速度変更**：ピッチ補正付きで等速〜数倍速まで切替可能（ファイル切替後も保持）\n    - **ノーマライズ**：RMS コンプレッサで大声と小声の音量差をリアルタイムに圧縮\n    - **音声明瞭化**：Biquad EQ 3 段カスケード（HPF 100Hz + プレゼンスブースト 3kHz + 高域シェルフ 8kHz）でこもった声を聞き取りやすくする\n- **高速トリム**  \n範囲指定した区間を再エンコードせずキーフレーム単位で切り出す。入力と同じコーデック・コンテナのままディスクコピー速度近くで保存する。\n- **変換**  \n動画は NVIDIA GPU（NVENC）で AV1 + Opus 96kbps、音声は libopus 96kbps へ再エンコードする。QWXGA（2048px）超の映像は縦横比を維持して自動縮小する。\n\n## 動作要件\n\n- Windows 11\n- [ffmpeg](https://www.gyan.dev/ffmpeg/builds/)（別途インストール）\n- NVIDIA GPU（**動画を「変換」する場合のみ必要。** AV1 NVENC 対応 / RTX 30 シリーズ以降推奨。音声のみの変換は CPU の libopus で動作するため不要）\n\n## インストール方法\n\n### Scoop 経由（推奨）\n\n```powershell\nscoop bucket add nikai https://github.com/aviscaerulea/scoop-bucket\nscoop install nikai/avply\n```\n\n依存パッケージとして ffmpeg も自動でインストールされる。\n\n### 手動インストール\n\n[Releases](https://github.com/aviscaerulea/avply/releases) から `avply-\u003cversion\u003e-x64.zip` をダウンロードして展開し、`avply.exe` を起動する。\nffmpeg は別途インストールが必要だ。（`scoop install ffmpeg` または [公式ビルド](https://www.gyan.dev/ffmpeg/builds/)）\n\n### ffmpeg パスの解決順\n\navply は以下の優先順で ffmpeg を解決する。\n\n1. `avply.toml` / `avply.local.toml` の `[ffmpeg].path` で明示指定\n2. scoop の既定パス `%USERPROFILE%/scoop/apps/ffmpeg/current/bin/ffmpeg.exe`\n3. `PATH` 環境変数から `ffmpeg.exe` を解決\n\nscoop または `PATH` 配下に ffmpeg があれば設定不要で動作する。\n明示指定する場合は以下のように記述する。\n\n```toml\n[ffmpeg]\npath = \"C:/Users/yourname/scoop/apps/ffmpeg/current/bin/ffmpeg.exe\"\n```\n\nPC 固有のパスを管理から外したい場合は `avply.local.toml` に同キーを記述する。（後勝ち、VCS 管理外）\n\n## 使用方法\n\n### ファイルの読み込み\n\n以下のいずれかの方法で読み込める。\n\n- 右クリック →「ファイルを開く」を選択（読込済みなら同フォルダ、未読込ならホームフォルダを初期表示）\n- アプリウィンドウへドラッグ＆ドロップ\n- `avply.exe` 自体へのドラッグ＆ドロップ、Windows の「送る」、「プログラムを指定して開く」\n- コマンドラインから `avply.exe \u003cメディアファイル\u003e` の形式で起動\n\n読み込み中のファイル名はウィンドウタイトル（`avply - ファイル名.拡張子`）に表示する。\n同じファイルを再度読み込むと先頭から再生し直す。\n\n### キー / マウス操作一覧\n\n| 機能 | 操作 | キー / マウス |\n|------|------|---------------|\n| 再生 | 再生 / 停止 | スペース、またはプレビュー領域クリック（音声時はスペースのみ） |\n| 再生 | シーク | ← → / シークバードラッグ / シークバー・プレビュー領域のホイール |\n| 再生 | 再生速度 ±0.05 倍 | ↑ ↓ / Ctrl+ホイール |\n| 再生 | 音量 ±0.05 | Shift+↑ ↓ / Shift+ホイール |\n| 再生 | ノーマライズ強度切替（Off → 小 → 中 → 大 → Off） | N |\n| 再生 | 音声明瞭化強度切替（Off → 小 → 中 → 大 → Off） | V |\n| 再生 | 再生条件一括リセット | g |\n| トリム | 区間開始位置を指定 | 【 ボタン / `[` |\n| トリム | 区間終了位置を指定 | 】 ボタン / `]` |\n| トリム | 区間のみクリア（再生位置は維持） | R |\n| トリム | トリム実行 / 中断 | ✂ ボタン |\n\n### 再生\n\n再生速度はファイルを切り替えても保持される。\ng キーは 1 回目で中立値（速度 1.00 / 音量 100% / Normalize Off / Clarity Off）、2 回目で起動時のデフォルト値へ復元する。リセット状態のまま手動で各値を変更すると、次の g 押下は再び「一括リセット」として動作する。\n\nステータスバーには現在の再生速度・音量に加え、ノーマライズ・明瞭化の強度を常時表示する（`Normalize:0〜3` / `Clarity:0〜3`、0=Off、1=小、2=中、3=大）。\n\n### トリム\n\n区間を指定してからトリム実行する。シークバー上の指定区間は赤でハイライト表示される。\n再エンコードしないため、開始位置はキーフレームに丸められる。Ogg/Opus など一部コンテナでは `-c copy` の仕様上、カット直後の再生位置が数十ミリ秒ズレることがある。\n\n### 変換\n\n右クリック →「ファイルを変換する」で実行する。動画は AV1 + Opus、音声は libopus 96kbps のみへ再エンコードする。\n\n### 出力ファイル\n\n入力ファイルと同じフォルダに `\u003c元ファイル名\u003e_clip.\u003c拡張子\u003e` として出力される。\n\n| モード | 入力 | 出力拡張子 |\n|--------|------|-----------|\n| 変換 | 動画 | `.mp4`（AV1 + Opus） |\n| 変換 | 音声 | `.opus`（libopus） |\n| トリム | 動画・音声 | 入力と同じ |\n\n### その他\n\n右クリックメニューの設定サブメニューから、再生中の topmost・シングルインスタンス強制・プロセス優先度を変更できる（レジストリに保存）。\n\n### 設定ファイル\n\n`avply.toml`（ローカル上書きは `avply.local.toml`）で再生速度・音量・シーク量・ノーマライズ・音声明瞭化など各種挙動をカスタマイズできる。各キーの説明・既定値・調整範囲は `avply.toml` 内のコメントを参照する。\n\n## ビルド方法\n\n### 必要ツール\n\n- Visual Studio 2022+ Build Tools（C++ ワークロード）\n- CMake 3.25+（`scoop install cmake`）\n- Qt 6.10.3 MSVC2022 x64\n  - `python -m aqt install-qt windows desktop 6.10.3 win64_msvc2022_64 --outputdir \u003cインストールフォルダ\u003e --modules qtmultimedia`\n  - インストールフォルダは `CMakePresets.json` の `CMAKE_PREFIX_PATH` に合わせること\n\n### ビルド手順\n\n```powershell\npwsh.exe -File build.ps1\n```\n\n実行ファイルは `out/Release/avply.exe` に生成される。\n\n## 技術仕様\n\n- 言語：C++17\n- GUI フレームワーク：Qt 6.10 Widgets + Multimedia（LGPLv3、DLL 動的リンク）\n- 音声時間圧縮：SoundTouch 2.4.0（LGPL v2.1+、静的リンク）\n- 映像コーデック：AV1（av1_nvenc, VBR CQ 28, preset p6）\n- 音声コーデック：Opus 96kbps（libopus）\n- ハードウェアアクセラレーション：NVIDIA NVENC（CUDA、動画変換時のみ使用）\n- 外部ツール連携：ffmpeg / ffprobe（QProcess 経由）\n\n## ライセンス\n\navply 本体は **GNU LGPL v3** で配布する。全文は同梱の `LICENSE`（LGPL v3）および `COPYING`（GPL v3）を参照。\n\n依存ライブラリのライセンス対応：\n\n- Qt 6.10（LGPLv3）：windeployqt が配布する DLL を動的リンクする。利用者は同名 DLL を差し替えることで Qt を入れ替えられる\n- SoundTouch 2.4.0（LGPL v2.1+）：静的リンクのため、本体ライセンスを LGPL v3 とすることで再リンク権を確保する\n- ffmpeg：QProcess による外部プロセス呼び出しのため、リンク関係は発生しない\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviscaerulea%2Favply","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faviscaerulea%2Favply","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faviscaerulea%2Favply/lists"}