シンプルなパイプライン gst-launch | |
| 開発者 | GStreamer チーム |
|---|---|
| 初回リリース | 2001年1月11日[1] |
| 安定版リリース | 1.24.11 [2]
/ 2025年1月7日 |
| リポジトリ |
|
| 書かれた | C [3] |
| オペレーティング·システム | BSD、 OpenSolaris、Linux、Android、macOS、iOS、Windows、OS/400 |
| タイプ | マルチメディアフレームワーク |
| ライセンス | LGPL-2.1以降[4] |
| Webサイト | gstreamer.freedesktop.org |
GStreamer は、さまざまなメディア処理システムをリンクして複雑なワークフローを完成させるパイプライン ベースのマルチメディア フレームワークです。たとえば、GStreamer を使用すると、ある形式のファイルを読み取り、処理して、別の形式でエクスポートするシステムを構築できます。形式とプロセスは、プラグ アンド プレイ方式で変更できます。
GStreamer は、単純なオーディオ再生、オーディオとビデオの再生、録画、ストリーミング、編集など、さまざまなメディア処理コンポーネントをサポートしています。パイプライン設計は、ビデオ エディター、トランスコーダー、ストリーミング メディア ブロードキャスター、メディア プレーヤーなど、さまざまな種類のマルチメディアアプリケーションを作成するための基盤として機能します。
BSD、OpenSolaris、Linux、Android、macOS、iOS、Windows、OS/400など、さまざまなオペレーティング システムで動作するように設計されています。
GStreamerはLGPL-2.1以降[4]の規約に従う無料のオープンソースソフトウェアであり、 freedesktop.orgでホストされています。
配布と採用
GStreamerを頻繁に使用するGNOMEデスクトップ環境は、GNOMEバージョン2.2からGStreamerを組み込んでおり、GNOMEおよびGTKアプリケーションでの使用を推奨しています。PhononメディアフレームワークやSongbirdメディアプレーヤーなど、他のプロジェクトでもGStreamerを使用またはサポートしています。また、 WebKitブラウザエンジンでも使用されています。[5]
GStreamerは、 Jolla Phone、Palm Pre、[6] Tizen、Maemoオペレーティングシステムを実行するNokia 770、N800、N810、N900、N9インターネットタブレットなどの組み込みデバイスでも動作します。
GStreamerプロジェクトはソースコードのリリースに加えて、Android、iOS、OSX、Windows用のバイナリビルドも提供しています。[7]
LIGO研究所は重力波データのシミュレーションと解析にGStreamerを利用しています。GStreamerインターフェースはGstLALと呼ばれています。 [8]
ソフトウェアアーキテクチャ



GStreamer は、GObjectと GLib 2.0 オブジェクト モデル に基づく型システムを使用してC プログラミング言語で記述されています。
言語バインディング
あるプログラミング言語で書かれたライブラリは、バインディングが書かれていれば別の言語でも使用できます。GStreamer には、 Go、Python、Rust、Vala、C++、Perl、GNU Guile、C#、Rubyなど、さまざまな言語用のさまざまなバインディングがあります。
概要
GStreamer は、多数の処理要素をパイプラインに接続してメディアを処理します。各要素はプラグインによって提供されます。要素はビンにグループ化でき、ビンをさらに集約して階層グラフを形成できます。これはフィルター グラフの例です。
要素はパッドを使用して通信します。ある要素のソース パッドは、別の要素のシンクのパッドに接続できます。パイプラインが再生状態にある場合、データバッファーはソース パッドからシンクのパッドに流れます。パッドは、機能を使用して送信されるデータの種類をネゴシエートします。
右の図は、 GStreamer を使用してMP3ファイルを再生する例です。ファイル ソースは、コンピューターのハード ドライブから MP3 ファイルを読み取り、それを MP3 デコーダーに送信します。デコーダーはファイル データをデコードし、それをPCMサンプルに変換して、サウンド ドライバーに渡します。サウンド ドライバーは、PCM サウンド サンプルをコンピューターのスピーカーに送信します。
プラグイン
GStreamerは、共有ライブラリとして実装されたGStreamerの機能を最大限に活用するプラグインアーキテクチャを使用します。[9] GStreamerの基本機能には、プラグインを登録およびロードする機能と、基本クラスの形式ですべてのクラスの基礎を提供する機能が含まれています。プラグインライブラリは動的にロードされ、幅広いコーデック、コンテナ形式、入出力ドライバ、およびエフェクトをサポートします。
プラグインは、最初に必要になったときに半自動的にインストールできます。そのために、ディストリビューションは、機能の説明をパッケージ名に解決するバックエンドを登録できます。
バージョン0.9以降、プラグインは3つのセットにグループ化されています(映画「夕陽のガンマン」にちなんで名付けられました)。[10]
個々のディストリビューションでは、これらのプラグインをさらに細分化できます。たとえば、Ubuntu では、「悪い」セットと「醜い」セットを「Universe」または「Multiverse」コンポーネントにグループ化します。
さらに、サポートされるメディア形式の数を拡張する GStreamer FFmpegプラグイン(歴史的な理由からgst-libavと呼ばれています[14] )があります。
ビデオアクセラレーション

