GStreamer は、ストリーミングメディアアプリケーションを作成するためのフレームワークです。基本設計は、オレゴン大学院大学 (Oregon Graduate Institute) のビデオパイプラインに基づいていますが、DirectShow のアイデアもいくつか採り入れています。
GStreamer の開発フレームワークでは、任意の種類のストリーミングマルチメディアアプリケーションを記述することができます。GStreamer フレームワークは、音声または動画、あるいはその両方の処理を行うアプリケーションを簡単に記述できるよう設計されています。GStreamer は音声と動画だけに限らず、あらゆる種類のデータフローを処理することができます。パイプライン設計は、適用されたフィルタの生成物に対してほとんどオーバーヘッドを加えることがないように作られています。このため GStreamer は、レイテンシに対する要求度が高いハイエンドオーディオアプリケーションの設計にも対応可能な優れたフレームワークとなっています。
GStreamer の最もわかりやすい使い方の 1 つは、GStreamer を使ったメディアプレーヤーの作成です。GStreamer にはメディアプレーヤーを作成するための各種コンポーネントがすでに含まれており、MP3、Ogg/Vorbis、MPEG-1/2、AVI、Quicktime、mod など、さまざまな形式を非常に幅広くサポートすることができます。しかし、GStreamer は単なるメディアプレーヤーではありません。GStreamer の主な利点は、さまざまなプラガブルコンポーネントを混在させて任意のパイプラインに組み込みことができ、このことを利用して本格的な動画/音声編集アプリケーションを作成できる点にあります。
GStreamer フレームワークのベースとなる各種プラグインは、さまざまなコーデックおよびその他の機能を提供します。これらのプラグインは互いにリンクさせて 1 つのパイプラインの中に配置することができます。そしてこのパイプラインが、データフローを規定します。こうしたパイプラインは GUI エディタで編集して XML で保存することもでき、最小限の労力でさまざまなパイプラインライブラリを作成できるようになっています。
GStreamer のコア機能は、プラグイン、データフロー、およびメディアの種類の処理やネゴシエーションのためのフレームワークを提供することにあります。また、さまざまなプラグインを使ってアプリケーションを作成するための API も提供しています。
GStreamer が提供するものは、具体的には以下のとおりです。
マルチメディアアプリケーションのための API
プラグインアーキテクチャ
パイプラインアーキテクチャ
メディアの種類の処理/ネゴシエーションのためのメカニズム
150 を超えるさまざまなプラグイン
各種ツール一式
GStreamer プラグインは、以下のものに分類されます。
プロトコル処理
ソース: 音声および動画用 (プロトコルプラグインを含む)
フォーマット: パーサ、フォーマッタ、マルチプレクサ (muxer)、デマルチプレクサ (demuxer)、メタデータ、字幕
コーデック: コーダ、デコーダ
フィルタ: コンバータ、ミキサー、エフェクトなど
シンク: 音声および動画用 (プロトコルプラグインを含む)
GStreamer は以下のパッケージから構成されています。
gstreamer: コアパッケージ
gst-plugins-base: 典型的な不可欠のエレメント群
gst-plugins-good: LGPL に基づく各種の高品質プラグイン
gst-plugins-ugly: 配布面で問題が生じる可能性のある各種の高品質プラグイン
gst-plugins-bad: さらに高いクオリティを必要とするプラグイン
gst-python: python バインディング
その他の少数のパッケージ