Skip to content

tgfjt/vvn

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

vvn - video volume normalizer

動画の音量を適正レベルに自動調整するWebアプリケーション

背景

問題

  • 提供された動画の音量が大きすぎる、あるいは小さすぎるので調整したい
  • ffmpegやAudacityなどの専門ツールを使えない、使わないひとでも調整可能になると嬉しい

解決策

シンプルなWebインターフェースで動画をドラッグ&ドロップするだけで、配信に最適な音量レベルに自動調整

ゴール

誰でも使える音量調整ツール

  • ドラッグ&ドロップだけで操作完了
  • インストール不要(ブラウザで動作)
  • Before/After測定値の表示

技術仕様

音量調整パラメータ

  • ラウドネス: -14 LUFS(YouTube/Spotify推奨)
  • トゥルーピーク: -1 dBFS(歪み防止)
  • ラウドネスレンジ: 11 LU(標準的なダイナミクス)

対応フォーマット

  • MP4, MOV, AVI, MKV, WebM

技術スタック

  • Vite: 高速ビルドツール
  • ffmpeg.wasm (@ffmpeg/core-mt): ブラウザ内動画処理(マルチスレッド版)
  • EBU R128 loudnorm: 音量正規化フィルター

開発状況

完了済み

  • ✅ Viteプロジェクト構築
  • ✅ ffmpeg.wasmマルチスレッド版統合
  • ✅ ドラッグ&ドロップUI
  • ✅ 2パスloudnorm処理
  • ✅ Before/After測定値表示
  • ✅ GitHub Pages対応ビルド

使い方

  1. ブラウザでアプリを開く
  2. 動画ファイルをドラッグ&ドロップ(またはクリックして選択)
  3. 自動で処理開始(Before測定 → 正規化 → After測定)
  4. 処理完了後、ダウンロードボタンからoutput.mp4を保存

開発

セットアップ

npm install

開発サーバー起動

npm run dev

プロダクションビルド

npm run build

ビルド確認

npm run preview

メモ

2パスloudnorm処理

より正確な音量調整のため、2パス処理を実装:

1パス目(分析):

ffmpeg -i input.mp4 -af loudnorm=I=-14:TP=-1:LRA=11:print_format=json -f null -

2パス目(正規化):

ffmpeg -i input.mp4 -af loudnorm=I=-14:TP=-1:LRA=11:linear=true:measured_I=[1パス目の値]:... output.mp4
  • loudnorm: EBU R128規格に基づくラウドネス正規化
  • I=-14: 統合ラウドネス目標値(LUFS)
  • TP=-1: トゥルーピーク最大値(dBTP)
  • LRA=11: ラウドネスレンジ(LU)
  • linear=true: リニア正規化(2パス目のみ)

パフォーマンス

マルチスレッド版(@ffmpeg/core-mt)使用により、シングルスレッド版と比較して約4.5倍高速化を実現。

54秒の動画処理時間:

  • シングルスレッド: 71.4秒
  • マルチスレッド: 15.8秒

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published