PureVideo、UVD、QuickSync Video、TI Ducatiなどの特定のビデオ コーデックをデコードするための計算を実行できるさまざまなSIP ブロックがあります。これらはデバイス ドライバーによってサポートされる必要があり、デバイス ドライバーは MPlayer などのエンド ユーザー ソフトウェアにVDPAU、VAAPI、Distributed Codec Engine、DXVAなどの1 つまたは複数のインターフェイスを提供して、このハードウェアにアクセスし、計算をオフロードします。
- OpenMAX ILラッパープラグインgst-omxを介してGStreamerでビデオコーディングエンジンを使用することが可能です。[15]これは、たとえばRaspberry Piで可能です。[16]
- 一部のTexas Instruments SoCに搭載されているSIPコアもGStreamer経由でアクセス可能です:gst-dmai、gst-openmax、gst-dsp。[17]
- VDPAUとVAAPIは2010年以降、 GNOME Videos >= 2.28.0およびGStreamer >= 0.10.26でサポートされている[18]
- Broadcom Crystal HDがサポートされている[19]
メディア形式
前述の良い、悪い、そして醜いGStreamerプラグインは、あらゆる種類の処理要素/フィルタとともに、多種多様なファイル形式、プロトコル、マルチメディアコーデックのサポートを提供します。それらに加えて、100を超える圧縮形式(MPEG-1、MPEG-2、MPEG-4、H.261、H.263、H.264、RealVideo、MP3、WMVなど[20]を含む)のサポートがgst-libavプラグイン を通じて透過的に提供されます。
歴史と発展
初期の頃
Erik Walthinsenは1999年にGStreamerプロジェクトを設立しました。その中核となる設計アイデアの多くは、オレゴン大学院の研究プロジェクトから生まれました。[21]その後すぐに Wim Taymansがプロジェクトに参加し、システムの多くの側面を大幅に拡張しました。それ以来、他の多くのソフトウェア開発者が貢献しています。
最初のメジャーリリースは2001年1月11日に発表された0.1.0でした。[1]その後間もなく、GStreamerは最初の商業的支援者を獲得しました。2001年1月末に、彼らはErik Walthinsenを雇い、GStreamerをより小型の(携帯電話クラスの)デバイスに組み込む方法を開発しました。RidgeRunの別の従業員であるBrock A. FrazierがGStreamerのロゴをデザインしました。RidgeRunは後に財政的に苦戦し、Erik Walthinsenを含むスタッフを解雇しなければなりませんでした。GStreamerの進歩にはほとんど影響はありませんでした。
プロジェクトは一連のメジャー リリースをリリースし、0.2.0 は 2001 年 7 月、0.4.0 は 2002 年 9 月、0.8.0 は 2004 年 3 月にリリースされました。この期間中、プロジェクトはバージョン管理戦略も変更し、最初のリリースは単に新しいバージョンでしたが、後に中間の数字はリリース シリーズを表すようになりました。つまり、プロジェクトは 0.6.x と 0.8.x のリリースを連続してリリースしましたが、これらのリリース シリーズ内ではバイナリ互換性が維持されることになっていました。Erik Walthinsen は、この間、GStreamer の開発をほぼ放棄し、他の事業に注力しました。
すべてのリリース シリーズで、プロジェクトは困難に直面しています。すべてのシリーズは Linux コミュニティであまり人気がありません。その主な理由は、安定性の問題と、Xine、MPlayer、VLCなどの競合プロジェクトと比較した機能の大幅な不足です。また、 Erik Walthinsen が去って以来プロジェクト リーダーを務めていた Wim Taymans がほとんど参加しなくなったため、プロジェクトはリーダーシップの欠如にも悩まされています。
0.10シリーズ
2004 年に、GStreamer を使用してストリーミング サーバー Flumotion を作成し、GStreamer 用のマルチメディア ソリューションも提供したいと考えていた新しい会社 Fluendo が設立されました。この間、Fluendo は Wim Taymans を含むコア開発者のほとんどを雇用し、NokiaやIntelなどの企業の支援を得て、GStreamer をプロフェッショナル レベルに引き上げ、コミュニティでの採用を促進しました。
Wim Taymansが指揮を執り、GStreamerのコアが再設計され、現在の0.10.xシリーズとなり、2005年12月に最初のリリース(0.10.0)が行われました。 [22]それ以来、 APIとABIの互換性が維持されています。
安定した新しいコアが導入された GStreamer は、2006 年に人気を博し、Totem、Rhythmbox、Bansheeなどのメディア プレーヤーで使用され、その後も多くのプレーヤーで採用されました。また、Nokia、Motorola、Texas Instruments、Freescale、Tandberg、Intelなどの企業でも採用されました。
2007 年には、GStreamer のコア開発者のほとんどが Fluendo を去りました。その中には、他の GStreamer ベテランとともにCollabora Multimedia を共同設立した GStreamer メンテナーの Wim Taymans も含まれ、その他の開発者はSun Microsystems、Oblong Industries、Songbirdに加わりました。
2012年6月から2014年8月の間、GStreamer 0.10はCollaboraとFluendoによってマルチプラットフォームSDKとしても配布され[23]、サードパーティのgstreamer.comウェブサイト(アップストリームコミュニティプロジェクトのgstreamer.freedesktop.orgではなく)上で配布されました。その目標は、Windows、Mac OS X、iOS、Androidで機能的に同一のSDKをアプリケーション開発者に提供することでした。SDKの取り組みは、GStreamerプロジェクトの商用採用を促進することを目的としていました。GStreamerを使用してマルチメディアアプリケーションを開発するための標準化されたエントリポイントを提供し、プラットフォーム全体を自分で構築する必要がないようにするためです。SDKのユーザーは、そのSDKに固有のドキュメント、チュートリアル、および手順 の恩恵も受けました。
1.x シリーズ
GStreamer 1.0は2012年9月24日にリリースされました。[24] 1.xシリーズはGStreamer 0.10と並行してインストールできるため、移行が容易で、0.10シリーズに比べて多くのアーキテクチャ上の利点があります。[25]一般的に、GStreamer 1.0では以下の点で大きな改善がもたらされました。
- 組み込みプロセッサのサポート、消費電力の低減、専用ハードウェアユニット( DSPなど)への作業のオフロード
- GPUを使用したハードウェア アクセラレーションによるビデオ デコード/エンコード
- ゼロコピーメモリ管理(CPUとGPU間の不要なラウンドトリップを回避)により、パフォーマンスが向上し、消費電力が削減されます。
- 動的パイプライン
- APIとコードのクリーンアップ
技術的な改善以外にも、1.x シリーズは新しいリリース バージョン スキームによって定義されます。GStreamer ロードマップで説明されているように、[26]すべての 1.xy バージョンには -1.0 API バージョン サフィックスが付いており、安定した API/ABI があります。API/ABI は新しいメジャー リリース シリーズ (つまり 2.x) によってのみ破られますが、現在 2.0 リリース シリーズの計画はありません。それまでは、新しいバージョン番号付けスキームを使用して、各リリースの目的を予測できます。ロードマップでは、いくつかの例を挙げています。
- 1.0.0、1.0.1、1.0.2、1.0.3... 安定版リリースとその後のバグ修正リリース
- 1.1.0、1.1.1、1.1.2、1.1.3... プレリリース、1.2.0 までの開発バージョン
- 1.2.0、1.2.1、1.2.2、1.2.3... 安定版リリースとその後のバグ修正リリース
- 1.3.0...
- 1.4.0...
- 等
2013年3月、GStreamerプロジェクトのメンテナーは、0.10シリーズはもはやメンテナンスされていないことを明確にする声明[27]を発表しました。この声明では、GStreamerプロジェクトがアプリケーションおよびプラグイン開発者の新しいテクノロジーへの移行を支援する意欲を再確認し、1.xシリーズへの移行が依然として不可能であると考えられている人々は、さまざまなコンサルティング会社に支援を求めることができることを示唆しました。
1.2 では、 DASHアダプティブ ストリーミング、JPEG 2000画像、VP9およびDaalaビデオのサポート、およびWebPのデコードのみのサポートが追加されました。
バージョン1.14は2018年3月19日にリリースされ、[28] WebRTC、AV1、Nvidia NVDEC、Secure Reliable Transportのサポートなどの変更が加えられました。
バージョン1.22は2023年1月23日にリリースされ、[29]アダプティブビットレートストリーミングのための HLS、DASH、Microsoft Smooth Streamingのサポートに加えて、AV1のサポートが強化されました。
参照
- GStreamerを使用するソフトウェアの一覧
- OggConvert – シンプルな GUI フロントエンド
- GNOME SoundConverter – デジタルオーディオファイルをトランスコードするための GStreamer と GTK に基づく GUI フロントエンド
- Pitivi – GStreamer ベースのビデオエディタ
参考文献
- ^ ab 「GStreamer "Slipstream" 0.1.0 リリース」。2001年1月11日。2012年11月11日時点のオリジナルよりアーカイブ。2010年11月3日閲覧。
- ^ 「GStreamer 1.24.11 安定版バグ修正リリース」。2025年1月7日。 2025年1月7日閲覧。
- ^ 「GStreamer」、Ohloh Analysis Summary、Ohloh、2014年6月26日時点のオリジナルよりアーカイブ、2016年11月6日閲覧
- ^ ab 「GStreamer とそのプラグインの正確なライセンス条件は何ですか?」。freedesktop.org。2021年 6 月 7 日のオリジナルからアーカイブ。2021年 6 月 7 日取得。
- ^ “Igalia Multimedia”. 2021年9月1日時点のオリジナルよりアーカイブ。2021年9月1日閲覧。
- ^ 「webOS と GStreamer」。webOShelp。2009 年 3 月 22 日時点のオリジナルよりアーカイブ。2009 年7 月 25 日閲覧。
- ^ 「GStreamer: ダウンロード」。gstreamer.freedesktop.org。2015年5月10日時点のオリジナルよりアーカイブ。2015年5月15日閲覧。
- ^ 「GstLALプロジェクトページ」Wiki.ligo.org。2020年4月23日時点のオリジナルよりアーカイブ。 2019年5月6日閲覧。
- ^ モジュールの概要、Gstreamer.freedesktop.org、2012年1月25日時点のオリジナルよりアーカイブ、 2012年2月8日閲覧
- ^ GStreamer 0.9 開発シリーズ - Hung by a Thread、Gstreamer.freedesktop.org、2013 年 1 月 27 日時点のオリジナルよりアーカイブ、 2013 年2 月 24 日閲覧
- ^ 「GStreamer の優れたプラグイン」。2019 年 2 月 7 日時点のオリジナルよりアーカイブ。2019 年 2 月 5 日閲覧。
- ^ 「GStreamer の不適切なプラグイン」。2019 年 2 月 7 日時点のオリジナルよりアーカイブ。2019 年 2 月 5 日閲覧。
- ^ 「GStreamer Ugly Plug-ins」。2019年2月7日時点のオリジナルよりアーカイブ。2019年2月5日閲覧。
- ^ “subprojects/gst-libav/README.md · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab”. GitLab . 2021年9月24日. 2022年7月12日閲覧。
- ^ 「GStreamer OpenMAX IL wrapper plugin」。gstreamer.freedesktop.org。2017年7月10日時点のオリジナルよりアーカイブ。2017年7月21日閲覧。
- ^ 「Gstreamer 1.0 for raspbian」。GRaspberrypi.org。2017年7月10日時点のオリジナルよりアーカイブ。2017年7月21日閲覧。
- ^ 「TI ハードウェア用 GStreamer プラグイン」。Processors.wiki.ti.com。2017年 6 月 28 日時点のオリジナルよりアーカイブ。2017 年 7 月 21 日閲覧。
- ^ 「Fluendo Codec Pack Release 11 で VDPAU と VAAPI がサポートされる」 2010 年 3 月 25 日。2014 年 6 月 24 日時点のオリジナルよりアーカイブ。
- ^ Debian Webmaster. 「Debian - wheezy のパッケージ gstreamer0.10-crystalhd の詳細」. Packages.debian.org . 2017-06-29 にオリジナルからアーカイブ。2017-07-21に取得。
- ^ “subprojects/gst-libav/ext/libav/gstavcodecmap.c · 47ac79d7b8cc078f4890d0ce21f47e1c1af2c736 · GStreamer / gstreamer · GitLab”. GitLab . 2022年1月16日. 2022年7月12日閲覧。
- ^ Edge, Jake (2010年10月26日). 「GStreamer: 過去、現在、そして未来」. LWN.net . 2022年5月15日閲覧。
- ^ 「GStreamer 0.10.0 安定版リリース - 0.10 安定版シリーズの最初のリリースのお知らせ」。gstreamer.freedesktop.org。2017年 7 月 7 日時点のオリジナルよりアーカイブ。2017年 7 月 21 日閲覧。
- ^ 「GStreamer ドキュメント」。Docs.gstreamer.com。2016年10 月 28 日時点のオリジナルよりアーカイブ。2017年 7 月 21 日閲覧。
- ^ 「GStreamer 1.0 リリース」。gstreamer.freedesktop.org。2017年 7 月 7 日時点のオリジナルよりアーカイブ。2017年 7 月 21 日閲覧。
- ^ 「GStreamer 1.0 および 0.10」。Lwn.net。2017年 6 月 13 日時点のオリジナルよりアーカイブ。2017 年 7 月 21 日閲覧。
- ^ 「ReleasePlanning2013 - gstreamer Wiki」。2013年8月15日時点のオリジナルよりアーカイブ。2013年9月16日閲覧。
- ^ “GStreamer 0.10 はメンテナンスされなくなりました”. Lists.freedesktop.org . 2013年3月11日. 2017年7月10日時点のオリジナルよりアーカイブ。2017年7月21日閲覧。
- ^ 「GStreamer 1.14 リリースノート」。2018年3月20日時点のオリジナルよりアーカイブ。2018年9月8日閲覧。
- ^ 「GStreamer 1.22 リリースノート」。gstreamer.freedesktop.org 。 2023年5月18日閲覧。
外部リンク
- 公式サイト
- デルファイ橋(バインディング)
