seydx/node-av

FFmpeg bindings for Node.js. Features both low-level and high-level APIs, full hardware acceleration, TypeScript support, and modern async patterns

解決する課題

オーディオ/ビデオ処理を必要とするNode.js開発者は、多くの場合FFmpegコマンドラインツールに依存しており、プロセスの生成や出力の解析が必要となります。NodeAVはその層を排除し、FFmpegのネイティブライブラリに直接バインドすることで、最小限のオーバーヘッドで完全な制御を提供します。TypeScriptの型安全性が追加されているため、コーデック、フォーマット、フィルターなどのオプションがコンパイル時にチェックされ、エラーの削減と開発者体験の向上が図れます。

仕組み

NodeAVはN-APIを使用して、Node.jsをFFmpegのC APIに接続します。3つのレベルのAPIを提供します:

  • 低レベル (Low-level):FFmpegの関数に直接アクセスし、最大限の制御を実現します。
  • 高レベル (High-level):デコード、エンコード、トランスコードなどの一般的なタスクのための抽象化を提供します。
  • パイプライン (Pipeline):多段階処理のためのシンプルなチェーン可能なインターフェースです。

自動検出(CUDA、VAAPIなど)を備えたハードウェアアクセラレーションが含まれており、Disposableパターン(usingやawait usingなど)を使用してリソースを自動的に管理します。プリビルドバイナリはインストール中にダウンロードされ、バインディングで使用されるFFmpegビルドと一致するため、個別のセットアップは不要です。また、デバイスキャプチャ、フィルタリング、ストリーミングなどのユーティリティも提供します。

対象ユーザー

ビデオトランスコード、IPカメラ統合、ライブストリーミング、画面キャプチャなど、メディア処理を必要とするアプリケーションを構築するNode.js開発者向けです。FFmpeg CLIに近いパフォーマンスを求めつつ、型定義されたJavaScript APIの利便性を失いたくない方に最適です。特にハードウェアアクセラレーションが必要なプロジェクトにおいて、FFmpeg機能をNode.jsプロセスに直接埋め込む必要がある場合に役立ちます。

ハイライト

  • 型安全なオプション:すべてのコーデック、フォーマット、約580のフィルター、ビットストリームフィルターに対して、FFmpeg自身のメタデータから生成された型定義により、エディタでの自動補完と検証が可能です。
  • 3つのAPI階層(低レベル、高レベル、パイプライン)により、さまざまなニーズに対応します。
  • ハードウェアアクセラレーション:自動検出機能と特定のデバイス(CUDA、VAAPIなど)のサポート。
  • デバイスキャプチャ:カメラ、マイク、画面用(AVFoundation、V4L2、DirectShowなどのプラットフォーム固有のバックエンド)。
  • Whisper音声認識:whisper.cpp経由の統合、自動モデルダウンロードとハードウェアアクセラレーションによる推論。
  • 高度なフィルタリング:複雑なグラフ、オーバーレイ、リアルタイムエフェクトのためのFilterComplexAPI。
  • ブラウザストリーミング:fMP4またはWebRTC経由(RTSPカメラのサポートを含む)。
  • RTSPバックチャネル/トークバック:IPカメラとの双方向オーディオ通信。
  • FFmpeg CLIに匹敵するパフォーマンス(ベンチマークではほとんどの操作でオーバーヘッドがほぼゼロであることを示しています)。
  • 自動リソースクリーンアップ:Disposableパターンによりメモリリークを削減。
  • プリビルドバイナリ:Windows、Linux、macOS用(手動でのFFmpegインストールは不要)。
  • Tree-shakingサポート:API、定数、レイアウトごとに個別のエントリポイントを提供。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト