
GStreamerは、音声と動画のデコード・エンコード・再生・配信を「パイプライン」として組み立てるオープンソースのマルチメディアフレームワークです。1999年にスウェーデンの大学生エリック・ヴァルテーセン氏とヴィム・タイマンス氏が立ち上げ、現在はLGPLライセンスで公開されています。「source → demuxer → decoder → sink」のような要素(element)をプラグインとして繋ぎ合わせる構造で、GNOMEデスクトップのメディアプレイヤーやLinuxの組み込み機器、車載インフォテインメントなどで広く採用されています。ノキアやFreescale、Texas InstrumentsといったSoCベンダがハードウェアアクセラレーション対応プラグインを提供してきました。
この記事の目次
- GStreamerを支える3つの柱
- 1999年立ち上げから現在まで
- デスクトップから車載まで広がる用途
- FFmpegとの違い
- まとめ
GStreamerを支える3つの柱

GStreamerの世界では、「element(要素)」と呼ばれる最小単位が中心概念です。filesrcやrtspsrcといった入力要素、qtdemuxやmatroskademuxといったコンテナ分離要素、avdec_h264のようなデコーダ、autovideosink・alsasinkなどの出力要素がそれぞれ独立したプラグインとして提供されています。各elementには「pad」と呼ばれる入出力端子があり、互換性のあるpad同士を繋いで「pipeline」を構成すると、自動的にデータが流れていく仕組みです。
もう一つの柱がプラグインアーキテクチャで、コーデック・フィルタ・入出力デバイス・ネットワークプロトコルなどすべてが共有ライブラリ形式で着脱可能です。ライセンスごとに「base / good / bad / ugly」というセットに分かれており、商用配布時の判断もしやすくなっています。アプリ側ではC・C++・Python・Rust・GstSharpなどからgst_parse_launch()相当のAPIを呼び、「videotestsrc ! videoconvert ! autovideosink」のような文字列でパイプラインを記述できる気軽さも特徴です。
1999年立ち上げから現在まで

GStreamerの起点は1999年、当時スウェーデンの大学生だったエリック・ヴァルテーセン氏が立ち上げたプロジェクトで、「Linuxにもまともなマルチメディア基盤が必要」という問題意識から始まりました。ヴィム・タイマンス氏らが共同開発に加わり、2001年にGNOMEプロジェクトとの統合が進み、Linuxデスクトップ標準のメディアフレームワークの座を獲得していきました。
2007年にはノキアがマエモ/MeeGoのメディアスタックとしてGStreamerを採用し、N810・N900といったスマートフォンに搭載されました。FreescaleやTexas InstrumentsのSoCベンダがハードウェアエンコーダ対応プラグインを提供し、車載インフォテインメントの世界でも標準的な選択肢に育ちました。Collaboraやセントリー(Centricular)社が継続的に商用サポートを行い、2020年代にはRust製プラグインの追加やWebRTCサポート強化が進んで、現代的なリアルタイム通信基盤としても採用が拡大しています。
デスクトップから車載まで広がる用途

GStreamerが最も浸透しているのはGNOMEデスクトップ環境で、TotemやRhythmboxといった動画/音楽プレイヤーが標準でGStreamerを利用しています。ノキアのN900以降の組み込みLinuxデバイスや、AGL(Automotive Grade Linux)の車載インフォテインメントでもメディアスタックの中心に据えられ、「組み込み機器でもデスクトップでも同じパイプライン記述で動かせる」という利点が広く活用されてきました。
ネットワーク分野ではRTSPサーバを内蔵できるため、監視カメラやドローンの映像をクラウドに中継する用途でも採用が広がっています。近年はWebRTCbinというプラグインによって、ブラウザとのリアルタイム双方向通信を含むパイプラインを組めるようになり、Janus Gateway・Pion Mediasoupなどと並ぶOSSのWebRTC基盤として選ばれるようになりました。Snowflake・AWS Kinesis Video Streamsといったクラウドサービスとの連携プラグインも整い、エッジ側~クラウド側を貫く配信基盤を構築できます。
FFmpegとの違い

GStreamerはFFmpegと比較されることが多いですが、思想は対照的です。FFmpegが「CLIで完結する一括処理ツール」だとすれば、GStreamerは「アプリ内部に組み込むためのフレームワーク」で、動的なパイプライン変更、シーク・トリックプレイ・WebRTCといった対話的な処理を組み込むには圧倒的に向いています。デスクトップアプリ・組み込み機器・車載インフォテインメントといった「ユーザーアプリの内部からメディアを操る」用途では第一候補です。
一方でCLIから1コマンドでフォーマット変換やバッチ処理を行いたい場合は、FFmpegの方が圧倒的に手数が少なくて済みます。サーバサイドのトランスコードや、CIから自動化したい単純処理ではFFmpegが選ばれ、アプリ組み込みの双方向ストリーミングならGStreamerという棲み分けが現代でも有効です。両者は内部でlibavcodec経由のコーデックを共有することも多く、競合よりは補完関係に近い存在といえます。
まとめ
GStreamerは1999年に立ち上がったオープンソースのマルチメディアフレームワークで、elementsとpipelineというパイプライン記述モデルを核にデスクトップ・組み込み・車載・WebRTCまで幅広く採用されています。FFmpegが得意とするバッチ処理に対し、アプリ内蔵のメディアパスを柔軟に組む用途で第一に選ばれる存在として定着しています。
※本記事はIT用語辞典の手書きドラフトです。公開前に最新情報・出典を確認のうえ加筆修正してください。

コメント