fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core
"FFmpeg ライブラリ" npm パッケージ比較
1 年
fluent-ffmpegffmpeg-static@ffmpeg/ffmpeg@ffmpeg/core
FFmpeg ライブラリとは?

FFmpeg ライブラリは、音声や動画の処理を行うためのツールセットです。これらのライブラリは、エンコード、デコード、トランスコード、ストリーミング、フィルタリングなど、さまざまなメディア処理タスクを実行できます。FFmpeg は多くのフォーマットやコーデックに対応しており、コマンドラインツールとしても、プログラムから API を介して利用することもできます。これにより、ウェブアプリケーションやデスクトップアプリケーション、サーバーサイドの処理など、さまざまな環境でメディアファイルを操作することが可能です。

npmのダウンロードトレンド
GitHub Starsランキング
統計詳細
パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
fluent-ffmpeg865,7658,18512.4 MB4191年前MIT
ffmpeg-static159,5661,18548.2 kB232年前GPL-3.0-or-later
@ffmpeg/ffmpeg120,90615,68072 kB3874ヶ月前MIT
@ffmpeg/core39,92915,68064.7 MB3874ヶ月前GPL-2.0-or-later
機能比較: fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core

ブラウザサポート

  • fluent-ffmpeg:

    fluent-ffmpeg は、Node.js 環境専用です。ブラウザでは使用できません。

  • ffmpeg-static:

    ffmpeg-static は、ブラウザではなく、Node.js 環境で使用されることを想定しています。

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg もブラウザ環境で動作しますが、FFmpeg のフル機能を利用できるため、より複雑なメディア処理が可能です。

  • @ffmpeg/core:

    @ffmpeg/core は、ブラウザ環境で動作するように設計されています。特に、クライアントサイドでメディアファイルを処理するアプリケーションに最適です。

インストールの容易さ

  • fluent-ffmpeg:

    fluent-ffmpeg は、FFmpeg 自体をインストールする必要がありますが、ライブラリとしてのインストールは簡単です。

  • ffmpeg-static:

    ffmpeg-static は、FFmpeg のバイナリを自動的にダウンロードしてくれるため、手動でインストールする必要がありません。

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg も同様に簡単にインストールできますが、FFmpeg のバイナリを含むため、少し大きなパッケージになります。

  • @ffmpeg/core:

    @ffmpeg/core は、npm から直接インストールでき、特別な設定は不要です。

FFmpeg 機能の利用

  • fluent-ffmpeg:

    fluent-ffmpeg は、Node.js から FFmpeg の機能をプログラム的に利用できるようにするライブラリです。

  • ffmpeg-static:

    ffmpeg-static は、FFmpeg のバイナリを提供するだけで、機能自体は提供しません。

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg は、FFmpeg の全機能にアクセスできるため、より高度なメディア処理が可能です。

  • @ffmpeg/core:

    @ffmpeg/core は、FFmpeg の基本的な機能をブラウザや Node.js で利用できます。

コード例

  • fluent-ffmpeg:

    fluent-ffmpeg を使用した簡単なコード例

    const ffmpeg = require('fluent-ffmpeg');
    ffmpeg('input.mp4')
      .output('output.mp4')
      .on('end', () => console.log('処理完了'))
      .on('error', (err) => console.error('エラー:', err))
      .run();
    
  • ffmpeg-static:

    ffmpeg-static を使用した簡単なコード例

    const ffmpegPath = require('ffmpeg-static');
    const { execFile } = require('child_process');
    execFile(ffmpegPath, ['-i', 'input.mp4', 'output.mp4'], (err, stdout, stderr) => {
      if (err) throw err;
      console.log(stdout);
      console.error(stderr);
    });
    
  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg を使用した簡単なコード例

    import { createFFmpeg, fetchFile } from '@ffmpeg/ffmpeg';
    const ffmpeg = createFFmpeg({ log: true });
    (async () => {
      await ffmpeg.load();
      ffmpeg.FS('writeFile', 'input.mp4', await fetchFile('input.mp4'));
      await ffmpeg.run('-i', 'input.mp4', 'output.mp4');
      const data = ffmpeg.FS('readFile', 'output.mp4');
      const output = document.createElement('a');
      output.href = URL.createObjectURL(new Blob([data.buffer]));
      output.download = 'output.mp4';
      document.body.appendChild(output);
      output.click();
    })();
    
  • @ffmpeg/core:

    @ffmpeg/core を使用した簡単なコード例

    import { createFFmpeg, fetchFile } from '@ffmpeg/core';
    const ffmpeg = createFFmpeg({ log: true });
    (async () => {
      await ffmpeg.load();
      ffmpeg.FS('writeFile', 'input.mp4', await fetchFile('input.mp4'));
      await ffmpeg.run('-i', 'input.mp4', 'output.mp4');
      const data = ffmpeg.FS('readFile', 'output.mp4');
      const output = document.createElement('a');
      output.href = URL.createObjectURL(new Blob([data.buffer]));
      output.download = 'output.mp4';
      document.body.appendChild(output);
      output.click();
    })();
    
選び方: fluent-ffmpeg vs ffmpeg-static vs @ffmpeg/ffmpeg vs @ffmpeg/core
  • fluent-ffmpeg:

    fluent-ffmpeg を選択するのは、Node.js 環境で FFmpeg をプログラム的に操作したい場合です。特に、FFmpeg のコマンドを簡潔に構築し、実行するための高レベルな API が必要な場合に適しています。

  • ffmpeg-static:

    ffmpeg-static を選択するのは、プロジェクトに FFmpeg のバイナリを簡単に組み込みたい場合です。特に、サーバーサイドのアプリケーションで FFmpeg を使用するが、環境に依存せずに動作させたい場合に適しています。

  • @ffmpeg/ffmpeg:

    @ffmpeg/ffmpeg を選択するのは、FFmpeg のフル機能をブラウザや Node.js で利用したい場合です。特に、インタラクティブなメディア処理アプリケーションを開発する際に便利です。

  • @ffmpeg/core:

    @ffmpeg/core を選択するのは、ブラウザ環境や Node.js 環境で FFmpeg の機能を直接利用したい場合です。特に、ウェブアプリケーションでクライアントサイドのメディア処理を行いたい場合に適しています。