そもそも Gstreamer って何?
公式: http://gstreamer.freedesktop.org/
GStreamer はオープンソースのマルチメディアアプリケーション開発用フレームワークです。
例えば、動画のストリーミング配信、複数の動画の合成、音楽のカラオケ化など、さまざまなことができます。
どうせ Linux でしか動かないんでしょ?
そんなことありません。現在、GStreaemer が動作するのは Linux, Android, Windows, Mac OS X, iOS... などです。
ご存じかもしれませんが、Raspberry Pi, Armadillo-800 などの、Linux が乗った組み込みボードでも動きます。
また、プラットフォームに依存する部分がキレイに切り分けられているため、最初は PC で開発してARMボードやAndroidアプリへポーティングするといった手法も取ることができます。
GStreamer が提供してくれるもの
GStreamer が提供くれる範囲は青い部分です。
- an API for multimedia applications
- a plugin architecture
- a pipeline architecture
- a mechanism for media type handling/negotiation
- a mechanism for synchronization
- over 250 plug-ins providing more than 1000 elements
- a set of tools
ここで注目ほしいのは、GStreamer が Pipeline architecture を提供するということ、1000 以上のエレメントが用意されているということです。
なので、アプリ開発者はこの Pipeline architecture に従い、Element を組み合わせ、Pipeline を作ればコアな部分を完成させることができます。
用意されているエレメントはOverview of available plug-insから見れるので欲しい機能があるかを眺めてみてください。
もちろん、Element 自体を開発するためのマニュアル Plugin Writer's Guide というのも用意されています。
強力なツール
GStreamer はライブラリですが、gst-launch
やgst-inspect
というツールが用意されているため、簡単なマルチメディアアプリであればゼロコーディング(?)で作成することができます。
例えば、音楽ファイルを再生するだけならばこれでOKです。
$ gst-launch-1.0 filesrc location=music.mp3 ! decodebin ! audioconvert ! autoaudiosink
gst-launch-1.0
がツール。filesrc
, decodebin
, audioconvert
, autoaudiosink
が Plugin に含まれる Element と Bin で、location=
は filesrc
のプロパティです。
シェルで |
を使ってコマンドの処理結果を渡していくように、 GStreamer では Element の処理結果を !
で次の Element に渡していきます。
ちなみに、Bin は複数の Element がまとまったもののことを指します。
詳しくはこちら: http://gstreamer.freedesktop.org/data/doc/gstreamer/head/manual/html/section-intro-basics-bins.html
gst-launch に与える Element や Bin を探すには、Overview of available plug-insを参照する以外に、gst-inspect
というものがあります。
filesrc に location
以外にどんなプロパティがあるのかなどを調べることができます。
$ gst-inspect-1.0 filesrc
はじめるには?
GStreamer のインストールは簡単です。Windows であればインストーラーが用意されていますし、OS Xであれば brew
でインストールできますし、Linux であれば各パッケージマネージャ(aptやyum,pacmanなど)からインストールすることができます。詳しくは Installing GStreamer
を参照してください。
Installing GStreamer | GStreamer documentation
https://gstreamer.freedesktop.org/documentation/installing/index.html
GStreamer のインストールが終わったらまずは、GStreamer Application Development Manual を読んでみるといいでしょう。
中でも、Part 1. About GStreamer は大切です。あなたがgst-launch
しか使わなくとも読んでおくべきです。
Applicaiton Development Manual が少々退屈になってきたら、チュートリアルを使って GStreamer を体で覚えましょう。
Basic tutorials を通して行うことで C言語 で GStreamer アプリケーションが書けるようになります。
まとめ
この記事で紹介したかったことは3つ
- GStreamer は複数のプラットフォームで動くマルチメディアフレームワーク
- ツールが充実しているのでプロトタイプ作りは超簡単
- ドキュメントも整備されているので勉強もしやすい (英語だけど)
以上、最後まで読んでくださりありがとうございました!